Lines Matching refs:jwk

473 lws_x509_public_to_jwk(struct lws_jwk *jwk, struct lws_x509_cert *x509,
486 memset(jwk, 0, sizeof(*jwk));
520 jwk->kty = LWS_GENCRYPTO_KTY_EC;
550 EC_GROUP_get_curve_name(ecgroup), jwk))
578 jwk->kty = LWS_GENCRYPTO_KTY_RSA;
616 jwk->e[n].len = (unsigned int)BN_num_bytes(mpi[n]);
617 jwk->e[n].buf = lws_malloc(jwk->e[n].len, "certkeyimp");
618 if (!jwk->e[n].buf) {
625 BN_bn2bin(mpi[n], jwk->e[n].buf);
644 /* jwk destroy will clean any partial state */
646 lws_jwk_destroy(jwk);
666 lws_x509_jwk_privkey_pem(struct lws_context *cx, struct lws_jwk *jwk,
689 /* confirm the key type matches the existing jwk situation */
691 switch (jwk->kty) {
694 lwsl_err("%s: jwk is EC but privkey isn't\n", __func__);
710 if (jwk->e[LWS_GENCRYPTO_EC_KEYEL_Y].len != (uint32_t)n) {
711 lwsl_err("%s: jwk key size doesn't match\n", __func__);
718 jwk->e[LWS_GENCRYPTO_EC_KEYEL_D].len = (unsigned int)n;
719 jwk->e[LWS_GENCRYPTO_EC_KEYEL_D].buf = lws_malloc((unsigned int)n, "ec");
720 if (!jwk->e[LWS_GENCRYPTO_EC_KEYEL_D].buf)
723 m = BN_bn2binpad(cmpi, jwk->e[LWS_GENCRYPTO_EC_KEYEL_D].buf,
724 (int32_t)jwk->e[LWS_GENCRYPTO_EC_KEYEL_D].len);
732 lwsl_err("%s: RSA jwk, non-RSA privkey\n", __func__);
760 if (jwk->e[LWS_GENCRYPTO_RSA_KEYEL_N].len != (uint32_t)n) {
761 lwsl_err("%s: jwk key size doesn't match\n", __func__);
768 dummy[2] = BN_bin2bn(jwk->e[LWS_GENCRYPTO_RSA_KEYEL_N].buf,
769 (int32_t)jwk->e[LWS_GENCRYPTO_RSA_KEYEL_N].len,
771 dummy[3] = BN_bin2bn(jwk->e[LWS_GENCRYPTO_RSA_KEYEL_E].buf,
772 (int32_t)jwk->e[LWS_GENCRYPTO_RSA_KEYEL_E].len,
779 lwsl_err("%s: privkey doesn't match jwk pubkey\n",
787 jwk->e[LWS_GENCRYPTO_RSA_KEYEL_D].len = (unsigned int)n;
788 jwk->e[LWS_GENCRYPTO_RSA_KEYEL_D].buf = lws_malloc((unsigned int)n, "privjk");
789 if (!jwk->e[LWS_GENCRYPTO_RSA_KEYEL_D].buf)
792 BN_bn2bin(mpi, jwk->e[LWS_GENCRYPTO_RSA_KEYEL_D].buf);
796 jwk->e[LWS_GENCRYPTO_RSA_KEYEL_P].len = (unsigned int)BN_num_bytes(dummy[4]);
797 jwk->e[LWS_GENCRYPTO_RSA_KEYEL_P].buf = lws_malloc((unsigned int)n, "privjk");
798 if (!jwk->e[LWS_GENCRYPTO_RSA_KEYEL_P].buf) {
799 lws_free_set_NULL(jwk->e[LWS_GENCRYPTO_RSA_KEYEL_D].buf);
802 BN_bn2bin(dummy[4], jwk->e[LWS_GENCRYPTO_RSA_KEYEL_P].buf);
804 jwk->e[LWS_GENCRYPTO_RSA_KEYEL_Q].len = (unsigned int)BN_num_bytes(dummy[5]);
805 jwk->e[LWS_GENCRYPTO_RSA_KEYEL_Q].buf = lws_malloc((unsigned int)n, "privjk");
806 if (!jwk->e[LWS_GENCRYPTO_RSA_KEYEL_Q].buf) {
807 lws_free_set_NULL(jwk->e[LWS_GENCRYPTO_RSA_KEYEL_D].buf);
808 lws_free_set_NULL(jwk->e[LWS_GENCRYPTO_RSA_KEYEL_P].buf);
811 BN_bn2bin(dummy[5], jwk->e[LWS_GENCRYPTO_RSA_KEYEL_Q].buf);
814 lwsl_err("%s: JWK has unknown kty %d\n", __func__, jwk->kty);
821 if (jwk->kty == LWS_GENCRYPTO_KTY_EC)