Index: content/child/webcrypto/openssl/key_openssl.h |
diff --git a/content/child/webcrypto/openssl/key_openssl.h b/content/child/webcrypto/openssl/key_openssl.h |
index ef3243893106161c24c0a9b7d3bdbd5356d9e1e9..768acafbd1c5c5c279979733e53fabb4860312d9 100644 |
--- a/content/child/webcrypto/openssl/key_openssl.h |
+++ b/content/child/webcrypto/openssl/key_openssl.h |
@@ -5,12 +5,16 @@ |
#ifndef CONTENT_CHILD_WEBCRYPTO_OPENSSL_KEY_OPENSSL_H_ |
#define CONTENT_CHILD_WEBCRYPTO_OPENSSL_KEY_OPENSSL_H_ |
+#include <openssl/ossl_typ.h> |
+ |
#include "content/child/webcrypto/algorithm_implementation.h" |
+#include "crypto/scoped_openssl_types.h" |
namespace content { |
namespace webcrypto { |
+class AsymKeyOpenSsl; |
class SymKeyOpenSsl; |
// Base key class for all OpenSSL keys, used to safely cast between types. Each |
@@ -23,6 +27,7 @@ class KeyOpenSsl : public blink::WebCryptoKeyHandle { |
virtual ~KeyOpenSsl(); |
virtual SymKeyOpenSsl* AsSymKey(); |
+ virtual AsymKeyOpenSsl* AsAsymKey(); |
const std::vector<uint8>& serialized_key_data() const { |
return serialized_key_data_; |
@@ -49,6 +54,24 @@ class SymKeyOpenSsl : public KeyOpenSsl { |
DISALLOW_COPY_AND_ASSIGN(SymKeyOpenSsl); |
}; |
+class AsymKeyOpenSsl : public KeyOpenSsl { |
+ public: |
+ virtual ~AsymKeyOpenSsl(); |
+ AsymKeyOpenSsl(crypto::ScopedEVP_PKEY key, |
+ const CryptoData& serialized_key_data); |
+ |
+ static AsymKeyOpenSsl* Cast(const blink::WebCryptoKey& key); |
+ |
+ virtual AsymKeyOpenSsl* AsAsymKey() OVERRIDE; |
+ |
+ EVP_PKEY* key() { return key_.get(); } |
+ |
+ private: |
+ crypto::ScopedEVP_PKEY key_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(AsymKeyOpenSsl); |
+}; |
+ |
} // namespace webcrypto |
} // namespace content |