Lines Matching refs:ctx
305 cb_cose_key(struct lecp_ctx *ctx, char reason)
308 (struct lws_cose_key_parse_state *)ctx->user;
316 ctx->path, ctx->st[ctx->sp - 1].ordinal,
317 ctx->pst[ctx->pst_sp].ppos);
326 if (cps->pkey_set && ctx->pst[ctx->pst_sp].ppos == 2) {
341 if (cps->pkey_set && ctx->pst[ctx->pst_sp].ppos == 2) {
347 if (ctx->item.u.u64 != LWSCOAP_CONTENTFORMAT_COSE_KEY) {
355 if (!ctx->sp) {
357 __func__, ctx->sp, ctx->pst[ctx->sp].ppos);
361 if (!lecp_parse_map_is_key(ctx)) {
369 cps->ck->kty = (int)ctx->item.u.u64;
372 switch (ctx->item.u.u64) {
413 cps->ck->cose_alg = (int)ctx->item.u.u64;
417 (ctx->pst[ctx->sp].ppos != 3 ||
418 strcmp(ctx->path, ".[]"))) {
424 (ctx->pst[ctx->sp].ppos != 5 ||
425 strcmp(ctx->path, "[].[]"))) {
432 cps->ck->cose_curve = (int)ctx->item.u.u64;
460 cps->cose_state = (int)ctx->item.u.u64;
474 switch ((int)ctx->item.u.u64) {
496 switch ((int)ctx->item.u.u64) {
513 switch ((int)ctx->item.u.u64) {
534 switch ((int)ctx->item.u.u64) {
588 if (ctx->item.u.i64 != -1 &&
589 ctx->item.u.u64 != LWSCOSE_WKSYMKP_KEY_VALUE)
603 if (!ctx->sp || !(ctx->st[ctx->sp - 1].ordinal & 1)) {
635 if (cps->pos + ctx->npos > sizeof(cps->buf)) {
639 memcpy(cps->buf + cps->pos, ctx->buf, ctx->npos);
640 cps->pos += ctx->npos;
667 cps->ck->cose_curve = lws_cose_curve_name_to_id(ctx->buf);
669 ke->len = ctx->npos;
670 ke->buf = lws_malloc(ctx->npos, __func__);
673 memcpy(ke->buf, ctx->buf, ctx->npos);
676 if (!lecp_parse_map_is_key(ctx) &&
681 if (ctx->npos == strlen(wk_algs[n]) &&
682 !memcmp(ctx->buf, wk_algs[n], ctx->npos)) {
690 __func__, (int)ctx->npos, ctx->buf);
693 ke->len = ctx->npos;
694 ke->buf = lws_malloc(ctx->npos, __func__);
697 memcpy(ke->buf, ctx->buf, ctx->npos);
830 struct lws_genrsa_ctx ctx;
832 memset(&ctx, 0, sizeof(ctx));
837 n = lws_genrsa_new_keypair(context, &ctx,
840 lws_genrsa_destroy(&ctx);
866 struct lws_genec_ctx ctx;
876 if (lws_genecdsa_create(&ctx, context, NULL))
879 ctx.genec_alg = LEGENEC_ECDSA;
883 n = lws_genecdsa_new_keypair(&ctx, curve, ck->e);
884 lws_genec_destroy(&ctx);
912 struct lecp_ctx ctx;
922 lecp_construct(&ctx, cb_cose_key, &cps, NULL, 0);
923 m = lecp_parse(&ctx, in, len);
924 lecp_destruct(&ctx);
978 lws_cose_key_export(lws_cose_key_t *ck, lws_lec_pctx_t *ctx, int flags)
983 if (!ctx->opaque[0]) {
985 ctx->opaque[0] = 1; /* map pair count */
986 ctx->opaque[1] = 1; /* element index */
987 ctx->opaque[2] = 0; /* public mask */
988 ctx->opaque[3] = 0; /* doing AGAIN */
993 ctx->opaque[2] = 1 << LWS_GENCRYPTO_OCT_KEYEL_K;
996 ctx->opaque[2] = 1 << LWS_GENCRYPTO_RSA_KEYEL_E;
999 ctx->opaque[2] = (1 << LWS_GENCRYPTO_EC_KEYEL_X) |
1007 ctx->opaque[2] = 0xffff;
1016 if ((ctx->opaque[2] & (1 << n)) && ck->e[n].buf)
1017 ctx->opaque[0]++;
1026 ctx->opaque[0]++;
1028 ctx->opaque[0]++;
1030 ctx->opaque[0]++;
1032 ctx->opaque[0]++;
1034 lws_lec_int(ctx, LWS_CBOR_MAJTYP_MAP, 0, (uint64_t)ctx->opaque[0]);
1035 lws_lec_signed(ctx, LWSCOSE_WKK_KTY);
1036 lws_lec_signed(ctx, (int64_t)ck->kty);
1049 lws_lec_signed(ctx, LWSCOSE_WKECKP_CRV);
1051 lws_lec_signed(ctx, pa);
1053 lws_lec_printf(ctx, "%.*s",
1058 ctx->opaque[1] = COSEKEY_META_KID;
1065 while (ctx->buf != ctx->end) {
1069 if (lws_lec_scratch(ctx))
1072 if (ctx->opaque[1] == LWS_ARRAY_SIZE(ck->e) +
1076 if (ctx->opaque[1] >= LWS_COUNT_COSE_KEY_ELEMENTS) {
1077 n = ctx->opaque[1] - LWS_COUNT_COSE_KEY_ELEMENTS;
1083 if ((ctx->opaque[2] & (1 << n)) &&
1091 switch (ctx->opaque[1]) {
1122 lws_lec_signed(ctx, LWSCOSE_WKK_KEY_OPS);
1123 lws_lec_int(ctx, LWS_CBOR_MAJTYP_ARRAY, 0, (uint64_t)n);
1124 memcpy(&ctx->scratch[ctx->scratch_len], ke->buf,
1126 ctx->scratch_len = (uint8_t)(ctx->scratch_len + (uint8_t)n);
1143 if (!ctx->opaque[3])
1144 lws_lec_signed(ctx, cose_key_param);
1147 if (ctx->opaque[1] == COSEKEY_META_KID ||
1148 ctx->opaque[1] == COSEKEY_META_BASE_IV ||
1149 ctx->opaque[1] >= LWS_COUNT_COSE_KEY_ELEMENTS)
1150 n = (int)lws_lec_printf(ctx, "%.*b",
1153 n = (int)lws_lec_printf(ctx, "%.*s",
1158 ctx->opaque[3] = 1;
1169 ctx->opaque[1]++;
1170 ctx->opaque[3] = 0;
1173 ctx->used = lws_ptr_diff_size_t(ctx->buf, ctx->start);
1175 if (ctx->buf == ctx->end || ctx->scratch_len)
1178 ctx->opaque[0] = 0;
1185 ctx->opaque[0] = 0;