Move key factory registration into SoftKeymasterDevice.

So we can do it differently in the keymaster0 adapter.

Bug: 20912868
Change-Id: If4c602cc0fab3e59cd2e395a97e21dd8cb3a176f
diff --git a/hmac_key.h b/hmac_key.h
index 6c482bb..065effc 100644
--- a/hmac_key.h
+++ b/hmac_key.h
@@ -21,6 +21,14 @@
 
 namespace keymaster {
 
+class HmacKeyFactory : public SymmetricKeyFactory {
+  public:
+    keymaster_algorithm_t registry_key() const override { return KM_ALGORITHM_HMAC; }
+
+    Key* LoadKey(const UnencryptedKeyBlob& blob, keymaster_error_t* error) override;
+    SymmetricKey* CreateKey(const AuthorizationSet& auths) override;
+};
+
 class HmacKey : public SymmetricKey {
     static const size_t MAX_HMAC_KEY_SIZE = 256; /* Arbitrary limit, for DoS prevention */
 
@@ -29,7 +37,7 @@
     HmacKey(const UnencryptedKeyBlob& blob, keymaster_error_t* error) : SymmetricKey(blob, error) {}
 
   private:
-    virtual bool size_supported(size_t key_size) { return key_size < MAX_HMAC_KEY_SIZE; }
+    bool size_supported(size_t key_size) const override { return key_size < MAX_HMAC_KEY_SIZE; }
 };
 
 }  // namespace keymaster