diff options
author | Krzysztof Jackiewicz <k.jackiewicz@samsung.com> | 2018-09-26 17:14:20 +0200 |
---|---|---|
committer | Krzysztof Jackiewicz <k.jackiewicz@samsung.com> | 2018-09-26 17:14:20 +0200 |
commit | 4cb37a79cc9b4f2b8d5389431e4d528e9ae74501 (patch) | |
tree | a478f97926248ce3c8c0ab6cd2f12f0ba0534af1 | |
parent | 2ff75c9bc6dbaaf7d521edfe393b84a8a1186f45 (diff) | |
download | key-manager-4cb37a79cc9b4f2b8d5389431e4d528e9ae74501.tar.gz key-manager-4cb37a79cc9b4f2b8d5389431e4d528e9ae74501.tar.bz2 key-manager-4cb37a79cc9b4f2b8d5389431e4d528e9ae74501.zip |
Introduce Key class in tz backend
Add an intermediate Key class that removes the need to keep
credentials from binary data object (BData).
Change-Id: I638de81aedf47bc51421a7c362459ced801fd650
-rw-r--r-- | src/manager/crypto/tz-backend/obj.h | 27 | ||||
-rw-r--r-- | src/manager/crypto/tz-backend/store.cpp | 2 |
2 files changed, 19 insertions, 10 deletions
diff --git a/src/manager/crypto/tz-backend/obj.h b/src/manager/crypto/tz-backend/obj.h index f3459c14..32c6444f 100644 --- a/src/manager/crypto/tz-backend/obj.h +++ b/src/manager/crypto/tz-backend/obj.h @@ -59,15 +59,25 @@ private: class BData : public GObj { public: - BData(int scheme, RawBuffer buffer, Pwd pwd, DataType keyType): - m_scheme(scheme), m_raw(std::move(buffer)), m_password(std::move(pwd)), - m_type(keyType) {} + explicit BData(RawBuffer buffer) : m_raw(std::move(buffer)) {} virtual RawBuffer getBinary() const override { return m_raw; } +protected: + RawBuffer m_raw; +}; + +class Key : public BData { +public: + Key(int scheme, RawBuffer buffer, Pwd pwd, DataType dataType) : + BData(std::move(buffer)), + m_scheme(scheme), + m_password(std::move(pwd)), + m_type(dataType) {} + virtual int getScheme() const { return m_scheme; @@ -80,24 +90,23 @@ public: protected: int m_scheme; - RawBuffer m_raw; Pwd m_password; DataType m_type; }; -class SKey : public BData { +class SKey : public Key { public: - SKey(int scheme, RawBuffer buffer, Pwd pwd, DataType keyType) : - BData(scheme, std::move(buffer), std::move(pwd), keyType) {} + SKey(int scheme, RawBuffer buffer, Pwd pwd, DataType dataType) : + Key(scheme, std::move(buffer), std::move(pwd), dataType) {} virtual RawBuffer encrypt(const CryptoAlgorithm &, const RawBuffer &); virtual RawBuffer decrypt(const CryptoAlgorithm &, const RawBuffer &); }; -class AKey : public BData { +class AKey : public Key { public: AKey(int scheme, RawBuffer buffer, Pwd pwd, DataType dataType) : - BData(scheme, std::move(buffer), std::move(pwd), dataType) {} + Key(scheme, std::move(buffer), std::move(pwd), dataType) {} virtual RawBuffer sign(const CryptoAlgorithm &alg, const RawBuffer &message); virtual int verify(const CryptoAlgorithm &alg, const RawBuffer &message, diff --git a/src/manager/crypto/tz-backend/store.cpp b/src/manager/crypto/tz-backend/store.cpp index 3d0179b0..92aaad55 100644 --- a/src/manager/crypto/tz-backend/store.cpp +++ b/src/manager/crypto/tz-backend/store.cpp @@ -115,7 +115,7 @@ GObjUPtr Store::getObject(const Token &token, const Password &pass) if (token.dataType.isBinaryData()) { RawBuffer exported_data = Internals::getData(id, Pwd(pass, iv, tag)); - return make_unique<BData>(scheme, exported_data, Pwd(pass, iv, tag), token.dataType); + return make_unique<BData>(std::move(exported_data)); } ThrowErr(Exc::Crypto::DataTypeNotSupported, |