ec_signature_creator_impl.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright (c) 2012 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.
  4. #ifndef CRYPTO_EC_SIGNATURE_CREATOR_IMPL_H_
  5. #define CRYPTO_EC_SIGNATURE_CREATOR_IMPL_H_
  6. #include <stdint.h>
  7. #include <vector>
  8. #include "base/compiler_specific.h"
  9. #include "base/containers/span.h"
  10. #include "base/memory/raw_ptr.h"
  11. #include "crypto/ec_signature_creator.h"
  12. namespace crypto {
  13. class ECSignatureCreatorImpl : public ECSignatureCreator {
  14. public:
  15. explicit ECSignatureCreatorImpl(ECPrivateKey* key);
  16. ECSignatureCreatorImpl(const ECSignatureCreatorImpl&) = delete;
  17. ECSignatureCreatorImpl& operator=(const ECSignatureCreatorImpl&) = delete;
  18. ~ECSignatureCreatorImpl() override;
  19. bool Sign(base::span<const uint8_t> data,
  20. std::vector<uint8_t>* signature) override;
  21. bool DecodeSignature(const std::vector<uint8_t>& der_sig,
  22. std::vector<uint8_t>* out_raw_sig) override;
  23. private:
  24. raw_ptr<ECPrivateKey> key_;
  25. };
  26. } // namespace crypto
  27. #endif // CRYPTO_EC_SIGNATURE_CREATOR_IMPL_H_