Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(244)

Unified Diff: net/cert/jwk_serializer_nss.cc

Issue 1882433002: Removing NSS files and USE_OPENSSL flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/cert/internal/verify_signed_data_unittest.cc ('k') | net/cert/multi_threaded_cert_verifier.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/cert/jwk_serializer_nss.cc
diff --git a/net/cert/jwk_serializer_nss.cc b/net/cert/jwk_serializer_nss.cc
deleted file mode 100644
index 605945368b1329e9ed1bda1d13838d9ee610b91f..0000000000000000000000000000000000000000
--- a/net/cert/jwk_serializer_nss.cc
+++ /dev/null
@@ -1,119 +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 <cert.h>
-#include <keyhi.h>
-#include <nss.h>
-
-#include <memory>
-
-#include "base/base64url.h"
-#include "base/values.h"
-#include "crypto/nss_util.h"
-#include "crypto/scoped_nss_types.h"
-#include "net/cert/jwk_serializer.h"
-
-namespace net {
-
-namespace JwkSerializer {
-
-namespace {
-
-bool ConvertEcPrime256v1PublicKeyInfoToJwk(
- CERTSubjectPublicKeyInfo* spki,
- base::DictionaryValue* public_key_jwk) {
- static const int kUncompressedEncodingType = 4;
- static const int kPrime256v1PublicKeyLength = 64;
- // The public key value is encoded as 0x04 + 64 bytes of public key.
- // NSS gives the length as the bit length.
- if (spki->subjectPublicKey.len != (kPrime256v1PublicKeyLength + 1) * 8 ||
- spki->subjectPublicKey.data[0] != kUncompressedEncodingType)
- return false;
-
- public_key_jwk->SetString("kty", "EC");
- public_key_jwk->SetString("crv", "P-256");
-
- base::StringPiece x(
- reinterpret_cast<char*>(spki->subjectPublicKey.data + 1),
- kPrime256v1PublicKeyLength / 2);
- std::string x_b64;
- base::Base64UrlEncode(x, base::Base64UrlEncodePolicy::OMIT_PADDING, &x_b64);
- public_key_jwk->SetString("x", x_b64);
-
- base::StringPiece y(
- reinterpret_cast<char*>(spki->subjectPublicKey.data + 1 +
- kPrime256v1PublicKeyLength / 2),
- kPrime256v1PublicKeyLength / 2);
- std::string y_b64;
- base::Base64UrlEncode(y, base::Base64UrlEncodePolicy::OMIT_PADDING, &y_b64);
- public_key_jwk->SetString("y", y_b64);
- return true;
-}
-
-bool ConvertEcPublicKeyInfoToJwk(
- CERTSubjectPublicKeyInfo* spki,
- base::DictionaryValue* public_key_jwk) {
- // 1.2.840.10045.3.1.7
- // (iso.member-body.us.ansi-x9-62.ellipticCurve.primeCurve.prime256v1)
- // (This includes the DER-encoded type (OID) and length: parameters can be
- // anything, so the DER type isn't implied, and NSS includes it.)
- static const unsigned char kPrime256v1[] = {
- 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07
- };
- if (spki->algorithm.parameters.len == sizeof(kPrime256v1) &&
- !memcmp(spki->algorithm.parameters.data, kPrime256v1,
- sizeof(kPrime256v1))) {
- return ConvertEcPrime256v1PublicKeyInfoToJwk(spki, public_key_jwk);
- }
- // TODO(juanlang): other curves
- return false;
-}
-
-typedef std::unique_ptr<
- CERTSubjectPublicKeyInfo,
- crypto::NSSDestroyer<CERTSubjectPublicKeyInfo,
- SECKEY_DestroySubjectPublicKeyInfo>>
- ScopedCERTSubjectPublicKeyInfo;
-
-} // namespace
-
-bool ConvertSpkiFromDerToJwk(
- const base::StringPiece& spki_der,
- base::DictionaryValue* public_key_jwk) {
- public_key_jwk->Clear();
-
- crypto::EnsureNSSInit();
-
- if (!NSS_IsInitialized())
- return false;
-
- SECItem sec_item;
- sec_item.data = const_cast<unsigned char*>(
- reinterpret_cast<const unsigned char*>(spki_der.data()));
- sec_item.len = spki_der.size();
- ScopedCERTSubjectPublicKeyInfo spki(
- SECKEY_DecodeDERSubjectPublicKeyInfo(&sec_item));
- if (!spki)
- return false;
-
- // 1.2.840.10045.2
- // (iso.member-body.us.ansi-x9-62.id-ecPublicKey)
- // (This omits the ASN.1 encoding of the type (OID) and length: the fact that
- // this is an OID is already clear, and NSS omits it here.)
- static const unsigned char kIdEcPublicKey[] = {
- 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01
- };
- bool rv = false;
- if (spki->algorithm.algorithm.len == sizeof(kIdEcPublicKey) &&
- !memcmp(spki->algorithm.algorithm.data, kIdEcPublicKey,
- sizeof(kIdEcPublicKey))) {
- rv = ConvertEcPublicKeyInfoToJwk(spki.get(), public_key_jwk);
- }
- // TODO(juanlang): other algorithms
- return rv;
-}
-
-} // namespace JwkSerializer
-
-} // namespace net
« no previous file with comments | « net/cert/internal/verify_signed_data_unittest.cc ('k') | net/cert/multi_threaded_cert_verifier.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698