diff options
Diffstat (limited to 'components/ownership/owner_key_util_impl.cc')
-rw-r--r-- | components/ownership/owner_key_util_impl.cc | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/components/ownership/owner_key_util_impl.cc b/components/ownership/owner_key_util_impl.cc index bc7208e..cab5ffa 100644 --- a/components/ownership/owner_key_util_impl.cc +++ b/components/ownership/owner_key_util_impl.cc @@ -8,7 +8,12 @@ #include "base/files/file_util.h" #include "base/logging.h" + +#if defined(USE_NSS_CERTS) +#include <keythi.h> +#include "crypto/nss_key_util.h" #include "crypto/rsa_private_key.h" +#endif namespace ownership { @@ -54,7 +59,18 @@ bool OwnerKeyUtilImpl::ImportPublicKey(std::vector<uint8>* output) { crypto::RSAPrivateKey* OwnerKeyUtilImpl::FindPrivateKeyInSlot( const std::vector<uint8>& key, PK11SlotInfo* slot) { - return crypto::RSAPrivateKey::FindFromPublicKeyInfoInSlot(key, slot); + crypto::ScopedSECKEYPrivateKey private_key( + crypto::FindNSSKeyFromPublicKeyInfoInSlot(key, slot)); + if (!private_key || SECKEY_GetPrivateKeyType(private_key.get()) != rsaKey) + return nullptr; +#if defined(USE_OPENSSL) + // TODO(davidben): This assumes that crypto::RSAPrivateKey also uses NSS. + // https://crbug.com/478777 + NOTIMPLEMENTED(); + return nullptr; +#else + return crypto::RSAPrivateKey::CreateFromKey(private_key.get()); +#endif } #endif // defined(USE_NSS_CERTS) |