Lines Matching refs:jwe

26 #include "private-lib-jose-jwe.h"
32 lws_jwe_encrypt_rsa_aes_gcm(struct lws_jwe *jwe, char *temp, int *temp_len)
34 int ekbytes = jwe->jose.enc_alg->keybits_fixed / 8;
38 if (jwe->jws.jwk->kty != LWS_GENCRYPTO_KTY_RSA) {
39 lwsl_err("%s: wrong kty %d\n", __func__, jwe->jws.jwk->kty);
46 if (lws_jws_randomize_element(jwe->jws.context, &jwe->jws.map, LJWE_IV,
51 if (lws_jws_alloc_element(&jwe->jws.map, LJWE_ATAG,
58 if (lws_jws_encode_b64_element(&jwe->jws.map_b64, LJWE_JOSE,
60 jwe->jws.map.buf[LJWE_JOSE],
61 jwe->jws.map.len[LJWE_JOSE]))
69 if (!jwe->cek_valid) {
70 if (lws_get_random(jwe->jws.context, jwe->cek, (unsigned int)ekbytes) !=
75 jwe->cek_valid = 1;
78 if (lws_jws_dup_element(&jwe->jws.map, LJWE_EKEY,
80 jwe->cek, (unsigned int)ekbytes, 0))
85 n = lws_jwe_encrypt_gcm(jwe, (uint8_t *)jwe->jws.map.buf[LJWE_EKEY],
86 (uint8_t *)jwe->jws.map_b64.buf[LJWE_JOSE],
87 (int)jwe->jws.map_b64.len[LJWE_JOSE]);
96 if (lws_genrsa_create(&rsactx, jwe->jws.jwk->e, jwe->jws.context,
97 !strcmp(jwe->jose.alg->alg, "RSA-OAEP") ?
105 n = lws_genrsa_public_encrypt(&rsactx, jwe->cek, (unsigned int)ekbytes,
106 (uint8_t *)jwe->jws.map.buf[LJWE_EKEY]);
114 jwe->jws.map.len[LJWE_EKEY] = (unsigned int)n;
116 ret = (int32_t)jwe->jws.map.len[LJWE_CTXT];
124 lws_jwe_auth_and_decrypt_rsa_aes_gcm(struct lws_jwe *jwe)
130 if (jwe->jws.jwk->kty != LWS_GENCRYPTO_KTY_RSA) {
131 lwsl_err("%s: unexpected kty %d\n", __func__, jwe->jws.jwk->kty);
136 if (jwe->jws.map.len[LJWE_EKEY] < 32) {
138 jwe->jws.map.len[LJWE_EKEY]);
145 if (lws_genrsa_create(&rsactx, jwe->jws.jwk->e, jwe->jws.context,
146 !strcmp(jwe->jose.alg->alg, "RSA-OAEP") ?
155 (uint8_t *)jwe->jws.map.buf[LJWE_EKEY],
156 jwe->jws.map.len[LJWE_EKEY], enc_cek,
164 n = lws_jwe_auth_and_decrypt_gcm(jwe, enc_cek,
165 (uint8_t *)jwe->jws.map_b64.buf[LJWE_JOSE],
166 (int)jwe->jws.map_b64.len[LJWE_JOSE]);
176 n = jwe->jws.map.buf[LJWE_CTXT][jwe->jws.map.len[LJWE_CTXT] - 1];
179 jwe->jws.map.len[LJWE_CTXT] -= n;
182 return (int)jwe->jws.map.len[LJWE_CTXT];