diff options
author | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-09 08:32:40 +0000 |
---|---|---|
committer | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-09 08:32:40 +0000 |
commit | ed31834bbaaec43db09132b2705c7e9c062d5620 (patch) | |
tree | 99356950de57ca16686f7a5d7409abd11a53c970 /crypto/signature_creator_nss.cc | |
parent | 0061349a01cdf6a81ca736b4a2878b19b9543d82 (diff) | |
download | chromium_src-ed31834bbaaec43db09132b2705c7e9c062d5620.zip chromium_src-ed31834bbaaec43db09132b2705c7e9c062d5620.tar.gz chromium_src-ed31834bbaaec43db09132b2705c7e9c062d5620.tar.bz2 |
Introduce RSAPrivateKey::SignDigest
BUG=258017
R=rsleevi@chromium.org
Review URL: https://codereview.chromium.org/18697003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@210524 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'crypto/signature_creator_nss.cc')
-rw-r--r-- | crypto/signature_creator_nss.cc | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/crypto/signature_creator_nss.cc b/crypto/signature_creator_nss.cc index 3a30efb..6c21efe 100644 --- a/crypto/signature_creator_nss.cc +++ b/crypto/signature_creator_nss.cc @@ -43,6 +43,29 @@ SignatureCreator* SignatureCreator::Create(RSAPrivateKey* key) { return result.release(); } +// static +bool SignatureCreator::Sign(RSAPrivateKey* key, + const uint8* data, + int data_len, + std::vector<uint8>* signature) { + SECItem data_item; + data_item.type = siBuffer; + data_item.data = const_cast<unsigned char*>(data); + data_item.len = data_len; + + SECItem signature_item; + SECStatus rv = SGN_Digest(key->key(), SEC_OID_SHA1, &signature_item, + &data_item); + if (rv != SECSuccess) { + NOTREACHED(); + return false; + } + signature->assign(signature_item.data, + signature_item.data + signature_item.len); + SECITEM_FreeItem(&signature_item, PR_FALSE); + return true; +} + bool SignatureCreator::Update(const uint8* data_part, int data_part_len) { // TODO(wtc): Remove this const_cast when we require NSS 3.12.5. // See NSS bug https://bugzilla.mozilla.org/show_bug.cgi?id=518255 |