CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
GpgStorage.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <cstddef>
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10void gpg_storage_set_slot_range(uint16_t eccStart, uint16_t eccEnd);
11void gpg_storage_set_rmem_range(uint16_t rmemStart, uint16_t rmemEnd);
12bool gpg_storage_ready(void);
13uint8_t gpg_storage_sig_slot(void);
14uint8_t gpg_storage_dec_slot(void);
15uint8_t gpg_storage_aut_slot(void);
16
23bool gpg_storage_save_dec_privkey(const uint8_t* privkey, const char* pin);
24
31bool gpg_storage_load_dec_privkey(uint8_t* privkey_out, const char* pin);
32
35
38
46bool gpg_storage_save_aes_key(const uint8_t* key, size_t key_len, const char* pin);
47
55bool gpg_storage_load_aes_key(uint8_t* key_out, size_t* key_len_out, const char* pin);
56
59
62
68bool gpg_storage_get_session_key(uint8_t* key_out);
69
74void gpg_storage_set_session_pin(const char* pin);
75
78
79#ifdef __cplusplus
80}
81#endif
bool gpg_storage_save_aes_key(const uint8_t *key, size_t key_len, const char *pin)
Saves the symmetric AES key for PSO:DECIPHER (DO 0xD5).
void gpg_storage_set_rmem_range(uint16_t rmemStart, uint16_t rmemEnd)
bool gpg_storage_delete_dec_privkey(void)
Deletes DEC private key record.
uint8_t gpg_storage_dec_slot(void)
bool gpg_storage_ready(void)
bool gpg_storage_save_dec_privkey(const uint8_t *privkey, const char *pin)
Saves a DEC private key into R-Memory using PIN-bound AES-GCM.
void gpg_storage_set_session_pin(const char *pin)
Stores session PIN-derived key after successful PIN verification.
bool gpg_storage_load_aes_key(uint8_t *key_out, size_t *key_len_out, const char *pin)
Loads the symmetric AES key from R-Memory.
bool gpg_storage_load_dec_privkey(uint8_t *privkey_out, const char *pin)
Loads and decrypts the DEC private key from R-Memory.
uint8_t gpg_storage_aut_slot(void)
void gpg_storage_clear_session(void)
Clears the cached session key.
uint8_t gpg_storage_sig_slot(void)
void gpg_storage_set_slot_range(uint16_t eccStart, uint16_t eccEnd)
bool gpg_storage_delete_aes_key(void)
Deletes the symmetric AES key record.
bool gpg_storage_has_dec_privkey(void)
Returns true if encrypted DEC private key record exists.
bool gpg_storage_get_session_key(uint8_t *key_out)
Returns current session key if session is active.
bool gpg_storage_has_aes_key(void)
Returns true if a symmetric AES key record exists.