XenevaOS
Loading...
Searching...
No Matches
crypto.h
Go to the documentation of this file.
1
30#ifndef __BT_CRYPTO_H__
31#define __BT_CRYPTO_H__
32
33#include <stdint.h>
34#include <stddef.h>
35
36void bt_aes_encrypt(const uint8_t key[16], const uint8_t in[16], uint8_t out[16]);
37void bt_cmac(const uint8_t key[16], const uint8_t* msg, size_t len, uint8_t mac[16]);
38
39/* SMP inputs are little-endian on the air (first octet is least significant). */
40void bt_e(const uint8_t k[16], uint8_t r[16]);
41void bt_c1(const uint8_t k[16], const uint8_t r[16], const uint8_t preq[7], const uint8_t pres[7],
42 uint8_t iat, const uint8_t ia[6], uint8_t rat, const uint8_t ra[6], uint8_t res[16]);
43void bt_s1(const uint8_t k[16], const uint8_t r1[16], const uint8_t r2[16], uint8_t out[16]);
44void bt_ah(const uint8_t irk[16], const uint8_t r[3], uint8_t out[3]);
45void bt_f4(const uint8_t u[32], const uint8_t v[32], const uint8_t x[16], uint8_t z, uint8_t res[16]);
46void bt_f5(const uint8_t w[32], const uint8_t n1[16], const uint8_t n2[16], const uint8_t a1[7],
47 const uint8_t a2[7], uint8_t mackey[16], uint8_t ltk[16]);
48void bt_f6(const uint8_t w[16], const uint8_t n1[16], const uint8_t n2[16], const uint8_t r[16],
49 const uint8_t io_cap[3], const uint8_t a1[7], const uint8_t a2[7], uint8_t res[16]);
50uint32_t bt_g2(const uint8_t u[32], const uint8_t v[32], const uint8_t x[16], const uint8_t y[16]);
51
52/* Scalar and coordinates are big-endian (first octet is most significant). */
53int bt_p256_mul_g(const uint8_t scalar[32], uint8_t x[32], uint8_t y[32]);
54int bt_p256_dh(const uint8_t scalar[32], const uint8_t px[32], const uint8_t py[32], uint8_t outx[32]);
55
56void bt_rev(const uint8_t* in, uint8_t* out, size_t n);
57
58#endif
int bt_p256_mul_g(const uint8_t scalar[32], uint8_t x[32], uint8_t y[32])
Definition crypto.c:604
void bt_aes_encrypt(const uint8_t key[16], const uint8_t in[16], uint8_t out[16])
Definition crypto.c:63
void bt_f6(const uint8_t w[16], const uint8_t n1[16], const uint8_t n2[16], const uint8_t r[16], const uint8_t io_cap[3], const uint8_t a1[7], const uint8_t a2[7], uint8_t res[16])
Definition crypto.c:272
void bt_cmac(const uint8_t key[16], const uint8_t *msg, size_t len, uint8_t mac[16])
Definition crypto.c:136
void bt_f4(const uint8_t u[32], const uint8_t v[32], const uint8_t x[16], uint8_t z, uint8_t res[16])
Definition crypto.c:244
void bt_s1(const uint8_t k[16], const uint8_t r1[16], const uint8_t r2[16], uint8_t out[16])
Definition crypto.c:220
void bt_c1(const uint8_t k[16], const uint8_t r[16], const uint8_t preq[7], const uint8_t pres[7], uint8_t iat, const uint8_t ia[6], uint8_t rat, const uint8_t ra[6], uint8_t res[16])
Definition crypto.c:203
void bt_f5(const uint8_t w[32], const uint8_t n1[16], const uint8_t n2[16], const uint8_t a1[7], const uint8_t a2[7], uint8_t mackey[16], uint8_t ltk[16])
Definition crypto.c:252
uint32_t bt_g2(const uint8_t u[32], const uint8_t v[32], const uint8_t x[16], const uint8_t y[16])
Definition crypto.c:284
int bt_p256_dh(const uint8_t scalar[32], const uint8_t px[32], const uint8_t py[32], uint8_t outx[32])
Definition crypto.c:617
void bt_ah(const uint8_t irk[16], const uint8_t r[3], uint8_t out[3])
Definition crypto.c:226
void bt_e(const uint8_t k[16], uint8_t r[16])
Definition crypto.c:189
void bt_rev(const uint8_t *in, uint8_t *out, size_t n)
Definition crypto.c:53
uint8_t mac[6]
Definition main.cpp:127
#define out(...)
Definition main.cpp:65
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
size_t len
Definition initial.c:23