Index: components/gcm_driver/crypto/gcm_message_cryptographer_nss.cc |
diff --git a/components/gcm_driver/crypto/gcm_message_cryptographer_nss.cc b/components/gcm_driver/crypto/gcm_message_cryptographer_nss.cc |
deleted file mode 100644 |
index accf45644e67614d75e42b182d540022e2fef8c3..0000000000000000000000000000000000000000 |
--- a/components/gcm_driver/crypto/gcm_message_cryptographer_nss.cc |
+++ /dev/null |
@@ -1,94 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "components/gcm_driver/crypto/gcm_message_cryptographer.h" |
- |
-#include <pk11pub.h> |
-#include <secerr.h> |
-#include <stddef.h> |
- |
-#include "base/logging.h" |
-#include "base/numerics/safe_math.h" |
-#include "base/strings/string_util.h" |
-#include "crypto/scoped_nss_types.h" |
- |
-namespace gcm { |
- |
-bool GCMMessageCryptographer::EncryptDecryptRecordInternal( |
- Mode mode, |
- const base::StringPiece& input, |
- const base::StringPiece& key, |
- const base::StringPiece& nonce, |
- std::string* output) const { |
- DCHECK(output); |
- |
- SECItem key_item; |
- key_item.type = siBuffer; |
- key_item.data = const_cast<unsigned char*>( |
- reinterpret_cast<const unsigned char*>(key.data())); |
- key_item.len = key.size(); |
- |
- const CK_ATTRIBUTE_TYPE cka_mode = mode == ENCRYPT ? CKA_ENCRYPT |
- : CKA_DECRYPT; |
- |
- crypto::ScopedPK11Slot slot(PK11_GetInternalSlot()); |
- crypto::ScopedPK11SymKey aead_key( |
- PK11_ImportSymKey(slot.get(), CKM_AES_GCM, PK11_OriginUnwrap, cka_mode, |
- &key_item, nullptr)); |
- |
- CK_GCM_PARAMS gcm_params; |
- gcm_params.pIv = const_cast<unsigned char*>( |
- reinterpret_cast<const unsigned char*>(nonce.data())); |
- gcm_params.ulIvLen = nonce.size(); |
- |
- gcm_params.pAAD = nullptr; |
- gcm_params.ulAADLen = 0; |
- |
- gcm_params.ulTagBits = kAuthenticationTagBytes * 8; |
- |
- SECItem param; |
- param.type = siBuffer; |
- param.data = reinterpret_cast<unsigned char*>(&gcm_params); |
- param.len = sizeof(gcm_params); |
- |
- base::CheckedNumeric<size_t> maximum_output_length(input.size()); |
- if (mode == ENCRYPT) |
- maximum_output_length += kAuthenticationTagBytes; |
- |
- // WriteInto requires the buffer to finish with a NULL-byte. |
- maximum_output_length += 1; |
- |
- unsigned int output_length = 0; |
- unsigned char* raw_input = const_cast<unsigned char*>( |
- reinterpret_cast<const unsigned char*>(input.data())); |
- unsigned char* raw_output = reinterpret_cast<unsigned char*>( |
- base::WriteInto(output, maximum_output_length.ValueOrDie())); |
- |
- if (mode == ENCRYPT) { |
- if (PK11_Encrypt(aead_key.get(), CKM_AES_GCM, ¶m, raw_output, |
- &output_length, output->size(), raw_input, |
- input.size()) != SECSuccess) { |
- return false; |
- } |
- } else { |
- if (PK11_Decrypt(aead_key.get(), CKM_AES_GCM, ¶m, raw_output, |
- &output_length, output->size(), raw_input, |
- input.size()) != SECSuccess) { |
- return false; |
- } |
- } |
- |
- base::CheckedNumeric<size_t> expected_output_length(input.size()); |
- if (mode == ENCRYPT) |
- expected_output_length += kAuthenticationTagBytes; |
- else |
- expected_output_length -= kAuthenticationTagBytes; |
- |
- DCHECK_EQ(expected_output_length.ValueOrDie(), output_length); |
- |
- output->resize(output_length); |
- return true; |
-} |
- |
-} // namespace gcm |