7#include <packager/media/base/request_signer.h>
16#include <absl/log/check.h>
17#include <mbedtls/md.h>
19#include <packager/media/base/aes_cryptor.h>
20#include <packager/media/base/aes_encryptor.h>
21#include <packager/media/base/rsa_key.h>
26RequestSigner::RequestSigner(
const std::string& signer_name)
27 : signer_name_(signer_name) {}
28RequestSigner::~RequestSigner() {}
30AesRequestSigner::AesRequestSigner(
const std::string& signer_name,
31 std::unique_ptr<AesCbcEncryptor> encryptor)
32 : RequestSigner(signer_name), aes_cbc_encryptor_(std::move(encryptor)) {
33 DCHECK(aes_cbc_encryptor_);
35AesRequestSigner::~AesRequestSigner() {}
38 const std::string& signer_name,
39 const std::vector<uint8_t>& aes_key,
40 const std::vector<uint8_t>& iv) {
41 std::unique_ptr<AesCbcEncryptor> encryptor(
43 if (!encryptor->InitializeWithIv(aes_key, iv))
48bool AesRequestSigner::GenerateSignature(
const std::string& message,
49 std::string* signature) {
50 const mbedtls_md_info_t* md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA1);
53 std::string hash(mbedtls_md_get_size(md_info), 0);
55 mbedtls_md(md_info,
reinterpret_cast<const uint8_t*
>(message.data()),
56 message.size(),
reinterpret_cast<uint8_t*
>(hash.data())));
58 return aes_cbc_encryptor_->Crypt(hash, signature);
61RsaRequestSigner::RsaRequestSigner(
62 const std::string& signer_name,
63 std::unique_ptr<RsaPrivateKey> rsa_private_key)
64 :
RequestSigner(signer_name), rsa_private_key_(std::move(rsa_private_key)) {
65 DCHECK(rsa_private_key_);
67RsaRequestSigner::~RsaRequestSigner() {}
70 const std::string& signer_name,
71 const std::string& pkcs1_rsa_key) {
72 std::unique_ptr<RsaPrivateKey> rsa_private_key(
80 std::string* signature) {
81 return rsa_private_key_->GenerateSignature(message, signature);
All the methods that are virtual are virtual for mocking.