diff options
author | wtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-09 18:40:50 +0000 |
---|---|---|
committer | wtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-09 18:40:50 +0000 |
commit | 692033a35dd662cd04b965cfa31581176ebdcfe6 (patch) | |
tree | 6224a1b37f7c1a0f6296490ba5e805e815b51247 /base/crypto/symmetric_key_mac.cc | |
parent | 256865a6ab0cf3affd171b2eb275bfa7bb8c964d (diff) | |
download | chromium_src-692033a35dd662cd04b965cfa31581176ebdcfe6.zip chromium_src-692033a35dd662cd04b965cfa31581176ebdcfe6.tar.gz chromium_src-692033a35dd662cd04b965cfa31581176ebdcfe6.tar.bz2 |
Implement PBKDF2-based key derivation, random key generation,
and AES-CBC encryption/decryption using CryptoAPI.
Contributed by Ryan Sleevi <ryan.sleevi@gmail.com>.
Original review URL: http://codereview.chromium.org/1558018
R=wtc,albertb
BUG=none
TEST=SymmetricKeyTest.* and EncryptorTest.*
Review URL: http://codereview.chromium.org/1528021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44106 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/crypto/symmetric_key_mac.cc')
-rw-r--r-- | base/crypto/symmetric_key_mac.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/base/crypto/symmetric_key_mac.cc b/base/crypto/symmetric_key_mac.cc index 89277c6..504f204 100644 --- a/base/crypto/symmetric_key_mac.cc +++ b/base/crypto/symmetric_key_mac.cc @@ -29,7 +29,7 @@ CSSM_KEY_TYPE CheckKeyParams(base::SymmetricKey::Algorithm algorithm, return CSSM_ALGID_SHA1HMAC_LEGACY; } } - + void* CreateRandomBytes(size_t size) { CSSM_RETURN err; CSSM_CC_HANDLE ctx; @@ -49,8 +49,8 @@ void* CreateRandomBytes(size_t size) { } CSSM_DeleteContext(ctx); return random_data.Data; // Caller responsible for freeing this -} - +} + inline CSSM_DATA StringToData(const std::string& str) { CSSM_DATA data = { str.size(), @@ -63,6 +63,8 @@ inline CSSM_DATA StringToData(const std::string& str) { namespace base { +SymmetricKey::~SymmetricKey() {} + // static SymmetricKey* SymmetricKey::GenerateRandomKey(Algorithm algorithm, size_t key_size_in_bits) { @@ -123,7 +125,7 @@ SymmetricKey* SymmetricKey::DeriveKeyFromPassword(Algorithm algorithm, DCHECK_EQ(cssm_key.KeyData.Length, key_size_in_bits / 8); derived_key = new SymmetricKey(cssm_key.KeyData.Data, key_size_in_bits); -exit: + exit: CSSM_DeleteContext(ctx); CSSM_FreeKey(GetSharedCSPHandle(), &credentials, &cssm_key, false); return derived_key; |