@@ -144,17 +144,10 @@ static secbool secret_ensure_initialized(void) {
144144secbool secret_write (const uint8_t * data , uint32_t offset , uint32_t len ) {
145145 mpu_mode_t mpu_mode = mpu_reconfig (MPU_MODE_SECRET );
146146 ensure (flash_unlock_write (), "secret write" );
147- for (int i = 0 ; i < len / 16 ; i ++ ) {
148- if (sectrue != flash_area_write_quadword (& SECRET_AREA , offset + (i * 16 ),
149- (uint32_t * )& data [(i * 16 )])) {
150- ensure (flash_lock_write (), "secret write" );
151- mpu_restore (mpu_mode );
152- return secfalse ;
153- }
154- }
147+ secbool result = flash_area_write_data (& SECRET_AREA , offset , data , len );
155148 ensure (flash_lock_write (), "secret write" );
156149 mpu_restore (mpu_mode );
157- return sectrue ;
150+ return result ;
158151}
159152
160153secbool secret_read (uint8_t * data , uint32_t offset , uint32_t len ) {
@@ -435,16 +428,13 @@ void secret_bhk_regenerate(void) {
435428
436429 ensure (flash_area_erase (& BHK_AREA , NULL ), "Failed regenerating BHK" );
437430 ensure (flash_unlock_write (), "Failed regenerating BHK" );
438- for (int i = 0 ; i < 2 ; i ++ ) {
439- uint32_t val [4 ] = {0 };
440- for (int j = 0 ; j < 4 ; j ++ ) {
441- val [j ] = rng_get ();
442- }
443- secbool res =
444- flash_area_write_quadword (& BHK_AREA , i * 4 * sizeof (uint32_t ), val );
445- memzero (val , sizeof (val ));
446- ensure (res , "Failed regenerating BHK" );
431+ uint32_t val [8 ] = {0 };
432+ for (int j = 0 ; j < ARRAY_LENGTH (val ); j ++ ) {
433+ val [j ] = rng_get ();
447434 }
435+ secbool res = flash_area_write_data (& BHK_AREA , 0 , val , sizeof (val ));
436+ memzero (val , sizeof (val ));
437+ ensure (res , "Failed regenerating BHK" );
448438
449439 mpu_restore (mpu_mode );
450440
0 commit comments