xref: /aosp_15_r20/external/cronet/crypto/ec_signature_creator_impl.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2012 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CRYPTO_EC_SIGNATURE_CREATOR_IMPL_H_
6 #define CRYPTO_EC_SIGNATURE_CREATOR_IMPL_H_
7 
8 #include <stdint.h>
9 
10 #include <vector>
11 
12 #include "base/compiler_specific.h"
13 #include "base/containers/span.h"
14 #include "base/memory/raw_ptr.h"
15 #include "crypto/ec_signature_creator.h"
16 
17 namespace crypto {
18 
19 class ECSignatureCreatorImpl : public ECSignatureCreator {
20  public:
21   explicit ECSignatureCreatorImpl(ECPrivateKey* key);
22 
23   ECSignatureCreatorImpl(const ECSignatureCreatorImpl&) = delete;
24   ECSignatureCreatorImpl& operator=(const ECSignatureCreatorImpl&) = delete;
25 
26   ~ECSignatureCreatorImpl() override;
27 
28   bool Sign(base::span<const uint8_t> data,
29             std::vector<uint8_t>* signature) override;
30 
31   bool DecodeSignature(const std::vector<uint8_t>& der_sig,
32                        std::vector<uint8_t>* out_raw_sig) override;
33 
34  private:
35   raw_ptr<ECPrivateKey> key_;
36 };
37 
38 }  // namespace crypto
39 
40 #endif  // CRYPTO_EC_SIGNATURE_CREATOR_IMPL_H_
41