Lines Matching refs:ck
36 struct lws_cose_key *ck;
83 lws_cose_key_dump(const struct lws_cose_key *ck)
93 switch (ck->gencrypto_kty) {
109 lwsl_err("%s: jwk %p: unknown type\n", __func__, ck);
114 lwsl_cose("%s: cose_key %p, kty: %lld (gc %d)\n", __func__, ck,
115 (long long)ck->kty, ck->gencrypto_kty);
118 if (ck->meta[n].buf) {
119 lws_hex_from_byte_array(ck->meta[n].buf, ck->meta[n].len,
126 if (ck->e[n].buf) {
127 lws_hex_from_byte_array(ck->e[n].buf, ck->e[n].len,
244 e->buf = lws_malloc(len + 1, "ck");
322 if (cps->ck)
328 cps->ck = lws_zalloc(sizeof(*cps->ck), __func__);
329 if (!cps->ck)
337 lws_dll2_add_tail(&cps->ck->list, cps->pkey_set);
343 cps->per_key_cb(cps->ck, cps->user);
368 assert(cps->ck);
369 cps->ck->kty = (int)ctx->item.u.u64;
374 cps->ck->gencrypto_kty =
380 cps->ck->gencrypto_kty =
385 cps->ck->gencrypto_kty =
390 cps->ck->gencrypto_kty =
402 ke = &cps->ck->meta[COSEKEY_META_KTY];
413 cps->ck->cose_alg = (int)ctx->item.u.u64;
432 cps->ck->cose_curve = (int)ctx->item.u.u64;
433 p = lws_cose_curve_id_to_name(cps->ck->cose_curve);
435 ke = &cps->ck->e[LWS_GENCRYPTO_EC_KEYEL_CRV];
494 switch (cps->ck->kty) {
619 if (cps->ck->e[cps->gencrypto_eidx].buf) {
622 cps->ck->e[cps->gencrypto_eidx].len);
645 /* we have the key element data, let's make the ck element */
648 if (cps->ck->e[cps->gencrypto_eidx].buf)
651 lws_ck_set_el(&cps->ck->e[cps->gencrypto_eidx],
659 lws_ck_set_el(&cps->ck->meta[cps->meta_idx],
667 cps->ck->cose_curve = lws_cose_curve_name_to_id(ctx->buf);
668 ke = &cps->ck->e[LWS_GENCRYPTO_EC_KEYEL_CRV];
683 cps->ck->cose_alg = wk_alg_indexes[n];
692 ke = &cps->ck->meta[COSEKEY_META_ALG];
707 lws_cose_key_destroy(&cps->ck);
737 struct lws_cose_key *ck = *pck;
739 if (!ck)
742 lws_dll2_remove(&ck->list);
744 lws_cose_key_destroy_elements(ck->e, LWS_ARRAY_SIZE(ck->e));
745 lws_cose_key_destroy_elements(ck->meta, LWS_ARRAY_SIZE(ck->meta));
753 lws_cose_key_t *ck = lws_container_of(d, lws_cose_key_t, list);
756 lws_cose_key_destroy(&ck);
771 lws_cose_key_t *ck = lws_container_of(p, lws_cose_key_t, list);
772 struct lws_gencrypto_keyelem *ke = &ck->meta[COSEKEY_META_KID];
775 return ck;
779 return ck;
792 lws_cose_key_t *ck;
796 ck = lws_zalloc(sizeof(*ck), __func__);
797 if (!ck)
800 ck->kty = cose_kty;
801 ck->private_key = 1;
809 ke = &ck->meta[COSEKEY_META_KEY_OPS];
821 ke = &ck->meta[COSEKEY_META_KID];
833 ck->gencrypto_kty = LWS_GENCRYPTO_KTY_RSA;
839 ck->e, bits);
850 ck->gencrypto_kty = LWS_GENCRYPTO_KTY_OCT;
852 ke = &ck->e[LWS_GENCRYPTO_OCT_KEYEL_K];
868 ck->gencrypto_kty = LWS_GENCRYPTO_KTY_EC;
883 n = lws_genecdsa_new_keypair(&ctx, curve, ck->e);
890 ck->e[LWS_GENCRYPTO_EC_KEYEL_CRV].len = (uint32_t)strlen(curve);
899 return ck;
902 lws_free_set_NULL(ck);
934 switch (cps.ck->gencrypto_kty) {
942 return cps.ck;
945 lws_cose_key_destroy(&cps.ck);
978 lws_cose_key_export(lws_cose_key_t *ck, lws_lec_pctx_t *ctx, int flags)
990 switch (ck->gencrypto_kty) {
1015 for (n = 0; n < (int)LWS_ARRAY_SIZE(ck->e); n++)
1016 if ((ctx->opaque[2] & (1 << n)) && ck->e[n].buf)
1025 if (ck->meta[COSEKEY_META_KID].buf)
1027 if (ck->meta[COSEKEY_META_ALG].buf)
1029 if (ck->meta[COSEKEY_META_KEY_OPS].buf)
1031 if (ck->meta[COSEKEY_META_BASE_IV].buf)
1036 lws_lec_signed(ctx, (int64_t)ck->kty);
1038 if (ck->gencrypto_kty == LWS_GENCRYPTO_KTY_EC) {
1040 &ck->e[LWS_GENCRYPTO_EC_KEYEL_CRV];
1043 ck->e[LWS_GENCRYPTO_EC_KEYEL_CRV].len > 10) {
1072 if (ctx->opaque[1] == LWS_ARRAY_SIZE(ck->e) +
1079 if (ck->gencrypto_kty != LWS_GENCRYPTO_KTY_EC ||
1084 ck->e[n].buf && ck->e[n].len) {
1085 ke = &ck->e[n];
1086 cose_key_param = ckp[ck->gencrypto_kty - 1][n];
1094 if (ck->meta[COSEKEY_META_KID].buf) {
1095 ke = &ck->meta[COSEKEY_META_KID];
1102 if (ck->meta[COSEKEY_META_ALG].buf) {
1103 ke = &ck->meta[COSEKEY_META_ALG];
1109 if (!ck->meta[COSEKEY_META_KEY_OPS].buf)
1111 ke = &ck->meta[COSEKEY_META_KEY_OPS];
1131 if (ck->meta[COSEKEY_META_BASE_IV].buf) {
1132 ke = &ck->meta[COSEKEY_META_BASE_IV];