5 #include "sw/device/silicon_creator/lib/cert/template.h"
9 static const char kLowercaseHexChars[16] = {
'0',
'1',
'2',
'3',
'4',
'5',
10 '6',
'7',
'8',
'9',
'a',
'b',
13 uint8_t *template_push_hex_impl(uint8_t *out,
const uint8_t *bytes,
16 *out++ = (uint8_t)kLowercaseHexChars[bytes[0] >> 4];
17 *out++ = (uint8_t)kLowercaseHexChars[bytes[0] & 0xf];
24 uint8_t *template_asn1_integer_impl(uint8_t *out, uint8_t tag,
bool tweak_msb,
25 const uint8_t *bytes_be,
size_t size) {
27 uint8_t *size_ptr = out++;
31 while (size > 0 && *bytes_be == 0) {
35 if (size == 0 || *bytes_be > 0x7f) {
39 memcpy(out, bytes_be, size);
43 *size_ptr = (uint8_t)(out - size_ptr) - 1;
47 void template_patch_size_be_impl(template_pos_t memo, uint8_t *out_end) {
48 *(uint16_t *)memo = __builtin_bswap16(__builtin_bswap16(*(uint16_t *)memo) +
49 (uint16_t)(out_end - (uint8_t *)memo));