X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmanager%2Fcrypto%2Ftz-backend%2Finternals.cpp;h=5b8ad1e6c500b480a2842d554f4c23ae8664acf8;hb=4d7b002fa0e3953c7340609252c87dab916b57c0;hp=b8abe249605a4ffd539644f8c57b4d38de5d240e;hpb=a242a6468206f9eb32d8a33a064c813122215a09;p=platform%2Fcore%2Fsecurity%2Fkey-manager.git diff --git a/src/manager/crypto/tz-backend/internals.cpp b/src/manager/crypto/tz-backend/internals.cpp index b8abe24..5b8ad1e 100644 --- a/src/manager/crypto/tz-backend/internals.cpp +++ b/src/manager/crypto/tz-backend/internals.cpp @@ -113,6 +113,37 @@ tz_ec toTzEc(CKM::ElipticCurve ec) } } +tz_prf toTzPrf(CKM::KdfPrf prf) +{ + switch(prf) { + case CKM::KdfPrf::HMAC_SHA256: return PRF_HMAC_SHA256; + case CKM::KdfPrf::HMAC_SHA384: return PRF_HMAC_SHA384; + case CKM::KdfPrf::HMAC_SHA512: return PRF_HMAC_SHA512; + default: ThrowErr(CKM::Exc::Crypto::DataTypeNotSupported, "PRF not supported by tz-backend"); + } +} + +tz_kbkdf_mode toTzKbkdfMode(CKM::KbkdfMode mode) +{ + switch(mode) { + case CKM::KbkdfMode::COUNTER: return KBKDF_MODE_COUNTER; + default: + ThrowErr(CKM::Exc::Crypto::DataTypeNotSupported, "KBKDF mode not supported by tz-backend"); + } +} + +tz_kbkdf_ctr_loc toTzCtrLoc(CKM::KbkdfCounterLocation loc) +{ + switch(loc) { + case CKM::KbkdfCounterLocation::BEFORE_FIXED: return KBKDF_LOC_BEFORE_FIXED; + case CKM::KbkdfCounterLocation::AFTER_FIXED: return KBKDF_LOC_AFTER_FIXED; + case CKM::KbkdfCounterLocation::MIDDLE_FIXED: return KBKDF_LOC_MIDDLE_FIXED; + default: + ThrowErr(CKM::Exc::Crypto::DataTypeNotSupported, + "KBKDF counter location not supported by tz-backend"); + } +} + } // namespace namespace CKM { @@ -641,9 +672,9 @@ void deriveKBKDF(const RawBuffer &secret, RawBuffer keyPwdBuf(keyPwd.begin(), keyPwd.end()); TrustZoneContext::Instance().executeKbkdf(secret, - prf, - mode, - location, + toTzPrf(prf), + toTzKbkdfMode(mode), + toTzCtrLoc(location), rlen, llen, noSeparator,