33#define LWS_JWE_RFC3394_OVERHEAD_BYTES 8
34#define LWS_JWE_AES_IV_BYTES 16
36#define LWS_JWE_LIMIT_RSA_KEY_BITS 4096
37#define LWS_JWE_LIMIT_AES_KEY_BITS (512 + 64)
38#define LWS_JWE_LIMIT_EC_KEY_BITS 528
39#define LWS_JWE_LIMIT_HASH_BITS (LWS_GENHASH_LARGEST * 8)
42#define LWS_JWE_LIMIT_KEY_ELEMENT_BYTES (LWS_JWE_LIMIT_RSA_KEY_BITS / 8)
54 uint8_t cek[LWS_JWE_LIMIT_KEY_ELEMENT_BYTES];
55 unsigned int cek_valid:1;
60LWS_VISIBLE LWS_EXTERN
void
61lws_jwe_init(
struct lws_jwe *jwe,
struct lws_context *context);
63LWS_VISIBLE LWS_EXTERN
void
64lws_jwe_destroy(
struct lws_jwe *jwe);
66LWS_VISIBLE LWS_EXTERN
void
67lws_jwe_be64(uint64_t c, uint8_t *p8);
79LWS_VISIBLE LWS_EXTERN
int
80lws_jwe_render_compact(
struct lws_jwe *jwe,
char *out,
size_t out_len);
83lws_jwe_render_flattened(
struct lws_jwe *jwe,
char *out,
size_t out_len);
85LWS_VISIBLE LWS_EXTERN
int
86lws_jwe_json_parse(
struct lws_jwe *jwe,
const uint8_t *buf,
int len,
87 char *temp,
int *temp_len);
112LWS_VISIBLE LWS_EXTERN
int
113lws_jwe_auth_and_decrypt(
struct lws_jwe *jwe,
char *temp,
int *temp_len);
128LWS_VISIBLE LWS_EXTERN
int
129lws_jwe_encrypt(
struct lws_jwe *jwe,
char *temp,
int *temp_len);
150LWS_VISIBLE LWS_EXTERN
int
151lws_jwe_create_packet(
struct lws_jwe *jwe,
152 const char *payload,
size_t len,
const char *nonce,
153 char *out,
size_t out_len,
struct lws_context *context);
157LWS_VISIBLE LWS_EXTERN
int
158lws_jwe_auth_and_decrypt_cbc_hs(
struct lws_jwe *jwe, uint8_t *enc_cek,
159 uint8_t *aad,
int aad_len);
162LWS_VISIBLE LWS_EXTERN
int
163lws_jwa_concat_kdf(
struct lws_jwe *jwe,
int direct,
164 uint8_t *out,
const uint8_t *shared_secret,
int sslen);
Definition: lws-jose.h:116