Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0219efd6 authored by Bart Jarochowski's avatar Bart Jarochowski Committed by Automerger Merge Worker
Browse files

Merge "Insert DEFAULT_MGF1_DIGEST SHA-1 on MGF_DIGEST tag when...

Merge "Insert DEFAULT_MGF1_DIGEST SHA-1 on MGF_DIGEST tag when ImportWrappedKey" into main am: 944f5358

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2640452



Change-Id: I92cdbbf0377197b115d370e7e13a1dbb800fd75b
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents f7d34b98 944f5358
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.security.keystore.KeyProtection;
import android.security.keystore.SecureKeyImportUnavailableException;
import android.security.keystore.WrappedKeyEntry;
import android.system.keystore2.AuthenticatorSpec;
import android.system.keystore2.Authorization;
import android.system.keystore2.Domain;
import android.system.keystore2.IKeystoreSecurityLevel;
import android.system.keystore2.KeyDescriptor;
@@ -960,6 +961,32 @@ public class AndroidKeyStoreSpi extends KeyStoreSpi {
            authenticatorSpecs.add(authSpec);
        }

        if (parts.length > 2) {
            @KeyProperties.EncryptionPaddingEnum int padding =
                    KeyProperties.EncryptionPadding.toKeymaster(parts[2]);
            if (padding == KeymasterDefs.KM_PAD_RSA_OAEP
                    && response.metadata != null
                    && response.metadata.authorizations != null) {
                Authorization[] keyCharacteristics = response.metadata.authorizations;

                for (Authorization authorization : keyCharacteristics) {
                    // Add default MGF1 digest SHA-1
                    // when wrapping key has KM_TAG_RSA_OAEP_MGF_DIGEST tag
                    if (authorization.keyParameter.tag
                            == KeymasterDefs.KM_TAG_RSA_OAEP_MGF_DIGEST) {
                        // Default MGF1 digest is SHA-1
                        // and KeyMint only supports default MGF1 digest crypto operations
                        // for importWrappedKey.
                        args.add(KeyStore2ParameterUtils.makeEnum(
                                KeymasterDefs.KM_TAG_RSA_OAEP_MGF_DIGEST,
                                KeyProperties.Digest.toKeymaster(DEFAULT_MGF1_DIGEST)
                        ));
                        break;
                    }
                }
            }
        }

        try {
            securityLevel.importWrappedKey(
                    wrappedKey, wrappingkey,