#ifndef CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_ATTESTATION_BROWSER_CRYPTO_UTILITY_H_
#define CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_ATTESTATION_BROWSER_CRYPTO_UTILITY_H_
#include "chrome/browser/enterprise/connectors/device_trust/attestation/common/proto/device_trust_attestation_ca.pb.h"
#include "third_party/boringssl/src/include/openssl/rsa.h"
namespace enterprise_connectors {
namespace CryptoUtility {
bool VerifySignatureUsingHexKey(const std::string& public_key_modulus_hex,
const std::string& data,
const std::string& signature);
bool CreatePubKeyFromHex(const std::string& public_key_modulus_hex,
std::vector<uint8_t>& public_key_info);
bool EncryptWithSeed(const std::string& data,
EncryptedData* encrypted,
std::string& key);
std::string HmacSha512(const std::string& key, const std::string& data);
bool WrapKeyOAEP(const std::string& key,
RSA* wrapping_key,
const std::string& wrapping_key_id,
EncryptedData* output);
bssl::UniquePtr<RSA> GetRSA(const std::string& public_key_modulus_hex);
}
}
#endif