X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tests%2Fencryption-scheme%2Fscheme-test.h;h=6d020b71900079a519cd847dff89d3f6e8e6315a;hb=d31fd54fd0a5edc0b1049ab4394a9dedbf13b72e;hp=69edd24b4d7357622e3eab6f52f1c6bf019c5229;hpb=cbb7712357af6b734a876b6d66e72ab1efb294ee;p=platform%2Fcore%2Fsecurity%2Fkey-manager.git diff --git a/tests/encryption-scheme/scheme-test.h b/tests/encryption-scheme/scheme-test.h index 69edd24..6d020b7 100644 --- a/tests/encryption-scheme/scheme-test.h +++ b/tests/encryption-scheme/scheme-test.h @@ -21,15 +21,23 @@ #pragma once +#include #include +#include #include #include #include +namespace CKM { +namespace DB { +class Crypto; +} // DB +} // CKM + struct Item { - Item() : type(CKM::DataType::DB_FIRST){} + Item() {} Item(const CKM::Alias& alias, const CKM::DataType::Type type, const CKM::Policy& policy) @@ -44,19 +52,74 @@ struct Item { typedef std::vector Items; +struct ItemFilter { + ItemFilter() : + typeFrom(CKM::DataType::DB_FIRST), + typeTo(CKM::DataType::DB_LAST), + exportableOnly(false), + noPassword(false) + {} + + explicit ItemFilter(CKM::DataType::Type type) : + typeFrom(type), + typeTo(type), + exportableOnly(false), + noPassword(false) + {} + + ItemFilter(CKM::DataType::Type typeFrom, CKM::DataType::Type typeTo) : + typeFrom(typeFrom), + typeTo(typeTo), + exportableOnly(false), + noPassword(false) + {} + + bool Matches(const Item& item) const { + if(item.type < typeFrom || item.type > typeTo) + return false; + if(exportableOnly && !item.policy.extractable) + return false; + if(noPassword && !item.policy.password.empty()) + return false; + return true; + } + + CKM::DataType::Type typeFrom; + CKM::DataType::Type typeTo; + bool exportableOnly; + bool noPassword; +}; + class SchemeTest { public: SchemeTest(); ~SchemeTest(); + void RemoveUserData(); void FillDb(); + void ReadAll(bool useWrongPass = false); + void SignVerify(); + void EncryptDecrypt(); + void CreateChain(); + void RemoveAll(); + size_t CountObjects(); + void RestoreDb(); + void CheckSchemeVersion(const ItemFilter& filter, int version); private: void SwitchToUser(); void SwitchToRoot(); + void EnableDirectDbAccess(); + void SignVerifyItem(const Item& itemPrv, const Item& itemPub); + void EncryptDecryptItem(const Item& item); + void EncryptDecryptItem(const Item& itemPrv, const Item& itemPub); + void CreateChainItem(const Item& leaf, const Items& certs); CKM::ControlShPtr m_control; CKM::ManagerShPtr m_mgr; std::string m_origLabel; bool m_userChanged; + + std::unique_ptr m_db; + bool m_directAccessEnabled; };