Shaka Packager SDK
Loading...
Searching...
No Matches
request_signer.h
1// Copyright 2014 Google LLC. All rights reserved.
2//
3// Use of this source code is governed by a BSD-style
4// license that can be found in the LICENSE file or at
5// https://developers.google.com/open-source/licenses/bsd
6
7#ifndef PACKAGER_MEDIA_BASE_REQUEST_SIGNER_H_
8#define PACKAGER_MEDIA_BASE_REQUEST_SIGNER_H_
9
10#include <cstdint>
11#include <memory>
12#include <string>
13#include <vector>
14
15#include <packager/macros/classes.h>
16
17namespace shaka {
18namespace media {
19
20class AesCbcEncryptor;
21class RsaPrivateKey;
22
25 public:
26 virtual ~RequestSigner();
27
31 virtual bool GenerateSignature(const std::string& message,
32 std::string* signature) = 0;
33
34 const std::string& signer_name() const { return signer_name_; }
35
36 protected:
37 explicit RequestSigner(const std::string& signer_name);
38
39 private:
40 std::string signer_name_;
41
42 DISALLOW_COPY_AND_ASSIGN(RequestSigner);
43};
44
47 public:
48 ~AesRequestSigner() override;
49
52 static AesRequestSigner* CreateSigner(const std::string& signer_name,
53 const std::vector<uint8_t>& aes_key,
54 const std::vector<uint8_t>& iv);
55
57 bool GenerateSignature(const std::string& message,
58 std::string* signature) override;
59
60 private:
61 AesRequestSigner(const std::string& signer_name,
62 std::unique_ptr<AesCbcEncryptor> encryptor);
63
64 std::unique_ptr<AesCbcEncryptor> aes_cbc_encryptor_;
65
66 DISALLOW_COPY_AND_ASSIGN(AesRequestSigner);
67};
68
71 public:
72 ~RsaRequestSigner() override;
73
76 static RsaRequestSigner* CreateSigner(const std::string& signer_name,
77 const std::string& pkcs1_rsa_key);
78
80 bool GenerateSignature(const std::string& message,
81 std::string* signature) override;
82
83 private:
84 RsaRequestSigner(const std::string& signer_name,
85 std::unique_ptr<RsaPrivateKey> rsa_private_key);
86
87 std::unique_ptr<RsaPrivateKey> rsa_private_key_;
88
89 DISALLOW_COPY_AND_ASSIGN(RsaRequestSigner);
90};
91
92} // namespace media
93} // namespace shaka
94
95#endif // PACKAGER_MEDIA_BASE_REQUEST_SIGNER_H_
AesRequestSigner uses AES-CBC signing.
bool GenerateSignature(const std::string &message, std::string *signature) override
RequestSigner implementation override.
static AesRequestSigner * CreateSigner(const std::string &signer_name, const std::vector< uint8_t > &aes_key, const std::vector< uint8_t > &iv)
Abstract class used for signature generation.
virtual bool GenerateSignature(const std::string &message, std::string *signature)=0
RsaRequestSigner uses RSA-PSS signing.
bool GenerateSignature(const std::string &message, std::string *signature) override
RequestSigner implementation override.
static RsaRequestSigner * CreateSigner(const std::string &signer_name, const std::string &pkcs1_rsa_key)
All the methods that are virtual are virtual for mocking.