Lines Matching defs:alg

32 	lws_cose_sig_alg_t *alg = lws_zalloc(sizeof(*alg), __func__);
38 if (!alg)
41 alg->cose_alg = cose_alg;
42 alg->cose_key = ck;
51 alg->keybits = 256;
56 alg->keybits = 384;
61 alg->keybits = 521;
70 if (lws_genhash_init(&alg->hash_ctx, gh))
73 if (lws_genecdsa_create(&alg->u.ecdsactx, cx, lws_ec_curves)) {
79 if (lws_genecdsa_set_key(&alg->u.ecdsactx, ck->e)) {
90 alg->keybits = 64;
94 alg->keybits = 256;
98 alg->keybits = 384;
102 alg->keybits = 512;
110 if (lws_genhmac_init(&alg->u.hmacctx, ghm, ke->buf, ke->len))
133 alg->keybits = (int)ck->e[LWS_GENCRYPTO_RSA_KEYEL_N].len * 8;
135 if (lws_genhash_init(&alg->hash_ctx, gh))
138 if (lws_genrsa_create(&alg->u.rsactx, ck->e, cx,
146 lwsl_warn("%s: unsupported alg %lld\n", __func__,
151 return alg;
154 lws_genec_destroy(&alg->u.ecdsactx);
156 lws_genhash_destroy(&alg->hash_ctx, NULL);
158 lws_free(alg);
163 lws_free(alg);
169 lws_cose_sign_alg_hash(lws_cose_sig_alg_t *alg, const uint8_t *in, size_t in_len)
175 switch (alg->cose_alg) {
181 return lws_genhmac_update(&alg->u.hmacctx, in, in_len);
186 return lws_genhash_update(&alg->hash_ctx, in, in_len);
190 * We fill up alg-> rhash and rhash_len with the results, and destroy the
192 * clean up the alg itself.
196 lws_cose_sign_alg_complete(lws_cose_sig_alg_t *alg)
203 if (alg->completed)
206 switch (alg->cose_alg) {
210 hs = lws_genhash_size(alg->hash_ctx.type);
211 bytes = (unsigned int)lws_gencrypto_bits_to_bytes(alg->keybits);
212 lws_genhash_destroy(&alg->hash_ctx, digest);
213 alg->rhash_len = 0;
214 lwsl_notice("alg keybits %d hs %d\n", (int)alg->keybits, (int)hs);
215 if (!alg->failed &&
216 lws_genecdsa_hash_sign_jws(&alg->u.ecdsactx, digest,
217 alg->hash_ctx.type,
218 (int)alg->keybits, alg->rhash,
220 alg->rhash_len = (int)(2 * bytes);
222 alg->failed = 1;
224 lws_genec_destroy(&alg->u.ecdsactx);
231 alg->rhash_len = (int)lws_genhmac_size(alg->u.hmacctx.type);
232 if (alg->cose_alg == LWSCOSE_WKAHMAC_256_64)
233 alg->rhash_len = 8;
235 if (lws_genhmac_destroy(&alg->u.hmacctx, alg->rhash)) {
244 bytes = (unsigned int)lws_gencrypto_bits_to_bytes(alg->keybits);
245 htype = alg->hash_ctx.type;
247 if (!lws_genhash_destroy(&alg->hash_ctx, digest) &&
248 !alg->failed &&
249 lws_genrsa_hash_sign(&alg->u.rsactx, digest, htype,
250 alg->rhash, bytes) >= 0)
251 alg->rhash_len = (int)bytes;
255 lws_genrsa_destroy(&alg->u.rsactx);
262 alg->completed = 1;