Refactor KeyBlob to separate encryption functionality.
This CL is in preparation for another which will refactor libkeymaster
into libkeymaster and libkeymasterclient, the latter for use by programs
which merely interface with keymaster and don't do any crypto on their
own, but do need to parse key blobs to extract authorization list
entries. To make that possible it moves KeyBlob's key encryption and
decryption capabilities into a subclass, PlaintextKeyBlob.
Change-Id: Ic6a65b6f237c122796ea70458655111316f902d8
diff --git a/asymmetric_key.h b/asymmetric_key.h
index 6279ff4..7b5f5a1 100644
--- a/asymmetric_key.h
+++ b/asymmetric_key.h
@@ -30,7 +30,7 @@
public:
protected:
AsymmetricKey(const KeyBlob& blob, const Logger& logger) : Key(blob, logger) {}
- keymaster_error_t LoadKey(const KeyBlob& blob);
+ keymaster_error_t LoadKey(const UnencryptedKeyBlob& blob);
/**
* Return a copy of raw key material, in the key's preferred binary format.
@@ -63,7 +63,7 @@
keymaster_error_t* error);
static RsaKey* ImportKey(const AuthorizationSet& key_description, EVP_PKEY* pkey,
const Logger& logger, keymaster_error_t* error);
- RsaKey(const KeyBlob& blob, const Logger& logger, keymaster_error_t* error);
+ RsaKey(const UnencryptedKeyBlob& blob, const Logger& logger, keymaster_error_t* error);
virtual Operation* CreateOperation(keymaster_purpose_t purpose, keymaster_digest_t digest,
keymaster_padding_t padding, keymaster_error_t* error);
@@ -89,14 +89,13 @@
keymaster_error_t* error);
static DsaKey* ImportKey(const AuthorizationSet& key_description, EVP_PKEY* pkey,
const Logger& logger, keymaster_error_t* error);
- DsaKey(const KeyBlob& blob, const Logger& logger, keymaster_error_t* error);
+ DsaKey(const UnencryptedKeyBlob& blob, const Logger& logger, keymaster_error_t* error);
virtual Operation* CreateOperation(keymaster_purpose_t purpose, keymaster_digest_t digest,
keymaster_padding_t padding, keymaster_error_t* error);
static size_t key_size_bits(DSA* dsa_key);
private:
-
DsaKey(DSA* dsa_key, const AuthorizationSet auths, const Logger& logger)
: AsymmetricKey(auths, logger), dsa_key_(dsa_key) {}
@@ -116,8 +115,8 @@
static EcdsaKey* GenerateKey(const AuthorizationSet& key_description, const Logger& logger,
keymaster_error_t* error);
static EcdsaKey* ImportKey(const AuthorizationSet& key_description, EVP_PKEY* pkey,
- const Logger& logger, keymaster_error_t* error);
- EcdsaKey(const KeyBlob& blob, const Logger& logger, keymaster_error_t* error);
+ const Logger& logger, keymaster_error_t* error);
+ EcdsaKey(const UnencryptedKeyBlob& blob, const Logger& logger, keymaster_error_t* error);
virtual Operation* CreateOperation(keymaster_purpose_t purpose, keymaster_digest_t digest,
keymaster_padding_t padding, keymaster_error_t* error);