29#if defined(__linux__) || defined(__CYGWIN__)
41 sts->their_public_key.ready =
true;
48 sts->my_private_key.ready =
true;
57 sts->their_public_ephemeral.ready =
false;
59 sts->my_private_ephemeral.ready =
false;
61 sts->rx_sym_key.ready =
false;
63 sts->tx_sym_key.ready =
false;
102 ctx->rx_sym_key.counter = 0;
103 ctx->rx_sym_key.ready =
true;
110 ctx->tx_sym_key.counter = 0;
111 ctx->tx_sym_key.ready =
true;
120 uint32_t x = (bytes[3] << 24) + (bytes[2] << 16) + (bytes[1] << 8) + bytes[0];
123#if defined(__linux__) || defined(__CYGWIN__)
126#elif defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
130#elif defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
135#pragma message "Please define __BYTE_ORDER__!"
146#if defined(__linux__) || defined(__CYGWIN__)
149#elif defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
153#elif defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
158#pragma message "Error: Please define __BYTE_ORDER__!"
161 bytes[3] = (n >> 24) & 0xFF;
162 bytes[2] = (n >> 16) & 0xFF;
163 bytes[1] = (n >> 8) & 0xFF;
uint32_t rng_wait_and_get(void)
void gec_counter_to_bytes(uint32_t n, uint8_t *bytes)
Convert counter to bytes in network byte order.
void gec_clear_sts(struct gec_sts_ctx *sts)
void gec_sts_init(struct gec_sts_ctx *sts)
void gec_generate_ephemeral_keys(struct gec_privkey *sk)
Generate private and public key pairs for future use.
void gec_derive_key_material(struct gec_sts_ctx *ctx, uint8_t *z)
Derive key material for both sender and receiver.
uint32_t gec_bytes_to_counter(uint8_t *bytes)
Convert from network byte order (big endian) to the machine byte order.
Galois embedded crypto implementation.
unsigned short uint16_t
Typedef defining 16 bit unsigned short type.
unsigned int uint32_t
Typedef defining 32 bit unsigned int type.
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.