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"
13 class RsaSsaImplementation
: public RsaHashedAlgorithm
{
15 RsaSsaImplementation()
16 : RsaHashedAlgorithm(blink::WebCryptoKeyUsageVerify
,
17 blink::WebCryptoKeyUsageSign
) {}
19 const char* GetJwkAlgorithm(
20 const blink::WebCryptoAlgorithmId hash
) const override
{
22 case blink::WebCryptoAlgorithmIdSha1
:
24 case blink::WebCryptoAlgorithmIdSha256
:
26 case blink::WebCryptoAlgorithmIdSha384
:
28 case blink::WebCryptoAlgorithmIdSha512
:
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
);
53 scoped_ptr
<AlgorithmImplementation
> CreateRsaSsaImplementation() {
54 return make_scoped_ptr(new RsaSsaImplementation
);
57 } // namespace webcrypto