mKeyStore?.getKey(“default_key”, null) is getting null in Kotlin

I have tried a fingerprint authenticator in Android. And initially it is working and that was in Java. And I am now porting the code to kotlin. This time something is not working for me.

try {
        mKeyStore = KeyStore.getInstance("AndroidKeyStore");
    } catch (KeyStoreException e) {
        throw new RuntimeException("Failed to get an instance of KeyStore", e);
    }
    try {
        mKeyGenerator = KeyGenerator
                .getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
    } catch (NoSuchAlgorithmException | NoSuchProviderException e) {
        throw new RuntimeException("Failed to get an instance of KeyGenerator", e);
    }    

mKeyStore.load(null);
SecretKey key = (SecretKey) mKeyStore.getKey("default_key", null);

Above written code is in Java and I get key as non-null value.

But when the same code is written in Kotlin the key is getting a null value.

try {
    mKeyStore = KeyStore.getInstance("AndroidKeyStore")
} catch (e: KeyStoreException) {
    throw RuntimeException("Failed to get an instance of KeyStore", e)
}

try {
    mKeyGenerator = KeyGenerator
        .getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore")
} catch (e: NoSuchAlgorithmException) {
    throw RuntimeException("Failed to get an instance of KeyGenerator", e)
} catch (e: NoSuchProviderException) {
    throw RuntimeException("Failed to get an instance of KeyGenerator", e)
}

mKeyStore?.load(null)
val key = mKeyStore?.getKey("default_key", null) as? SecretKey

Why I am getting this? Clarify me If anything is missing.

Thank you for your valuables time.

1
Leave a Reply

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Jason Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
Jason
Guest

Initialize the keygenerator and then extract the secretkey. mKeyGenerator.init( KeyGenParameterSpec.Builder("default_key", KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT) .setBlockModes(KeyProperties.BLOCK_MODE_CBC) .setUserAuthenticationRequired(true) .setEncryptionPaddings( KeyProperties.ENCRYPTION_PADDING_PKCS7 ) .build() ) mKeyGenerator.generateKey()