Safe Communication Framework 0.1.0 build feea4f9
ERTMS/ETCS safe communication (Subset-037 EuroRadio, Subset-098 RBC/RBC), CENELEC EN 50128 SIL 4 oriented
Loading...
Searching...
No Matches
mac.h
Go to the documentation of this file.
1
21#ifndef SAFECOMM_MAC_H
22#define SAFECOMM_MAC_H
23
24#include <stddef.h>
25#include <stdint.h>
26
27#include "safecomm/status.h"
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
34#define SAFECOMM_MAC_KEY_LEN 24U
36#define SAFECOMM_MAC_LEN 8U
38#define SAFECOMM_MAC_RAND_LEN 8U
39
45
52
69 const uint8_t ra[SAFECOMM_MAC_RAND_LEN],
70 const uint8_t rb[SAFECOMM_MAC_RAND_LEN],
71 safecomm_mac_ctx_t *out_ctx);
72
84 const uint8_t *msg, size_t msg_len,
85 uint8_t out_mac[SAFECOMM_MAC_LEN]);
86
100 const uint8_t *msg, size_t msg_len,
101 const uint8_t rx_mac[SAFECOMM_MAC_LEN]);
102
103#ifdef __cplusplus
104}
105#endif
106
107#endif /* SAFECOMM_MAC_H */
#define SAFECOMM_MAC_LEN
Definition mac.h:36
#define SAFECOMM_MAC_RAND_LEN
Definition mac.h:38
#define SAFECOMM_MAC_KEY_LEN
Definition mac.h:34
safecomm_status_t safecomm_mac_derive_ksmac(const uint8_t kmac[SAFECOMM_MAC_KEY_LEN], const uint8_t ra[SAFECOMM_MAC_RAND_LEN], const uint8_t rb[SAFECOMM_MAC_RAND_LEN], safecomm_mac_ctx_t *out_ctx)
Derive the session key KSMAC from KMAC and the AU random values.
Definition mac.c:267
safecomm_mac_alg_t
MAC algorithm selector (only 3DES today; reserved for growth).
Definition mac.h:42
@ SAFECOMM_MAC_ALG_3DES_SS037
Definition mac.h:43
safecomm_status_t safecomm_mac_compute(const safecomm_mac_ctx_t *ctx, const uint8_t *msg, size_t msg_len, uint8_t out_mac[SAFECOMM_MAC_LEN])
Compute the 8-byte EuroRadio MAC over msg.
Definition mac.c:300
safecomm_status_t safecomm_mac_verify(const safecomm_mac_ctx_t *ctx, const uint8_t *msg, size_t msg_len, const uint8_t rx_mac[SAFECOMM_MAC_LEN])
Constant-time verify of a received MAC against a freshly computed one.
Definition mac.c:355
Common status codes for the Safe Communication Framework.
safecomm_status_t
Result of a Safe Communication Framework operation.
Definition status.h:17
Immutable session-key material for one SaF connection.
Definition mac.h:48
uint8_t ksmac[SAFECOMM_MAC_KEY_LEN]
Definition mac.h:49
safecomm_mac_alg_t alg
Definition mac.h:50