Microchip® Advanced Software Framework

winc3400/wifi_drv/driver/include/ecc_types.h File Reference

Elliptic Curve Cryptography Module Interface.

The file defines the APIs and data types that abstract the ECC operations required for TLS library.

Copyright (C) 2017-2019 Atmel Corporation. All rights reserved.

#include "driver/include/m2m_types.h"

Data Structures

struct  EcDomainParam
 
struct  EcPoint
 
struct  tstrEccReqInfo
 
struct  tstrEcdhReqInfo
 
struct  tstrEcdsaSignReqInfo
 
struct  tstrEcdsaVerifyReqInfo
 
struct  tstrEllipticCurve
 Definition of an elliptic curve. More...
 

Macros

#define ECC_LARGEST_CURVE_SIZE   (32)
 
#define ECC_NUM_SUPP_CURVES   ((sizeof(gastrECCSuppList)) / (sizeof(tstrEllipticCurve)))
 
#define ECC_POINT_MAX_SIZE   ECC_LARGEST_CURVE_SIZE
 
#define ECC_POINT_MAX_SIZE_WORDS   (ECC_POINT_MAX_SIZE / 4)
 

Typedefs

typedef enum EcNamedCurve tenuEcNamedCurve
 
typedef struct EcDomainParam tstrECDomainParam
 
typedef struct EcPoint tstrECPoint
 

Enumerations

enum  EcNamedCurve {
  EC_SECP192R1 = 19,
  EC_SECP256R1 = 23,
  EC_SECP384R1 = 24,
  EC_SECP521R1 = 25,
  EC_UNKNOWN = 255,
  EC_SECP192R1 = 19,
  EC_SECP256R1 = 23,
  EC_SECP384R1 = 24,
  EC_SECP521R1 = 25,
  EC_UNKNOWN = 255
}
 
enum  tenuEccREQ {
  ECC_REQ_NONE,
  ECC_REQ_CLIENT_ECDH,
  ECC_REQ_SERVER_ECDH,
  ECC_REQ_GEN_KEY,
  ECC_REQ_SIGN_GEN,
  ECC_REQ_SIGN_VERIFY,
  ECC_REQ_NONE,
  ECC_REQ_CLIENT_ECDH,
  ECC_REQ_SERVER_ECDH,
  ECC_REQ_GEN_KEY,
  ECC_REQ_SIGN_GEN,
  ECC_REQ_SIGN_VERIFY
}
 

Variables

static tstrEllipticCurve gastrECCSuppList []
 

#define ECC_LARGEST_CURVE_SIZE   (32)

The size of the the largest supported EC. For now, assuming the 256-bit EC is the largest supported curve type.

#define ECC_NUM_SUPP_CURVES   ((sizeof(gastrECCSuppList)) / (sizeof(tstrEllipticCurve)))
#define ECC_POINT_MAX_SIZE   ECC_LARGEST_CURVE_SIZE

Maximum size of one coordinate of an EC point.

#define ECC_POINT_MAX_SIZE_WORDS   (ECC_POINT_MAX_SIZE / 4)

SIZE in 32-bit words.

typedef struct EcPoint tstrECPoint

Enumerator
EC_SECP192R1 

It is defined by NIST as P192 and by the SEC Group as secp192r1.

EC_SECP256R1 

It is defined by NIST as P256 and by the SEC Group as secp256r1.

EC_SECP384R1 

It is defined by NIST as P384 and by the SEC Group as secp384r1.

EC_SECP521R1 

It is defined by NIST as P521 and by the SEC Group as secp521r1.

EC_UNKNOWN 
EC_SECP192R1 

It is defined by NIST as P192 and by the SEC Group as secp192r1.

EC_SECP256R1 

It is defined by NIST as P256 and by the SEC Group as secp256r1.

EC_SECP384R1 

It is defined by NIST as P384 and by the SEC Group as secp384r1.

EC_SECP521R1 

It is defined by NIST as P521 and by the SEC Group as secp521r1.

EC_UNKNOWN 
enum tenuEccREQ
Enumerator
ECC_REQ_NONE 
ECC_REQ_CLIENT_ECDH 
ECC_REQ_SERVER_ECDH 
ECC_REQ_GEN_KEY 
ECC_REQ_SIGN_GEN 
ECC_REQ_SIGN_VERIFY 
ECC_REQ_NONE 
ECC_REQ_CLIENT_ECDH 
ECC_REQ_SERVER_ECDH 
ECC_REQ_GEN_KEY 
ECC_REQ_SIGN_GEN 
ECC_REQ_SIGN_VERIFY 

tstrEllipticCurve gastrECCSuppList[]
static
Initial value:
= {
{
{
{0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0xFFFFFFFF},
{0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0xFFFFFFFF},
{0x27D2604B, 0x3BCE3C3E, 0xCC53B0F6, 0x651D06B0, 0x769886BC, 0xB3EBBD55, 0xAA3A93E7, 0x5AC635D8},
{
{
0x6B, 0x17, 0xD1, 0xF2, 0xE1, 0x2C, 0x42, 0x47, 0xF8, 0xBC, 0xE6, 0xE5, 0x63, 0xA4, 0x40, 0xF2,
0x77, 0x03, 0x7D, 0x81, 0x2D, 0xEB, 0x33, 0xA0, 0xF4, 0xA1, 0x39, 0x45, 0xD8, 0x98, 0xC2, 0x96
},
{
0x4F, 0xE3, 0x42, 0xE2, 0xFE, 0x1A, 0x7F, 0x9B, 0x8E, 0xE7, 0xEB, 0x4A, 0x7C, 0x0F, 0x9E, 0x16,
0x2B, 0xCE, 0x33, 0x57, 0x6B, 0x31, 0x5E, 0xCE, 0xCB, 0xB6, 0x40, 0x68, 0x37, 0xBF, 0x51, 0xF5
},
32
}
}
}
}
Definition: winc3400/wifi_drv/driver/include/ecc_types.h:109

List of supported Elliptic Curves ordered by security level (most secure curve is at index ZERO).