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

Unified Diff: crypto/ec_signature_creator_nss.cc

Issue 10910226: crypto: change ECSignatureCreator defaults to match SPDY. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address wtc's comments Created 8 years, 3 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
Index: crypto/ec_signature_creator_nss.cc
diff --git a/crypto/ec_signature_creator_nss.cc b/crypto/ec_signature_creator_nss.cc
index a85b1e94fecf20299494fcffdc95c7894fb375da..40949f0b56a519a1137f6570bb34b12b78e26280 100644
--- a/crypto/ec_signature_creator_nss.cc
+++ b/crypto/ec_signature_creator_nss.cc
@@ -79,7 +79,7 @@ bool ECSignatureCreatorImpl::Sign(const uint8* data,
// Sign the secret data and save it to |result|.
SECStatus rv =
- SignData(&result, &secret, key_->key(), HASH_AlgSHA1);
+ SignData(&result, &secret, key_->key(), HASH_AlgSHA256);
if (rv != SECSuccess) {
DLOG(ERROR) << "DerSignData: " << PORT_GetError();
return false;
@@ -91,4 +91,20 @@ bool ECSignatureCreatorImpl::Sign(const uint8* data,
return true;
}
+bool ECSignatureCreatorImpl::DecodeSignature(const std::vector<uint8>& der_sig,
+ std::string* out_raw_sig) {
+ SECItem der_sig_item;
+ der_sig_item.type = siBuffer;
+ der_sig_item.len = der_sig.size();
+ der_sig_item.data = const_cast<uint8*>(der_sig.data());
+
+ static const int kP256ScalarBytes = 32;
+ SECItem* raw_sig = DSAU_DecodeDerSigToLen(&der_sig_item, 2*kP256ScalarBytes);
+ if (!raw_sig)
+ return false;
+ out_raw_sig->assign(reinterpret_cast<char*>(raw_sig->data), raw_sig->len);
+ SECITEM_FreeItem(raw_sig, PR_TRUE /* free SECItem structure itself. */);
+ return true;
+}
+
} // namespace crypto

Powered by Google App Engine
This is Rietveld 408576698