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,11 +72,11 @@ 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 ) {
8682 DEBUG ("CRYS_ECEDW_SeedKeyPair failed with %s\n" , cryptocell310_status_to_humanly_readable (ret ));
@@ -93,14 +89,9 @@ psa_status_t psa_derive_ecc_ed25519_public_key( const uint8_t *priv_key_buffer,
9389}
9490
9591psa_status_t psa_ecc_ed25519_sign_message (const uint8_t * priv_key_buffer ,
96- size_t priv_key_buffer_size ,
9792 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 )
93+ const uint8_t * input , size_t input_length ,
94+ uint8_t * signature )
10495{
10596 CRYS_ECEDW_TempBuff_t tmp ;
10697 CRYSError_t ret ;
@@ -119,16 +110,13 @@ psa_status_t psa_ecc_ed25519_sign_message(const uint8_t *priv_key_buffer,
119110 /* contains seed (private key), concatenated with public key */
120111 uint8_t secret_key [CRYS_ECEDW_ORD_SIZE_IN_BYTES + CRYS_ECEDW_MOD_SIZE_IN_BYTES ] = { 0x0 };
121112
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 );
113+ memcpy (& secret_key [0 ], priv_key_buffer , CRYS_ECEDW_ORD_SIZE_IN_BYTES );
127114 memcpy (& secret_key [CRYS_ECEDW_ORD_SIZE_IN_BYTES ], pub_key_buffer , CRYS_ECEDW_MOD_SIZE_IN_BYTES );
128- * signature_length = signature_size ;
115+
116+ size_t signature_size = 64 ;
129117
130118 cryptocell_310_enable ();
131- ret = CRYS_ECEDW_Sign (signature , signature_length , input , input_length , secret_key , sizeof (secret_key ), & tmp );
119+ ret = CRYS_ECEDW_Sign (signature , & signature_size , input , input_length , secret_key , sizeof (secret_key ), & tmp );
132120 cryptocell_310_disable ();
133121 if (ret != CRYS_OK ) {
134122 DEBUG ("CRYS_ECEDW_Sign failed with %s\n" , cryptocell310_status_to_humanly_readable (ret ));
@@ -138,21 +126,16 @@ psa_status_t psa_ecc_ed25519_sign_message(const uint8_t *priv_key_buffer,
138126done :
139127 explicit_bzero (& secret_key , sizeof (secret_key ));
140128 return CRYS_to_psa_error (ret );
141-
142- (void )signature_size ;
143129}
144130
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 )
131+ psa_status_t psa_ecc_ed25519_verify_message (const uint8_t * pub_key_buffer ,
132+ const uint8_t * input , size_t input_length ,
133+ const uint8_t * signature )
151134{
152135 CRYS_ECEDW_TempBuff_t tmp ;
153136 CRYSError_t ret ;
154137
155- if (!cryptocell_310_data_within_ram (key_buffer ) ||
138+ if (!cryptocell_310_data_within_ram (pub_key_buffer ) ||
156139 !cryptocell_310_data_within_ram (input ) ||
157140 !cryptocell_310_data_within_ram (signature )) {
158141 DEBUG ("%s : cryptocell_310 data required to be in RAM.\n" , __FILE__ );
@@ -164,7 +147,7 @@ psa_status_t psa_ecc_ed25519_verify_message(const uint8_t *key_buffer,
164147 }
165148
166149 cryptocell_310_enable ();
167- ret = CRYS_ECEDW_Verify (signature , signature_length , key_buffer , key_buffer_size , (uint8_t * )input , input_length , & tmp );
150+ ret = CRYS_ECEDW_Verify (signature , 64 , pub_key_buffer , 32 , (uint8_t * )input , input_length , & tmp );
168151 cryptocell_310_disable ();
169152 if (ret != CRYS_OK ) {
170153 DEBUG ("CRYS_ECEDW_Verify failed with %s\n" , cryptocell310_status_to_humanly_readable (ret ));
0 commit comments