@@ -256,19 +256,27 @@ - (NSData *)extendedPublicKeyData {
256256 return nil ;
257257}
258258
259+ - (void )maybeRevertBLSMigration : (NSData *)extendedPublicKeyData {
260+ // revert
261+ // for those who already migrated from legacy to basic BLS derivation scheme
262+ // we revert back their extended public key to legacy
263+ BOOL isBasicBLS = self.signingAlgorithm == KeyKind_BLSBasic;
264+ if (isBasicBLS) {
265+ _extendedPublicKey = key_bls_migrate_from_basic_extended_public_key_data (extendedPublicKeyData.bytes , extendedPublicKeyData.length );
266+ if (_extendedPublicKey) {
267+ setKeychainData ([DSKeyManager extendedPublicKeyData: _extendedPublicKey], [self standaloneExtendedPublicKeyLocationString ], NO );
268+ }
269+ }
270+ }
271+
259272- (OpaqueKey *)extendedPublicKey {
260273 if (!_extendedPublicKey) {
261274 if (self.wallet && (self.length || self.reference == DSDerivationPathReference_Root)) {
262275 NSData *extendedPublicKeyData = getKeychainData ([self walletBasedExtendedPublicKeyLocationString ], nil );
263276 if (extendedPublicKeyData) {
277+ NoTimeLog (@" _extendedPublicKey (%d ) = %@ " , self.signingAlgorithm , extendedPublicKeyData.hexString );
264278 _extendedPublicKey = key_create_from_extended_public_key_data (extendedPublicKeyData.bytes , extendedPublicKeyData.length , (int16_t ) self.signingAlgorithm );
265- if (!_extendedPublicKey && self.signingAlgorithm == KeyKind_BLSBasic) {
266- // Migrate BLS key from keychain: legacy -> basic
267- _extendedPublicKey = key_bls_migrate_from_legacy_extended_public_key_data (extendedPublicKeyData.bytes , extendedPublicKeyData.length );
268- if (_extendedPublicKey) {
269- setKeychainData ([DSKeyManager extendedPublicKeyData: _extendedPublicKey], [self standaloneExtendedPublicKeyLocationString ], NO );
270- }
271- }
279+ [self maybeRevertBLSMigration: extendedPublicKeyData];
272280 NSAssert (_extendedPublicKey, @" extended public key not set" );
273281 }
274282 } else {
@@ -293,11 +301,9 @@ - (OpaqueKey *)extendedPublicKey {
293301 }
294302 }
295303#endif
304+ NoTimeLog (@" _extendedPublicKey (%d ) = %@ " , self.signingAlgorithm , extendedPublicKeyData.hexString );
296305 _extendedPublicKey = key_create_from_extended_public_key_data (extendedPublicKeyData.bytes , extendedPublicKeyData.length , (int16_t ) self.signingAlgorithm );
297- if (!_extendedPublicKey && self.signingAlgorithm == KeyKind_BLSBasic) {
298- // Migrate BLS key from keychain: legacy -> basic
299- _extendedPublicKey = key_bls_migrate_from_legacy_extended_public_key_data (extendedPublicKeyData.bytes , extendedPublicKeyData.length );
300- }
306+ [self maybeRevertBLSMigration: extendedPublicKeyData];
301307 }
302308 }
303309 return _extendedPublicKey;
0 commit comments