Use EVP_PKEY_get1_RSA to get RSA reference
authorKenny Root <kroot@google.com>
Fri, 6 Sep 2013 16:51:27 +0000 (09:51 -0700)
committerKenny Root <kroot@google.com>
Fri, 6 Sep 2013 16:51:27 +0000 (09:51 -0700)
EVP_PKEY structures could be of any number of key types. Switch to
EVP_PKEY_get1_RSA because that will check that the key type before it
tries to pull out the RSA pointer. This prevents crashes when the key
type is not actually RSA.

Bug: 10647482
Change-Id: I6848db52b04ed11331138ac00f0796574a87fa6a

libkeymaster/keymaster_mobicore.cpp

index f2d5d554f8f66c6b7cffb0c729f5d4c5b827191d..c093cb4fb66216af6b38ef4dec1a36ad379e8a9b 100644 (file)
@@ -165,8 +165,8 @@ static int exynos_km_import_keypair(const keymaster_device_t* dev,
     OWNERSHIP_TRANSFERRED(pkcs8);
 
     /* change key format */
-    RSA* rsa = pkey.get()->pkey.rsa;
-    if (rsa == NULL) {
+    Unique_RSA rsa(EVP_PKEY_get1_RSA(pkey.get()));
+    if (rsa.get() == NULL) {
         logOpenSSLError("get rsa key format");
        return -1;
     }