Modules | |
CryptoCell SRP specific errors | |
Data Structures | |
struct | CRYS_SRP_GroupParam_t |
struct | CRYS_SRP_Context_t |
Typedefs | |
typedef uint8_t | CRYS_SRP_Modulus_t[(3072/8)] |
typedef uint8_t | CRYS_SRP_Digest_t[(16 *(sizeof(uint32_t)))] |
typedef uint8_t | CRYS_SRP_Secret_t[2 *(16 *(sizeof(uint32_t)))] |
typedef struct CRYS_SRP_GroupParam_t | CRYS_SRP_GroupParam_t |
typedef struct CRYS_SRP_Context_t | CRYS_SRP_Context_t |
Enumerations |
Functions | |
CRYSError_t | CRYS_SRP_Init (CRYS_SRP_Entity_t srpType, CRYS_SRP_Version_t srpVer, CRYS_SRP_Modulus_t srpModulus, uint8_t srpGen, size_t modSizeInBits, CRYS_HASH_OperationMode_t hashMode, uint8_t *pUserName, size_t userNameSize, uint8_t *pPwd, size_t pwdSize, void *pRndState, SaSiRndGenerateVectWorkFunc_t rndGenerateVectFunc, CRYS_SRP_Context_t *pCtx) |
This function initiates the SRP context. More... | |
CRYSError_t | CRYS_SRP_PwdVerCreate (size_t saltSize, uint8_t *pSalt, CRYS_SRP_Modulus_t pwdVerifier, CRYS_SRP_Context_t *pCtx) |
This function calculates pSalt & password verifier. More... | |
CRYSError_t | CRYS_SRP_Clear (CRYS_SRP_Context_t *pCtx) |
Clears the SRP context. More... | |
CRYSError_t | CRYS_SRP_HostPubKeyCreate (size_t ephemPrivSize, CRYS_SRP_Modulus_t pwdVerifier, CRYS_SRP_Modulus_t hostPubKeyB, CRYS_SRP_Context_t *pCtx) |
This function generates host public & private ephemeral key, known as B & b in RFC. More... | |
CRYSError_t | CRYS_SRP_HostProofVerifyAndCalc (size_t saltSize, uint8_t *pSalt, CRYS_SRP_Modulus_t pwdVerifier, CRYS_SRP_Modulus_t userPubKeyA, CRYS_SRP_Modulus_t hostPubKeyB, CRYS_SRP_Digest_t userProof, CRYS_SRP_Digest_t hostProof, CRYS_SRP_Secret_t sharedSecret, CRYS_SRP_Context_t *pCtx) |
Verifies the user Proof and calculates the Host message proof. More... | |
CRYSError_t | CRYS_SRP_UserPubKeyCreate (size_t ephemPrivSize, CRYS_SRP_Modulus_t userPubKeyA, CRYS_SRP_Context_t *pCtx) |
This function generates user public & private ephemeral key, known as A & a in RFC. More... | |
CRYSError_t | CRYS_SRP_UserProofCalc (size_t saltSize, uint8_t *pSalt, CRYS_SRP_Modulus_t userPubKeyA, CRYS_SRP_Modulus_t hostPubKeyB, CRYS_SRP_Digest_t userProof, CRYS_SRP_Secret_t sharedSecret, CRYS_SRP_Context_t *pCtx) |
This function calculates the user proof. More... | |
CRYSError_t | CRYS_SRP_UserProofVerify (CRYS_SRP_Secret_t sharedSecret, CRYS_SRP_Modulus_t userPubKeyA, CRYS_SRP_Digest_t userProof, CRYS_SRP_Digest_t hostProof, CRYS_SRP_Context_t *pCtx) |
This function verifies the host proof. More... | |
#define CRYS_SRP_HK_INIT | ( | srpType, | |
srpModulus, | |||
srpGen, | |||
modSizeInBits, | |||
pUserName, | |||
userNameSize, | |||
pPwd, | |||
pwdSize, | |||
pRndState, | |||
rndGenerateVectFunc, | |||
pCtx | |||
) | CRYS_SRP_Init(srpType, CRYS_SRP_VER_HK, srpModulus, srpGen, modSizeInBits, CRYS_HASH_SHA512_mode, pUserName, userNameSize, pPwd, pwdSize, pRndState, rndGenerateVectFunc, pCtx) |
MACRO definition for a specific SRP initialization function.
Definition at line 239 of file crys_srp.h.
#define CRYS_SRP_MAX_DIGEST (CRYS_SRP_MAX_DIGEST_IN_WORDS*SASI_32BIT_WORD_SIZE) |
Maximal SRP HASH digest size in bytes.
Definition at line 117 of file crys_srp.h.
#define CRYS_SRP_MAX_DIGEST_IN_WORDS CRYS_HASH_RESULT_SIZE_IN_WORDS |
Maximal SRP HASH digest size in words.
Definition at line 115 of file crys_srp.h.
#define CRYS_SRP_MAX_MODULUS (CRYS_SRP_MAX_MODULUS_IN_BITS/SASI_BITS_IN_BYTE) |
Maximal modulus size in bytes.
Definition at line 96 of file crys_srp.h.
#define CRYS_SRP_MAX_MODULUS_IN_BITS CRYS_SRP_MODULUS_SIZE_3072_BITS |
Maximal modulus size in bits.
Definition at line 94 of file crys_srp.h.
#define CRYS_SRP_MAX_MODULUS_IN_WORDS (CRYS_SRP_MAX_MODULUS_IN_BITS/SASI_BITS_IN_32BIT_WORD) |
Maximal modulus size in words.
Definition at line 98 of file crys_srp.h.
#define CRYS_SRP_MAX_SALT_SIZE (64) |
Maximal salt size in bytes.
Definition at line 124 of file crys_srp.h.
#define CRYS_SRP_MAX_SALT_SIZE_IN_WORDS (CRYS_SRP_MAX_SALT_SIZE/SASI_32BIT_WORD_SIZE) |
Maximal salt size in words.
Definition at line 126 of file crys_srp.h.
#define CRYS_SRP_MIN_SALT_SIZE (8) |
Minimal salt size in bytes.
Definition at line 120 of file crys_srp.h.
#define CRYS_SRP_MIN_SALT_SIZE_IN_WORDS (CRYS_SRP_MIN_SALT_SIZE/SASI_32BIT_WORD_SIZE) |
Minimal salt size in words.
Definition at line 122 of file crys_srp.h.
#define CRYS_SRP_MODULUS_SIZE_1024_BITS 1024 |
#define CRYS_SRP_MODULUS_SIZE_1536_BITS 1536 |
1536 bits modulus size.
Definition at line 87 of file crys_srp.h.
#define CRYS_SRP_MODULUS_SIZE_2048_BITS 2048 |
2048 bits modulus size.
Definition at line 89 of file crys_srp.h.
#define CRYS_SRP_MODULUS_SIZE_3072_BITS 3072 |
3072 bits modulus size.
Definition at line 91 of file crys_srp.h.
#define CRYS_SRP_PRIV_NUM_MAX_SIZE (CRYS_SRP_PRIV_NUM_MAX_SIZE_IN_BITS/SASI_BITS_IN_BYTE) |
Maximal private number size in bytes.
Definition at line 110 of file crys_srp.h.
#define CRYS_SRP_PRIV_NUM_MAX_SIZE_IN_BITS (CRYS_SRP_MAX_MODULUS_IN_BITS) |
Maximal private number size in bits.
Definition at line 108 of file crys_srp.h.
#define CRYS_SRP_PRIV_NUM_MAX_SIZE_IN_WORDS (CRYS_SRP_PRIV_NUM_MAX_SIZE_IN_BITS/SASI_BITS_IN_32BIT_WORD) |
Maximal private number size in words.
Definition at line 112 of file crys_srp.h.
#define CRYS_SRP_PRIV_NUM_MIN_SIZE (CRYS_SRP_PRIV_NUM_MIN_SIZE_IN_BITS/SASI_BITS_IN_BYTE) |
Minimal private number size in bytes.
Definition at line 104 of file crys_srp.h.
#define CRYS_SRP_PRIV_NUM_MIN_SIZE_IN_BITS (256) |
The SRP private number size range.
Minimal private number size in bits.
Definition at line 102 of file crys_srp.h.
#define CRYS_SRP_PRIV_NUM_MIN_SIZE_IN_WORDS (CRYS_SRP_PRIV_NUM_MIN_SIZE_IN_BITS/SASI_BITS_IN_32BIT_WORD) |
Minimal private number size in words.
Definition at line 106 of file crys_srp.h.
typedef struct CRYS_SRP_Context_t CRYS_SRP_Context_t |
The SRP context prototype
typedef uint8_t CRYS_SRP_Digest_t[( 16 *(sizeof(uint32_t)))] |
SRP digest buffer definition.
Definition at line 133 of file crys_srp.h.
typedef struct CRYS_SRP_GroupParam_t CRYS_SRP_GroupParam_t |
Group parameters for the SRP - defines the modulus and the generator used
typedef uint8_t CRYS_SRP_Modulus_t[( 3072 /8)] |
SRP modulus buffer definition.
Definition at line 130 of file crys_srp.h.
typedef uint8_t CRYS_SRP_Secret_t[2 *( 16 *(sizeof(uint32_t)))] |
SRP secret buffer definition.
Definition at line 136 of file crys_srp.h.
enum CRYS_SRP_Entity_t |
SRP entity type
Definition at line 158 of file crys_srp.h.
enum CRYS_SRP_Version_t |
SRP supported versions
Enumerator | |
---|---|
CRYS_SRP_VER_3 |
VER 3. |
CRYS_SRP_VER_6 |
VER 6. |
CRYS_SRP_VER_6A |
VER 6A. |
CRYS_SRP_VER_HK |
VER 6A. |
CRYS_SRP_NumOfVersions |
Maximal number of supported versions. |
CRYS_SRP_VersionLast |
Reserved. |
Definition at line 143 of file crys_srp.h.
CRYSError_t CRYS_SRP_Clear | ( | CRYS_SRP_Context_t * | pCtx | ) |
Clears the SRP context.
[in,out] | pCtx | A Pointer to the SRP context. |
CRYSError_t CRYS_SRP_HostProofVerifyAndCalc | ( | size_t | saltSize, |
uint8_t * | pSalt, | ||
CRYS_SRP_Modulus_t | pwdVerifier, | ||
CRYS_SRP_Modulus_t | userPubKeyA, | ||
CRYS_SRP_Modulus_t | hostPubKeyB, | ||
CRYS_SRP_Digest_t | userProof, | ||
CRYS_SRP_Digest_t | hostProof, | ||
CRYS_SRP_Secret_t | sharedSecret, | ||
CRYS_SRP_Context_t * | pCtx | ||
) |
Verifies the user Proof and calculates the Host message proof.
[in] | saltSize | The size of the random salt, The range is between CRYS_SRP_MIN_SALT_SIZE to CRYS_SRP_MAX_SALT_SIZE. |
[in] | pSalt | A Pointer to the pSalt number. |
[in] | pwdVerifier | A Pointer to the password verifier (v). |
[in] | userPubKeyA | A Pointer to the user ephemeral public key (A). |
[in] | hostPubKeyB | A Pointer to the host ephemeral public key (B). |
[in] | userProof | A Pointer to the SRP user proof buffer (M1). |
[out] | hostProof | A Pointer to the SRP host proof buffer (M2). |
[out] | sharedSecret | A Pointer to the SRP shared secret (K). |
[in] | pCtx | A Pointer to the SRP context. |
CRYSError_t CRYS_SRP_HostPubKeyCreate | ( | size_t | ephemPrivSize, |
CRYS_SRP_Modulus_t | pwdVerifier, | ||
CRYS_SRP_Modulus_t | hostPubKeyB, | ||
CRYS_SRP_Context_t * | pCtx | ||
) |
This function generates host public & private ephemeral key, known as B & b in RFC.
[in] | ephemPrivSize | The size of the generated ephemeral private key (b). The range is between CRYS_SRP_PRIV_NUM_MIN_SIZE to CRYS_SRP_PRIV_NUM_MAX_SIZE |
[in] | pwdVerifier | A Pointer to the verifier (v). |
[out] | hostPubKeyB | A Pointer to the host ephemeral public key (B). |
[in,out] | pCtx | A Pointer to the SRP context. |
CRYSError_t CRYS_SRP_Init | ( | CRYS_SRP_Entity_t | srpType, |
CRYS_SRP_Version_t | srpVer, | ||
CRYS_SRP_Modulus_t | srpModulus, | ||
uint8_t | srpGen, | ||
size_t | modSizeInBits, | ||
CRYS_HASH_OperationMode_t | hashMode, | ||
uint8_t * | pUserName, | ||
size_t | userNameSize, | ||
uint8_t * | pPwd, | ||
size_t | pwdSize, | ||
void * | pRndState, | ||
SaSiRndGenerateVectWorkFunc_t | rndGenerateVectFunc, | ||
CRYS_SRP_Context_t * | pCtx | ||
) |
This function initiates the SRP context.
[in] | srpType | SRP entity type. |
[in] | srpVer | SRP version. |
[in] | srpModulus | A pointer to the SRP modulus, BE byte buffer. |
[in] | srpGen | The SRP generator param. |
[in] | modSizeInBits | The SRP modulus size in bits:1024, 1536, 2048 & 3072 |
[in] | hashMode | Enumerator defining the HASH mode. |
[in] | pUserName | A Pointer to user name. |
[in] | userNameSize | The user name buffer size > 0. |
[in] | pPwd | A Pointer to user password. |
[in] | pwdSize | The user password buffer size > 0 if pPwd is valid. |
[in] | pRndState | A Pointer to RND context. |
[in] | rndGenerateVectFunc | Pointer to random vector generation function. |
[out] | pCtx | A Pointer to the SRP host context. |
CRYSError_t CRYS_SRP_PwdVerCreate | ( | size_t | saltSize, |
uint8_t * | pSalt, | ||
CRYS_SRP_Modulus_t | pwdVerifier, | ||
CRYS_SRP_Context_t * | pCtx | ||
) |
This function calculates pSalt & password verifier.
[in] | saltSize | The size of the random salt to generate, The range is between CRYS_SRP_MIN_SALT_SIZE to CRYS_SRP_MAX_SALT_SIZE. |
[out] | pSalt | A Pointer to the pSalt number (s). |
[out] | pwdVerifier | A Pointer to the password verifier (v). |
[out] | pCtx | A Pointer to the SRP context. |
CRYSError_t CRYS_SRP_UserProofCalc | ( | size_t | saltSize, |
uint8_t * | pSalt, | ||
CRYS_SRP_Modulus_t | userPubKeyA, | ||
CRYS_SRP_Modulus_t | hostPubKeyB, | ||
CRYS_SRP_Digest_t | userProof, | ||
CRYS_SRP_Secret_t | sharedSecret, | ||
CRYS_SRP_Context_t * | pCtx | ||
) |
This function calculates the user proof.
[in] | saltSize | The size of the random salt, The range is between CRYS_SRP_MIN_SALT_SIZE to CRYS_SRP_MAX_SALT_SIZE. |
[in] | pSalt | A Pointer to the pSalt number. |
[in] | userPubKeyA | A Pointer to the user public ephmeral key (A). |
[in] | hostPubKeyB | A Pointer to the host public ephmeral key (B). |
[out] | userProof | A Pointer to the SRP user proof buffer (M1). |
[out] | sharedSecret | A Pointer to the SRP shared secret (K). |
[out] | pCtx | A Pointer to the SRP context. |
CRYSError_t CRYS_SRP_UserProofVerify | ( | CRYS_SRP_Secret_t | sharedSecret, |
CRYS_SRP_Modulus_t | userPubKeyA, | ||
CRYS_SRP_Digest_t | userProof, | ||
CRYS_SRP_Digest_t | hostProof, | ||
CRYS_SRP_Context_t * | pCtx | ||
) |
This function verifies the host proof.
[in] | sharedSecret | A Pointer to the SRP shared secret (K). |
[in] | userPubKeyA | A Pointer to the user public ephmeral key (A). |
[in] | userProof | A Pointer to the SRP user proof buffer (M1). |
[in] | hostProof | A Pointer to the SRP host proof buffer (M2). |
[out] | pCtx | A Pointer to the SRP user context. |
CRYSError_t CRYS_SRP_UserPubKeyCreate | ( | size_t | ephemPrivSize, |
CRYS_SRP_Modulus_t | userPubKeyA, | ||
CRYS_SRP_Context_t * | pCtx | ||
) |
This function generates user public & private ephemeral key, known as A & a in RFC.
[in] | ephemPrivSize | The size of the generated ephemeral private key (a). The range is between CRYS_SRP_PRIV_NUM_MIN_SIZE to CRYS_SRP_PRIV_NUM_MAX_SIZE |
[out] | userPubKeyA | A Pointer to the user ephemeral public key (A). |
[in,out] | pCtx | A Pointer to the SRP context. |