@@ -210,67 +210,12 @@ static keystore_error_t _get_and_decrypt_seed(
210210 return KEYSTORE_OK ;
211211}
212212
213- static bool _verify_seed (
214- const char * password ,
215- const uint8_t * expected_seed ,
216- size_t expected_seed_len )
217- {
218- uint8_t decrypted_seed [KEYSTORE_MAX_SEED_LENGTH ] = {0 };
219- size_t seed_len ;
220- UTIL_CLEANUP_32 (decrypted_seed );
221- if (_get_and_decrypt_seed (password , decrypted_seed , & seed_len , NULL ) != KEYSTORE_OK ) {
222- return false;
223- }
224- if (expected_seed_len != seed_len ) {
225- return false;
226- }
227- if (!MEMEQ (expected_seed , decrypted_seed , seed_len )) {
228- return false;
229- }
230- return true;
231- }
232-
233213keystore_error_t keystore_encrypt_and_store_seed (
234214 const uint8_t * seed ,
235215 size_t seed_length ,
236216 const char * password )
237217{
238- if (memory_is_initialized ()) {
239- return KEYSTORE_ERR_MEMORY ;
240- }
241- keystore_lock ();
242- if (!_validate_seed_length (seed_length )) {
243- return KEYSTORE_ERR_SEED_SIZE ;
244- }
245- if (securechip_init_new_password (password )) {
246- return KEYSTORE_ERR_SECURECHIP ;
247- }
248- uint8_t secret [32 ] = {0 };
249- UTIL_CLEANUP_32 (secret );
250- if (securechip_stretch_password (password , secret )) {
251- return KEYSTORE_ERR_SECURECHIP ;
252- }
253-
254- size_t encrypted_seed_len = seed_length + 64 ;
255- uint8_t encrypted_seed [encrypted_seed_len ];
256- UTIL_CLEANUP_32 (encrypted_seed );
257- if (!cipher_aes_hmac_encrypt (seed , seed_length , encrypted_seed , & encrypted_seed_len , secret )) {
258- return KEYSTORE_ERR_ENCRYPT ;
259- }
260- if (encrypted_seed_len > 255 ) { // sanity check, can't happen
261- Abort ("keystore_encrypt_and_store_seed" );
262- }
263- uint8_t encrypted_seed_len_u8 = (uint8_t )encrypted_seed_len ;
264- if (!memory_set_encrypted_seed_and_hmac (encrypted_seed , encrypted_seed_len_u8 )) {
265- return KEYSTORE_ERR_MEMORY ;
266- }
267- if (!_verify_seed (password , seed , seed_length )) {
268- if (!memory_reset_hww ()) {
269- return KEYSTORE_ERR_MEMORY ;
270- }
271- return KEYSTORE_ERR_MEMORY ;
272- }
273- return KEYSTORE_OK ;
218+ return rust_keystore_encrypt_and_store_seed (rust_util_bytes (seed , seed_length ), password );
274219}
275220
276221keystore_error_t keystore_create_and_store_seed (
0 commit comments