| Index: net/quic/crypto/channel_id_nss.cc
|
| diff --git a/net/quic/crypto/channel_id_nss.cc b/net/quic/crypto/channel_id_nss.cc
|
| deleted file mode 100644
|
| index 522b2f61509c5cadf95bada94eca8387bfa0afcd..0000000000000000000000000000000000000000
|
| --- a/net/quic/crypto/channel_id_nss.cc
|
| +++ /dev/null
|
| @@ -1,79 +0,0 @@
|
| -// Copyright 2013 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 "net/quic/crypto/channel_id.h"
|
| -
|
| -#include <keythi.h>
|
| -#include <pk11pub.h>
|
| -#include <sechash.h>
|
| -
|
| -using base::StringPiece;
|
| -
|
| -namespace net {
|
| -
|
| -// static
|
| -bool ChannelIDVerifier::Verify(StringPiece key,
|
| - StringPiece signed_data,
|
| - StringPiece signature) {
|
| - return VerifyRaw(key, signed_data, signature, true);
|
| -}
|
| -
|
| -// static
|
| -bool ChannelIDVerifier::VerifyRaw(StringPiece key,
|
| - StringPiece signed_data,
|
| - StringPiece signature,
|
| - bool is_channel_id_signature) {
|
| - if (key.size() != 32 * 2 || signature.size() != 32 * 2) {
|
| - return false;
|
| - }
|
| -
|
| - SECKEYPublicKey public_key;
|
| - memset(&public_key, 0, sizeof(public_key));
|
| -
|
| - // DER encoding of the object identifier (OID) of the named curve P-256
|
| - // (1.2.840.10045.3.1.7). See RFC 6637 Section 11.
|
| - static const unsigned char p256_oid[] = {0x06, 0x08, 0x2a, 0x86, 0x48,
|
| - 0xce, 0x3d, 0x03, 0x01, 0x07};
|
| - public_key.keyType = ecKey;
|
| - public_key.u.ec.DEREncodedParams.type = siBuffer;
|
| - public_key.u.ec.DEREncodedParams.data = const_cast<unsigned char*>(p256_oid);
|
| - public_key.u.ec.DEREncodedParams.len = sizeof(p256_oid);
|
| -
|
| - unsigned char key_buf[65];
|
| - key_buf[0] = 0x04;
|
| - memcpy(&key_buf[1], key.data(), key.size());
|
| - public_key.u.ec.publicValue.type = siBuffer;
|
| - public_key.u.ec.publicValue.data = key_buf;
|
| - public_key.u.ec.publicValue.len = sizeof(key_buf);
|
| -
|
| - SECItem signature_item = {siBuffer, reinterpret_cast<unsigned char*>(
|
| - const_cast<char*>(signature.data())),
|
| - static_cast<unsigned int>(signature.size())};
|
| -
|
| - unsigned char hash_buf[SHA256_LENGTH];
|
| - SECItem hash_item = {siBuffer, hash_buf, sizeof(hash_buf)};
|
| -
|
| - HASHContext* sha256 = HASH_Create(HASH_AlgSHA256);
|
| - if (!sha256) {
|
| - return false;
|
| - }
|
| - HASH_Begin(sha256);
|
| - if (is_channel_id_signature) {
|
| - HASH_Update(sha256, reinterpret_cast<const unsigned char*>(kContextStr),
|
| - strlen(kContextStr) + 1);
|
| - HASH_Update(sha256,
|
| - reinterpret_cast<const unsigned char*>(kClientToServerStr),
|
| - strlen(kClientToServerStr) + 1);
|
| - }
|
| - HASH_Update(sha256,
|
| - reinterpret_cast<const unsigned char*>(signed_data.data()),
|
| - signed_data.size());
|
| - HASH_End(sha256, hash_buf, &hash_item.len, sizeof(hash_buf));
|
| - HASH_Destroy(sha256);
|
| -
|
| - return PK11_Verify(&public_key, &signature_item, &hash_item, nullptr) ==
|
| - SECSuccess;
|
| -}
|
| -
|
| -} // namespace net
|
|
|