Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / components / webcrypto / algorithms / rsa_ssa.cc
blob54eefbb8a52df3134c02ed744f221b57401fcdbc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "components/webcrypto/algorithms/rsa.h"
6 #include "components/webcrypto/algorithms/rsa_sign.h"
7 #include "components/webcrypto/status.h"
9 namespace webcrypto {
11 namespace {
13 class RsaSsaImplementation : public RsaHashedAlgorithm {
14 public:
15 RsaSsaImplementation()
16 : RsaHashedAlgorithm(blink::WebCryptoKeyUsageVerify,
17 blink::WebCryptoKeyUsageSign) {}
19 const char* GetJwkAlgorithm(
20 const blink::WebCryptoAlgorithmId hash) const override {
21 switch (hash) {
22 case blink::WebCryptoAlgorithmIdSha1:
23 return "RS1";
24 case blink::WebCryptoAlgorithmIdSha256:
25 return "RS256";
26 case blink::WebCryptoAlgorithmIdSha384:
27 return "RS384";
28 case blink::WebCryptoAlgorithmIdSha512:
29 return "RS512";
30 default:
31 return NULL;
35 Status Sign(const blink::WebCryptoAlgorithm& algorithm,
36 const blink::WebCryptoKey& key,
37 const CryptoData& data,
38 std::vector<uint8_t>* buffer) const override {
39 return RsaSign(key, 0, data, buffer);
42 Status Verify(const blink::WebCryptoAlgorithm& algorithm,
43 const blink::WebCryptoKey& key,
44 const CryptoData& signature,
45 const CryptoData& data,
46 bool* signature_match) const override {
47 return RsaVerify(key, 0, signature, data, signature_match);
51 } // namespace
53 scoped_ptr<AlgorithmImplementation> CreateRsaSsaImplementation() {
54 return make_scoped_ptr(new RsaSsaImplementation);
57 } // namespace webcrypto