22 const uint8_t* key_der_ptr,
35 const CoseEvpKey* key,
36 const uint8_t* kid_ptr,
39 const uint8_t* issuer_ptr,
41 const uint8_t* subject_ptr,
43 const uint8_t* txid_ptr,
45 const uint8_t* payload_ptr,
58 const CoseEvpKey* key,
60 const uint8_t* epoch_begin_ptr,
61 size_t epoch_begin_len,
62 const uint8_t* epoch_end_ptr,
64 const uint8_t* prev_root_ptr,
66 const uint8_t* payload_ptr,
78 const uint8_t* key_der_ptr,
88 const uint8_t* pem_ptr,
size_t pem_len, uint8_t** err_ptr,
size_t* err_len);
95 const uint8_t* pem_ptr,
size_t pem_len, uint8_t** err_ptr,
size_t* err_len);
102 const uint8_t* der_ptr,
size_t der_len, uint8_t** err_ptr,
size_t* err_len);
110 const CoseEvpKey* key,
112 const uint8_t* phdr_cbor_ptr,
113 size_t phdr_cbor_len,
114 const uint8_t* payload_ptr,
116 const uint8_t* sig_ptr,
140 uint8_t* ptr =
nullptr;
144 CoseBuffer() =
default;
145 CoseBuffer(
const CoseBuffer&) =
delete;
146 CoseBuffer& operator=(
const CoseBuffer&) =
delete;
148 CoseBuffer(CoseBuffer&& other) noexcept : ptr(other.ptr), len(other.len)
154 CoseBuffer& operator=(CoseBuffer&& other)
noexcept
194 [[nodiscard]] std::vector<uint8_t> to_vector()
const
196 return {ptr, ptr + len};
199 [[nodiscard]] std::string
to_string()
const
201 if (ptr !=
nullptr && len > 0)
203 return {
reinterpret_cast<const char*
>(ptr), len};
208 [[nodiscard]]
bool is_set()
const
210 return ptr !=
nullptr && len > 0;
220 CoseEvpKey*
key =
nullptr;
222 explicit CoseKey(CoseEvpKey* k) :
key(k) {}
228 static CoseKey from_private(
229 const uint8_t* der_ptr,
size_t der_len, CoseBuffer& err)
236 static CoseKey from_public(
237 const uint8_t* der_ptr,
size_t der_len, CoseBuffer& err)
244 static CoseKey from_pem_public(
245 const uint8_t* pem_ptr,
size_t pem_len, CoseBuffer& err)
252 static CoseKey from_pem_cert(
253 const uint8_t* pem_ptr,
size_t pem_len, CoseBuffer& err)
260 static CoseKey from_der_cert(
261 const uint8_t* der_ptr,
size_t der_len, CoseBuffer& err)
267 CoseKey(
const CoseKey&) =
delete;
268 CoseKey& operator=(
const CoseKey&) =
delete;
270 CoseKey(CoseKey&& other) noexcept :
key(other.key)
275 CoseKey& operator=(CoseKey&& other)
noexcept
300 [[nodiscard]]
const CoseEvpKey* get()
const
305 [[nodiscard]]
bool is_set()
const
307 return key !=
nullptr;
316 const uint8_t* kid_ptr,
319 const uint8_t* issuer_ptr,
321 const uint8_t* subject_ptr,
323 const uint8_t* txid_ptr,
325 const uint8_t* payload_ptr,
330 return ::cose_sign_ledger(
356 const uint8_t* epoch_begin_ptr,
357 size_t epoch_begin_len,
358 const uint8_t* epoch_end_ptr,
359 size_t epoch_end_len,
360 const uint8_t* prev_root_ptr,
361 size_t prev_root_len,
362 const uint8_t* payload_ptr,
367 return ::cose_sign_endorsement(
390 const uint8_t* phdr_cbor_ptr,
391 size_t phdr_cbor_len,
392 const uint8_t* payload_ptr,
394 const uint8_t* sig_ptr,
398 return ::cose_verify1(
int cose_sign_endorsement(const CoseEvpKey *key, int64_t iat, const uint8_t *epoch_begin_ptr, size_t epoch_begin_len, const uint8_t *epoch_end_ptr, size_t epoch_end_len, const uint8_t *prev_root_ptr, size_t prev_root_len, const uint8_t *payload_ptr, size_t payload_len, uint8_t **out_ptr, size_t *out_len, uint8_t **err_ptr, size_t *err_len)
int cose_verify1(const CoseEvpKey *key, int64_t alg, const uint8_t *phdr_cbor_ptr, size_t phdr_cbor_len, const uint8_t *payload_ptr, size_t payload_len, const uint8_t *sig_ptr, size_t sig_len, uint8_t **err_ptr, size_t *err_len)
int cose_sign_ledger(const CoseEvpKey *key, const uint8_t *kid_ptr, size_t kid_len, int64_t iat, const uint8_t *issuer_ptr, size_t issuer_len, const uint8_t *subject_ptr, size_t subject_len, const uint8_t *txid_ptr, size_t txid_len, const uint8_t *payload_ptr, size_t payload_len, uint8_t **out_ptr, size_t *out_len, uint8_t **err_ptr, size_t *err_len)
CoseEvpKey * cose_key_from_der_private(const uint8_t *key_der_ptr, size_t key_der_len, uint8_t **err_ptr, size_t *err_len)
CoseEvpKey * cose_key_from_der_public(const uint8_t *key_der_ptr, size_t key_der_len, uint8_t **err_ptr, size_t *err_len)
CoseEvpKey * cose_key_from_pem_cert(const uint8_t *pem_ptr, size_t pem_len, uint8_t **err_ptr, size_t *err_len)
void cose_key_free(CoseEvpKey *key)
Free a CoseEvpKey.
CoseEvpKey * cose_key_from_pem_public(const uint8_t *pem_ptr, size_t pem_len, uint8_t **err_ptr, size_t *err_len)
void cose_free(uint8_t *ptr, size_t len)
Free a byte buffer or error string allocated by any cose_* call.
CoseEvpKey * cose_key_from_der_cert(const uint8_t *der_ptr, size_t der_len, uint8_t **err_ptr, size_t *err_len)
uint8_t * key
Definition kv_helpers.h:80
std::string to_string(ProductName product)
Definition sev_snp_cpuid.h:93