CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
algo_attr.h
Go to the documentation of this file.
1
29
30#pragma once
31#include <stdbool.h>
32#include <stddef.h>
33#include <stdint.h>
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
46
54
61
63typedef struct {
64 uint8_t algo_id;
65 bool is_rsa;
66 /* ECC variant. */
69 uint8_t import_format;
70 /* RSA variant. */
71 uint16_t rsa_n_bits;
72 uint16_t rsa_e_bits;
75
87
95algo_attr_status_t algo_attr_parse(const uint8_t *bytes, size_t len, algo_attr_t *out);
96
104algo_attr_status_t algo_attr_build(const algo_attr_t *attr, uint8_t *out,
105 size_t out_cap, size_t *out_len);
106
115 algo_attr_role_t role);
116
126 bool rsa_supported);
127
128#ifdef __cplusplus
129}
130#endif
131
algo_attr_status_t algo_attr_validate_role(const algo_attr_t *attr, algo_attr_role_t role)
Check whether the parsed attribute is compatible with the key role it will be installed into.
algo_attr_status_t algo_attr_parse(const uint8_t *bytes, size_t len, algo_attr_t *out)
Parse a raw algorithm-attribute byte sequence into structured form.
Definition algo_attr.cpp:53
algo_attr_status_t algo_attr_validate_capability(const algo_attr_t *attr, bool rsa_supported)
Check whether the badge's secure element / mbedTLS combination can actually execute this algorithm.
algo_attr_role_t
Key role (selects which DO tag is being parsed / built).
Definition algo_attr.h:56
@ ALGO_ATTR_ROLE_AUT
Definition algo_attr.h:59
@ ALGO_ATTR_ROLE_DEC
Definition algo_attr.h:58
@ ALGO_ATTR_ROLE_SIG
Definition algo_attr.h:57
algo_attr_status_t algo_attr_build(const algo_attr_t *attr, uint8_t *out, size_t out_cap, size_t *out_len)
Serialise an algorithm-attribute structure to bytes.
Definition algo_attr.cpp:86
algo_attr_curve_t
Curves the firmware recognises. UNKNOWN flags unsupported OIDs.
Definition algo_attr.h:48
@ ALGO_ATTR_CURVE_X25519
Definition algo_attr.h:52
@ ALGO_ATTR_CURVE_P256
Definition algo_attr.h:50
@ ALGO_ATTR_CURVE_UNKNOWN
Definition algo_attr.h:49
@ ALGO_ATTR_CURVE_ED25519
Definition algo_attr.h:51
algo_attr_status_t
Outcome of algo-attribute operations.
Definition algo_attr.h:77
@ ALGO_ATTR_ERR_BAD_CURVE
Definition algo_attr.h:81
@ ALGO_ATTR_ERR_BAD_ALGO
Definition algo_attr.h:80
@ ALGO_ATTR_ERR_BUF_TOO_SMALL
Definition algo_attr.h:84
@ ALGO_ATTR_OK
Definition algo_attr.h:78
@ ALGO_ATTR_ERR_NULL
Definition algo_attr.h:85
@ ALGO_ATTR_ERR_TOO_SHORT
Definition algo_attr.h:79
@ ALGO_ATTR_ERR_BAD_RSA
Definition algo_attr.h:82
@ ALGO_ATTR_ERR_ROLE_MISMATCH
Definition algo_attr.h:83
algo_attr_algo_id_t
OpenPGP algorithm-attribute codec.
Definition algo_attr.h:40
@ ALGO_ATTR_ID_ECDH
Definition algo_attr.h:42
@ ALGO_ATTR_ID_ECDSA
Definition algo_attr.h:43
@ ALGO_ATTR_ID_RSA
Definition algo_attr.h:41
@ ALGO_ATTR_ID_EDDSA
Definition algo_attr.h:44
Parsed algorithm-attribute payload.
Definition algo_attr.h:63
uint16_t rsa_n_bits
Definition algo_attr.h:71
bool has_import_format
Definition algo_attr.h:68
algo_attr_curve_t curve
Definition algo_attr.h:67
uint16_t rsa_e_bits
Definition algo_attr.h:72
uint8_t import_format
Definition algo_attr.h:69
uint8_t rsa_import_fmt
Definition algo_attr.h:73
bool is_rsa
Definition algo_attr.h:65
uint8_t algo_id
Definition algo_attr.h:64