2929extern CRYS_RND_State_t * rndState_ptr ;
3030
3131psa_status_t psa_generate_ecc_ed25519_key_pair ( uint8_t * priv_key_buffer ,
32- uint8_t * pub_key_buffer ,
33- size_t * priv_key_buffer_length ,
34- size_t * pub_key_buffer_length )
32+ uint8_t * pub_key_buffer )
3533{
3634 CRYS_ECEDW_TempBuff_t tmp ;
3735 CRYSError_t ret ;
@@ -40,12 +38,11 @@ psa_status_t psa_generate_ecc_ed25519_key_pair( uint8_t *priv_key_buffer,
4038 uint8_t secret_key [CRYS_ECEDW_ORD_SIZE_IN_BYTES + CRYS_ECEDW_MOD_SIZE_IN_BYTES ] = { 0x0 };
4139 size_t secret_key_size = sizeof (secret_key );
4240
43- * priv_key_buffer_length = CRYS_ECEDW_ORD_SIZE_IN_BYTES ;
44- * pub_key_buffer_length = CRYS_ECEDW_MOD_SIZE_IN_BYTES ;
41+ size_t pub_key_size = 32 ;
4542
4643 cryptocell_310_enable ();
4744 ret = CRYS_ECEDW_KeyPair (secret_key , & secret_key_size ,
48- pub_key_buffer , pub_key_buffer_length ,
45+ pub_key_buffer , & pub_key_size ,
4946 rndState_ptr , CRYS_RND_GenerateVector , & tmp );
5047 cryptocell_310_disable ();
5148 if (ret != CRYS_OK ) {
@@ -60,9 +57,8 @@ psa_status_t psa_generate_ecc_ed25519_key_pair( uint8_t *priv_key_buffer,
6057 return CRYS_to_psa_error (ret );
6158}
6259
63- psa_status_t psa_derive_ecc_ed25519_public_key ( const uint8_t * priv_key_buffer , uint8_t * pub_key_buffer ,
64- size_t priv_key_buffer_length ,
65- size_t * pub_key_buffer_length )
60+ psa_status_t psa_derive_ecc_ed25519_public_key ( const uint8_t * priv_key_buffer ,
61+ uint8_t * pub_key_buffer )
6662{
6763 CRYS_ECEDW_TempBuff_t tmp ;
6864 CRYSError_t ret ;
@@ -76,14 +72,15 @@ psa_status_t psa_derive_ecc_ed25519_public_key( const uint8_t *priv_key_buffer,
7672 uint8_t secret_key [CRYS_ECEDW_ORD_SIZE_IN_BYTES + CRYS_ECEDW_MOD_SIZE_IN_BYTES ] = { 0x0 };
7773 size_t secret_key_size = sizeof (secret_key );
7874
79- * pub_key_buffer_length = CRYS_ECEDW_MOD_SIZE_IN_BYTES ;
75+ size_t pub_key_size = 32 ;
8076
8177 cryptocell_310_enable ();
82- ret = CRYS_ECEDW_SeedKeyPair (priv_key_buffer , priv_key_buffer_length , secret_key , & secret_key_size ,
83- pub_key_buffer , pub_key_buffer_length , & tmp );
78+ ret = CRYS_ECEDW_SeedKeyPair (priv_key_buffer , 32 , secret_key , & secret_key_size ,
79+ pub_key_buffer , & pub_key_size , & tmp );
8480 cryptocell_310_disable ();
8581 if (ret != CRYS_OK ) {
86- DEBUG ("CRYS_ECEDW_SeedKeyPair failed with %s\n" , cryptocell310_status_to_humanly_readable (ret ));
82+ DEBUG ("CRYS_ECEDW_SeedKeyPair failed with %s\n" ,
83+ cryptocell310_status_to_humanly_readable (ret ));
8784 goto done ;
8885 }
8986
@@ -93,14 +90,9 @@ psa_status_t psa_derive_ecc_ed25519_public_key( const uint8_t *priv_key_buffer,
9390}
9491
9592psa_status_t psa_ecc_ed25519_sign_message (const uint8_t * priv_key_buffer ,
96- size_t priv_key_buffer_size ,
9793 const uint8_t * pub_key_buffer ,
98- size_t pub_key_buffer_size ,
99- const uint8_t * input ,
100- size_t input_length ,
101- uint8_t * signature ,
102- size_t signature_size ,
103- size_t * signature_length )
94+ const uint8_t * input , size_t input_length ,
95+ uint8_t * signature )
10496{
10597 CRYS_ECEDW_TempBuff_t tmp ;
10698 CRYSError_t ret ;
@@ -119,16 +111,14 @@ psa_status_t psa_ecc_ed25519_sign_message(const uint8_t *priv_key_buffer,
119111 /* contains seed (private key), concatenated with public key */
120112 uint8_t secret_key [CRYS_ECEDW_ORD_SIZE_IN_BYTES + CRYS_ECEDW_MOD_SIZE_IN_BYTES ] = { 0x0 };
121113
122- if (priv_key_buffer_size != CRYS_ECEDW_ORD_SIZE_IN_BYTES || pub_key_buffer_size != CRYS_ECEDW_MOD_SIZE_IN_BYTES ) {
123- return PSA_ERROR_INVALID_ARGUMENT ;
124- }
125-
126- memcpy (secret_key , priv_key_buffer , CRYS_ECEDW_ORD_SIZE_IN_BYTES );
114+ memcpy (& secret_key [0 ], priv_key_buffer , CRYS_ECEDW_ORD_SIZE_IN_BYTES );
127115 memcpy (& secret_key [CRYS_ECEDW_ORD_SIZE_IN_BYTES ], pub_key_buffer , CRYS_ECEDW_MOD_SIZE_IN_BYTES );
128- * signature_length = signature_size ;
116+
117+ size_t signature_size = 64 ;
129118
130119 cryptocell_310_enable ();
131- ret = CRYS_ECEDW_Sign (signature , signature_length , input , input_length , secret_key , sizeof (secret_key ), & tmp );
120+ ret = CRYS_ECEDW_Sign (signature , & signature_size , input , input_length ,
121+ secret_key , sizeof (secret_key ), & tmp );
132122 cryptocell_310_disable ();
133123 if (ret != CRYS_OK ) {
134124 DEBUG ("CRYS_ECEDW_Sign failed with %s\n" , cryptocell310_status_to_humanly_readable (ret ));
@@ -138,21 +128,16 @@ psa_status_t psa_ecc_ed25519_sign_message(const uint8_t *priv_key_buffer,
138128done :
139129 explicit_bzero (& secret_key , sizeof (secret_key ));
140130 return CRYS_to_psa_error (ret );
141-
142- (void )signature_size ;
143131}
144132
145- psa_status_t psa_ecc_ed25519_verify_message (const uint8_t * key_buffer ,
146- size_t key_buffer_size ,
147- const uint8_t * input ,
148- size_t input_length ,
149- const uint8_t * signature ,
150- size_t signature_length )
133+ psa_status_t psa_ecc_ed25519_verify_message (const uint8_t * pub_key_buffer ,
134+ const uint8_t * input , size_t input_length ,
135+ const uint8_t * signature )
151136{
152137 CRYS_ECEDW_TempBuff_t tmp ;
153138 CRYSError_t ret ;
154139
155- if (!cryptocell_310_data_within_ram (key_buffer ) ||
140+ if (!cryptocell_310_data_within_ram (pub_key_buffer ) ||
156141 !cryptocell_310_data_within_ram (input ) ||
157142 !cryptocell_310_data_within_ram (signature )) {
158143 DEBUG ("%s : cryptocell_310 data required to be in RAM.\n" , __FILE__ );
@@ -164,7 +149,8 @@ psa_status_t psa_ecc_ed25519_verify_message(const uint8_t *key_buffer,
164149 }
165150
166151 cryptocell_310_enable ();
167- ret = CRYS_ECEDW_Verify (signature , signature_length , key_buffer , key_buffer_size , (uint8_t * )input , input_length , & tmp );
152+ ret = CRYS_ECEDW_Verify (signature , 64 , pub_key_buffer , 32 ,
153+ (uint8_t * )input , input_length , & tmp );
168154 cryptocell_310_disable ();
169155 if (ret != CRYS_OK ) {
170156 DEBUG ("CRYS_ECEDW_Verify failed with %s\n" , cryptocell310_status_to_humanly_readable (ret ));
0 commit comments