This file contains the CRYS APIs used for EC EDW (Edwards) ed25519 algorithms.
More...
|
|
|
#define
|
CRYS_ECEDW_MOD_SIZE_IN_BITS
255U
|
|
|
|
#define
|
CRYS_ECEDW_ORD_SIZE_IN_BITS
255U
|
|
|
|
#define
|
CRYS_ECEDW_MOD_SIZE_IN_32BIT_WORDS
((
CRYS_ECEDW_MOD_SIZE_IN_BITS
+ SASI_BITS_IN_32BIT_WORD - 1) / SASI_BITS_IN_32BIT_WORD)
|
|
|
|
#define
|
CRYS_ECEDW_MOD_SIZE_IN_BYTES
(CRYS_ECEDW_MOD_SIZE_IN_32BIT_WORDS * SASI_32BIT_WORD_SIZE)
|
|
|
|
#define
|
CRYS_ECEDW_ORD_SIZE_IN_32BIT_WORDS
((CRYS_ECEDW_ORD_SIZE_IN_BITS + SASI_BITS_IN_32BIT_WORD - 1) / SASI_BITS_IN_32BIT_WORD)
|
|
|
|
#define
|
CRYS_ECEDW_ORD_SIZE_IN_BYTES
(CRYS_ECEDW_ORD_SIZE_IN_32BIT_WORDS * SASI_32BIT_WORD_SIZE)
|
|
|
|
#define
|
CRYS_ECEDW_SEED_BYTES
CRYS_ECEDW_MOD_SIZE_IN_BYTES
|
|
|
|
#define
|
CRYS_ECEDW_SECRET_KEY_BYTES
(2 * CRYS_ECEDW_MOD_SIZE_IN_BYTES)
|
|
|
|
#define
|
CRYS_ECEDW_SIGNATURE_BYTES
(2 * CRYS_ECEDW_ORD_SIZE_IN_BYTES)
|
|
|
|
#define
|
CRYS_ECEDW_SCALAR_BYTES
CRYS_ECEDW_ORD_SIZE_IN_BYTES
|
|
|
|
#define
|
CRYS_ECEDW_SCALARMULT_BYTES
CRYS_ECEDW_MOD_SIZE_IN_BYTES
|
|
|
|
#define
|
CRYS_ECEDW_TEMP_BUFF_SIZE_IN_32BIT_WORD
|
|
|
|
|
|
CRYSError_t
|
CRYS_ECEDW_Sign
(uint8_t *pSign, size_t *pSignSize, const uint8_t *pMsg, size_t msgSize, const uint8_t *pSignSecrKey, size_t secrKeySize,
CRYS_ECEDW_TempBuff_t
*pTempBuff)
|
|
|
The function creates EC Edwards signature on the message.
More...
|
|
|
|
CRYSError_t
|
CRYS_ECEDW_Verify
(const uint8_t *pSign, size_t signSize, const uint8_t *pSignPublKey, size_t publKeySize, uint8_t *pMsg, size_t msgSize,
CRYS_ECEDW_TempBuff_t
*pTempBuff)
|
|
|
The function verifies the EC Edwards ed25519 signature on the message.
More...
|
|
|
|
CRYSError_t
|
CRYS_ECEDW_SeedKeyPair
(const uint8_t *pSeed, size_t seedSize, uint8_t *pSecrKey, size_t *pSecrKeySize, uint8_t *pPublKey, size_t *pPublKeySize,
CRYS_ECEDW_TempBuff_t
*pTempBuff)
|
|
|
The function randomly generates Ec ed25519 private and public keys using given seed. The generation is performed using EC Edwards ed25519 algorithm.
More...
|
|
|
|
CRYSError_t
|
CRYS_ECEDW_KeyPair
(uint8_t *pSecrKey, size_t *pSecrKeySize, uint8_t *pPublKey, size_t *pPublKeySize,
CRYS_RND_Context_t
*pRndContext,
CRYS_ECEDW_TempBuff_t
*pTempBuff)
|
|
|
The function randomly generates the EC Edwards ed25519 private and public keys. The generation is performed using EC Edwards ed25519 algorithm.
More...
|
|
|
This file contains the CRYS APIs used for EC EDW (Edwards) ed25519 algorithms.
-
Note
-
Algorithms of Montgomery and Edwards elliptic curves cryptography were developed by Daniel.J.Bernstein.
|
#define CRYS_ECEDW_MOD_SIZE_IN_BITS 255U
|
EC Edwards ed25519 modulus and order sizes in bits, words and bytes
|
#define CRYS_ECEDW_SEED_BYTES CRYS_ECEDW_MOD_SIZE_IN_BYTES
|
Constant sizes of special EC_MONT buffers and arrays
|
#define CRYS_ECEDW_TEMP_BUFF_SIZE_IN_32BIT_WORD
|
Value:
(10*CRYS_EC_MONT_EDW_MODULUS_MAX_SIZE_IN_WORDS + \
EC_EDW temp buffer size definition
The function randomly generates the EC Edwards ed25519 private and public keys. The generation is performed using EC Edwards ed25519 algorithm.
-
Returns
-
CRYS_OK on success,
-
A non-zero value on failure as defined crys_ec_mont_edw_error.h.
-
Parameters
-
|
[out]
|
pSecrKey
|
Pointer to the secret key (including seed and public key).
|
|
[in,out]
|
pSecrKeySize
|
Pointer to the size of the secret key in bytes, (must be at least 2*EC order size).
|
|
[out]
|
pPublKey
|
Pointer to the public key.
|
|
[in,out]
|
pPublKeySize
|
- Pointer to the size of the public key in bytes. In - the size of buffer must be at least EC modulus size; Out - the actual size.
|
|
[in,out]
|
pRndContext
|
Pointer to the RND context buffer.
|
|
[in]
|
pTempBuff
|
Pointer to the temp buffer.
|
|
CRYSError_t
CRYS_ECEDW_SeedKeyPair
|
(
|
const uint8_t *
|
pSeed
,
|
|
|
|
size_t
|
seedSize
,
|
|
|
|
uint8_t *
|
pSecrKey
,
|
|
|
|
size_t *
|
pSecrKeySize
,
|
|
|
|
uint8_t *
|
pPublKey
,
|
|
|
|
size_t *
|
pPublKeySize
,
|
|
|
|
CRYS_ECEDW_TempBuff_t
*
|
pTempBuff
|
|
|
)
|
|
|
The function randomly generates Ec ed25519 private and public keys using given seed. The generation is performed using EC Edwards ed25519 algorithm.
-
Returns
-
CRYS_OK on success,
-
A non-zero value on failure as defined crys_ec_mont_edw_error.h.
-
Parameters
-
|
[in]
|
pSeed
|
Pointer to the given seed.
|
|
[in]
|
seedSize
|
Size of the seed in bytes, must be equal the EC order size in bytes.
|
|
[out]
|
pSecrKey
|
Pointer to the secret key, including the seed, concatenated with the public key.
|
|
[in,out]
|
pSecrKeySize
|
Pointer to the size of the secret key buffer in bytes (must be at least 2*EC order size).
|
|
[out]
|
pPublKey
|
Pointer to the public key.
|
|
[in,out]
|
pPublKeySize
|
Pointer to the size of the public key in bytes. In - the size of buffer must be at least EC modulus size; Out - the actual size.
|
|
[in]
|
pTempBuff
|
Pointer to the temp buffer, for internal use.
|
|
CRYSError_t
CRYS_ECEDW_Sign
|
(
|
uint8_t *
|
pSign
,
|
|
|
|
size_t *
|
pSignSize
,
|
|
|
|
const uint8_t *
|
pMsg
,
|
|
|
|
size_t
|
msgSize
,
|
|
|
|
const uint8_t *
|
pSignSecrKey
,
|
|
|
|
size_t
|
secrKeySize
,
|
|
|
|
CRYS_ECEDW_TempBuff_t
*
|
pTempBuff
|
|
|
)
|
|
|
The function creates EC Edwards signature on the message.
-
Note
-
Used detached form of signature, separated from the message. Implemented algorithm of Bernstein D. etc. sign ed25519.
-
Returns
-
CRYS_OK on success,
-
A non-zero value on failure as defined crys_ec_mont_edw_error.h.
-
Parameters
-
|
[out]
|
pSign
|
Pointer to the detached signature.
|
|
[in,out]
|
pSignSize
|
Pointer to the total size of the signature ; In - the buffer size, which (must be at least 2*EC order size); Out - the actual size of output data.
|
|
[in]
|
pMsg
|
Pointer to the message.
|
|
[in]
|
msgSize
|
Message size in bytes: must be less, than (CRYS_HASH_UPDATE_DATA_MAX_SIZE_IN_BYTES - 2*(EC_EDW modulus size)).
|
|
[in]
|
pSignSecrKey
|
Pointer to the signer secret key (seed || pulKey)
|
|
[in]
|
secrKeySize
|
Size of signer secret key in bytes: (must be 2*EC order size).
|
|
[in]
|
pTempBuff
|
Pointer to the temp buffer.
|
|
CRYSError_t
CRYS_ECEDW_Verify
|
(
|
const uint8_t *
|
pSign
,
|
|
|
|
size_t
|
signSize
,
|
|
|
|
const uint8_t *
|
pSignPublKey
,
|
|
|
|
size_t
|
publKeySize
,
|
|
|
|
uint8_t *
|
pMsg
,
|
|
|
|
size_t
|
msgSize
,
|
|
|
|
CRYS_ECEDW_TempBuff_t
*
|
pTempBuff
|
|
|
)
|
|
|
The function verifies the EC Edwards ed25519 signature on the message.
-
Note
-
The input signature is in detached form, i.e. separated from the message.
-
Returns
-
CRYS_OK on success,
-
A non-zero value on failure as defined crys_ec_mont_edw_error.h.
-
Parameters
-
|
[in]
|
pSign
|
Pointer to detached signature, i.e. the signature is separated from the message.
|
|
[in]
|
signSize
|
Size of the signature in bytes, it must be equal to two EC Order size in bytes.
|
|
[in]
|
pSignPublKey
|
Pointer to signer public key.
|
|
[in]
|
publKeySize
|
Size of the signer public key in bytes; must be equal to EC modulus size.
|
|
[in]
|
pMsg
|
Pointer to the message.
|
|
[in]
|
msgSize
|
Pointer to the message size in bytes. Must be less than (CRYS_HASH_UPDATE_DATA_MAX_SIZE_IN_BYTES - 2*(EC_EDW modulus size)).
|
|
[in]
|
pTempBuff
|
Pointer to the temp buffer, for internal use.
|