- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
76 lines
3.3 KiB
Java
76 lines
3.3 KiB
Java
package com.amazonaws.internal.keyvaluestore;
|
|
|
|
import android.security.keystore.KeyGenParameterSpec;
|
|
import androidx.annotation.RequiresApi;
|
|
import com.amazonaws.logging.Log;
|
|
import com.amazonaws.logging.LogFactory;
|
|
import com.google.android.gms.stats.CodePackage;
|
|
import java.security.Key;
|
|
import java.security.KeyStore;
|
|
import javax.crypto.KeyGenerator;
|
|
import javax.crypto.SecretKey;
|
|
|
|
@RequiresApi(api = 23)
|
|
/* loaded from: classes.dex */
|
|
class KeyProvider23 implements KeyProvider {
|
|
public static final Log logger = LogFactory.getLog(KeyProvider23.class);
|
|
|
|
@Override // com.amazonaws.internal.keyvaluestore.KeyProvider
|
|
public synchronized Key retrieveKey(String str) {
|
|
Key key;
|
|
try {
|
|
try {
|
|
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
|
|
keyStore.load(null);
|
|
if (keyStore.containsAlias(str)) {
|
|
Log log = logger;
|
|
log.debug("AndroidKeyStore contains keyAlias " + str);
|
|
log.debug("Loading the encryption key from Android KeyStore.");
|
|
key = keyStore.getKey(str, null);
|
|
if (key == null) {
|
|
throw new KeyNotFoundException("Key is null even though the keyAlias: " + str + " is present in AndroidKeyStore");
|
|
}
|
|
} else {
|
|
throw new KeyNotFoundException("AndroidKeyStore does not contain the keyAlias: " + str);
|
|
}
|
|
} catch (Exception e) {
|
|
throw new KeyNotFoundException("Error occurred while accessing AndroidKeyStore to retrieve the key for keyAlias: " + str, e);
|
|
}
|
|
} catch (Throwable th) {
|
|
throw th;
|
|
}
|
|
return key;
|
|
}
|
|
|
|
@Override // com.amazonaws.internal.keyvaluestore.KeyProvider
|
|
public synchronized Key generateKey(String str) {
|
|
SecretKey generateKey;
|
|
try {
|
|
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
|
|
keyStore.load(null);
|
|
if (!keyStore.containsAlias(str)) {
|
|
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES", "AndroidKeyStore");
|
|
keyGenerator.init(new KeyGenParameterSpec.Builder(str, 3).setBlockModes(CodePackage.GCM).setEncryptionPaddings("NoPadding").setKeySize(256).setRandomizedEncryptionRequired(false).build());
|
|
generateKey = keyGenerator.generateKey();
|
|
logger.info("Generated the encryption key identified by the keyAlias: " + str + " using AndroidKeyStore");
|
|
} else {
|
|
throw new KeyNotGeneratedException("Key already exists for the keyAlias: " + str + " in AndroidKeyStore");
|
|
}
|
|
} catch (Exception e) {
|
|
throw new KeyNotGeneratedException("Cannot generate a key for alias: " + str + " in AndroidKeyStore", e);
|
|
}
|
|
return generateKey;
|
|
}
|
|
|
|
@Override // com.amazonaws.internal.keyvaluestore.KeyProvider
|
|
public synchronized void deleteKey(String str) {
|
|
try {
|
|
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
|
|
keyStore.load(null);
|
|
keyStore.deleteEntry(str);
|
|
} catch (Exception e) {
|
|
logger.error("Error in deleting the key for keyAlias: " + str + " from Android KeyStore.", e);
|
|
}
|
|
}
|
|
}
|