summaryrefslogtreecommitdiffstats
path: root/base/crypto/symmetric_key_mac.cc
diff options
context:
space:
mode:
authorwtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-09 18:40:50 +0000
committerwtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-09 18:40:50 +0000
commit692033a35dd662cd04b965cfa31581176ebdcfe6 (patch)
tree6224a1b37f7c1a0f6296490ba5e805e815b51247 /base/crypto/symmetric_key_mac.cc
parent256865a6ab0cf3affd171b2eb275bfa7bb8c964d (diff)
downloadchromium_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.cc10
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;