Rhonabwy
Create, modify, parse or export Json Web Keys as defined in the RFC 7517
rhonabwy.h
Go to the documentation of this file.
1 
25 #ifndef __RHONABWY_H_
26 #define __RHONABWY_H_
27 
28 #ifdef __cplusplus
29 extern "C"
30 {
31 #endif
32 
33 #include "rhonabwy-cfg.h"
34 
35 #include <jansson.h>
36 #include <gnutls/gnutls.h>
37 #include <nettle/version.h>
38 
39 #define RHN_BEGIN_CERT_TAG "-----BEGIN CERTIFICATE-----"
40 
47 #define RHN_OK 0
48 #define RHN_ERROR 1
49 #define RHN_ERROR_MEMORY 2
50 #define RHN_ERROR_PARAM 3
51 #define RHN_ERROR_UNSUPPORTED 4
52 #define RHN_ERROR_INVALID 5
53 
54 #define R_X509_TYPE_PUBKEY 1
55 #define R_X509_TYPE_PRIVKEY 2
56 #define R_X509_TYPE_CERTIFICATE 3
57 
58 #define R_FORMAT_PEM 0
59 #define R_FORMAT_DER 1
60 
61 #define R_KEY_TYPE_NONE 0x00000000
62 #define R_KEY_TYPE_PUBLIC 0x00000001
63 #define R_KEY_TYPE_PRIVATE 0x00000010
64 #define R_KEY_TYPE_SYMMETRIC 0x00000100
65 #define R_KEY_TYPE_RSA 0x00001000
66 #define R_KEY_TYPE_ECDSA 0x00010000
67 #define R_KEY_TYPE_HMAC 0x00100000
68 #define R_KEY_TYPE_EDDSA 0x01000000
69 #define R_KEY_TYPE_ECDH 0x10000000
70 
71 #define R_FLAG_IGNORE_SERVER_CERTIFICATE 0x00000001
72 #define R_FLAG_FOLLOW_REDIRECT 0x00000010
73 #define R_FLAG_IGNORE_REMOTE 0x00000100
74 
75 #define R_JWT_TYPE_NONE 0
76 #define R_JWT_TYPE_SIGN 1
77 #define R_JWT_TYPE_ENCRYPT 2
78 #define R_JWT_TYPE_NESTED_SIGN_THEN_ENCRYPT 3
79 #define R_JWT_TYPE_NESTED_ENCRYPT_THEN_SIGN 4
80 
81 #define R_JWT_CLAIM_NOP 0
82 #define R_JWT_CLAIM_ISS 1
83 #define R_JWT_CLAIM_SUB 2
84 #define R_JWT_CLAIM_AUD 3
85 #define R_JWT_CLAIM_EXP 4
86 #define R_JWT_CLAIM_NBF 5
87 #define R_JWT_CLAIM_IAT 6
88 #define R_JWT_CLAIM_JTI 7
89 #define R_JWT_CLAIM_STR 8
90 #define R_JWT_CLAIM_INT 9
91 #define R_JWT_CLAIM_JSN 10
92 #define R_JWT_CLAIM_TYP 11
93 #define R_JWT_CLAIM_CTY 12
94 
95 #define R_JWT_CLAIM_NOW -1
96 #define R_JWT_CLAIM_PRESENT -2
97 
98 #define R_JWK_THUMB_SHA256 0
99 #define R_JWK_THUMB_SHA384 1
100 #define R_JWK_THUMB_SHA512 2
101 
112 typedef json_t jwk_t;
113 typedef json_t jwks_t;
114 
115 typedef enum {
148  R_JWA_ALG_ES256K = 32
150 
151 typedef enum {
160 
161 typedef struct {
162  unsigned char * header_b64url;
163  unsigned char * payload_b64url;
164  unsigned char * signature_b64url;
165  json_t * j_header;
169  unsigned char * payload;
170  size_t payload_len;
171 } jws_t;
172 
173 typedef struct {
174  unsigned char * header_b64url;
175  unsigned char * encrypted_key_b64url;
176  unsigned char * iv_b64url;
177  unsigned char * ciphertext_b64url;
178  unsigned char * auth_tag_b64url;
179  json_t * j_header;
184  unsigned char * key;
185  size_t key_len;
186  unsigned char * iv;
187  size_t iv_len;
188  unsigned char * payload;
189  size_t payload_len;
190 } jwe_t;
191 
192 typedef struct {
193  int type;
194  json_t * j_header;
195  json_t * j_claims;
205 } jwt_t;
206 
224 int r_global_init();
225 
229 void r_global_close();
230 
238 json_t * r_library_info_json_t();
239 
247 char * r_library_info_json_str();
248 
254 void r_free(void * data);
255 
261 int r_jwk_init(jwk_t ** jwk);
262 
267 void r_jwk_free(jwk_t * jwk);
268 
274 int r_jwks_init(jwks_t ** jwks);
275 
280 void r_jwks_free(jwks_t * jwks);
281 
287 int r_jws_init(jws_t ** jws);
288 
293 void r_jws_free(jws_t * jws);
294 
300 int r_jwe_init(jwe_t ** jwe);
301 
306 void r_jwe_free(jwe_t * jwe);
307 
313 int r_jwt_init(jwt_t ** jwt);
314 
319 void r_jwt_free(jwt_t * jwt);
320 
326 jwa_alg r_str_to_jwa_alg(const char * alg);
327 
334 const char * r_jwa_alg_to_str(jwa_alg alg);
335 
341 jwa_enc r_str_to_jwa_enc(const char * enc);
342 
349 const char * r_jwa_enc_to_str(jwa_enc enc);
350 
386 int r_jwk_key_type(jwk_t * jwk, unsigned int * bits, int x5u_flags);
387 
394 int r_jwk_is_valid(jwk_t * jwk);
395 
408 int r_jwk_is_valid_x5u(jwk_t * jwk, int x5u_flags);
409 
421 int r_jwk_generate_key_pair(jwk_t * jwk_privkey, jwk_t * jwk_pubkey, int type, unsigned int bits, const char * kid);
422 
439 const char * r_jwk_get_property_str(jwk_t * jwk, const char * key);
440 
448 const char * r_jwk_get_property_array(jwk_t * jwk, const char * key, size_t index);
449 
456 int r_jwk_get_property_array_size(jwk_t * jwk, const char * key);
457 
466 int r_jwk_set_property_str(jwk_t * jwk, const char * key, const char * value);
467 
477 int r_jwk_set_property_array(jwk_t * jwk, const char * key, size_t index, const char * value);
478 
487 int r_jwk_append_property_array(jwk_t * jwk, const char * key, const char * value);
488 
496 int r_jwk_delete_property_str(jwk_t * jwk, const char * key);
497 
506 int r_jwk_delete_property_array_at(jwk_t * jwk, const char * key, size_t index);
507 
517 int r_jwk_append_x5c(jwk_t * jwk, int format, const unsigned char * input, size_t input_len);
518 
536 int r_jwk_import_from_json_str(jwk_t * jwk, const char * input);
537 
545 int r_jwk_import_from_json_t(jwk_t * jwk, json_t * j_input);
546 
557 int r_jwk_import_from_pem_der(jwk_t * jwk, int type, int format, const unsigned char * input, size_t input_len);
558 
566 int r_jwk_import_from_gnutls_privkey(jwk_t * jwk, gnutls_privkey_t key);
567 
575 int r_jwk_import_from_gnutls_pubkey(jwk_t * jwk, gnutls_pubkey_t pub);
576 
584 int r_jwk_import_from_gnutls_x509_crt(jwk_t * jwk, gnutls_x509_crt_t crt);
585 
597 int r_jwk_import_from_x5u(jwk_t * jwk, int x5u_flags, const char * x5u);
598 
607 int r_jwk_import_from_symmetric_key(jwk_t * jwk, const unsigned char * key, size_t key_len);
608 
616 int r_jwk_import_from_password(jwk_t * jwk, const char * password);
617 
630 int r_jwk_extract_pubkey(jwk_t * jwk_privkey, jwk_t * jwk_pubkey, int x5u_flags);
631 
637 jwk_t * r_jwk_copy(jwk_t * jwk);
638 
645 int r_jwk_equal(jwk_t * jwk1, jwk_t * jwk2);
646 
663 char * r_jwk_export_to_json_str(jwk_t * jwk, int pretty);
664 
670 json_t * r_jwk_export_to_json_t(jwk_t * jwk);
671 
677 gnutls_privkey_t r_jwk_export_to_gnutls_privkey(jwk_t * jwk);
678 
690 gnutls_pubkey_t r_jwk_export_to_gnutls_pubkey(jwk_t * jwk, int x5u_flags);
691 
705 gnutls_x509_crt_t r_jwk_export_to_gnutls_crt(jwk_t * jwk, int x5u_flags);
706 
722 int r_jwk_export_to_pem_der(jwk_t * jwk, int format, unsigned char * output, size_t * output_len, int x5u_flags);
723 
732 int r_jwk_export_to_symmetric_key(jwk_t * jwk, unsigned char * key, size_t * key_len);
733 
750 char * r_jwk_thumbprint(jwk_t * jwk, int hash, int x5u_flags);
751 
764 int r_jwk_validate_x5c_chain(jwk_t * jwk, int x5u_flags);
765 
783 int r_jwks_is_valid(jwks_t * jwks);
784 
794 int r_jwks_import_from_str(jwks_t * jwks, const char * input);
795 
805 int r_jwks_import_from_json_t(jwks_t * jwks, json_t * j_input);
806 
820 int r_jwks_import_from_uri(jwks_t * jwks, const char * uri, int x5u_flags);
821 
827 jwks_t * r_jwks_copy(jwks_t * jwks);
828 
834 size_t r_jwks_size(jwks_t * jwks);
835 
843 jwk_t * r_jwks_get_at(jwks_t * jwks, size_t index);
844 
852 jwk_t * r_jwks_get_by_kid(jwks_t * jwks, const char * kid);
853 
860 int r_jwks_append_jwk(jwks_t * jwks, jwk_t * jwk);
861 
869 int r_jwks_set_at(jwks_t * jwks, size_t index, jwk_t * jwk);
870 
877 int r_jwks_remove_at(jwks_t * jwks, size_t index);
878 
884 int r_jwks_empty(jwks_t * jwks);
885 
893 int r_jwks_equal(jwks_t * jwks1, jwks_t * jwks2);
894 
901 char * r_jwks_export_to_json_str(jwks_t * jwks, int pretty);
902 
908 json_t * r_jwks_export_to_json_t(jwks_t * jwks);
909 
917 gnutls_privkey_t * r_jwks_export_to_gnutls_privkey(jwks_t * jwks, size_t * len);
918 
931 gnutls_pubkey_t * r_jwks_export_to_gnutls_pubkey(jwks_t * jwks, size_t * len, int x5u_flags);
932 
948 int r_jwks_export_to_pem_der(jwks_t * jwks, int format, unsigned char * output, size_t * output_len, int x5u_flags);
949 
965 jws_t * r_jws_copy(jws_t * jws);
966 
974 int r_jws_set_payload(jws_t * jws, const unsigned char * payload, size_t payload_len);
975 
982 const unsigned char * r_jws_get_payload(jws_t * jws, size_t * payload_len);
983 
990 int r_jws_set_alg(jws_t * jws, jwa_alg alg);
991 
998 
1005 const char * r_jws_get_kid(jws_t * jws);
1006 
1014 int r_jws_set_header_str_value(jws_t * jws, const char * key, const char * str_value);
1015 
1023 int r_jws_set_header_int_value(jws_t * jws, const char * key, int i_value);
1024 
1032 int r_jws_set_header_json_t_value(jws_t * jws, const char * key, json_t * j_value);
1033 
1040 const char * r_jws_get_header_str_value(jws_t * jws, const char * key);
1041 
1048 int r_jws_get_header_int_value(jws_t * jws, const char * key);
1049 
1056 json_t * r_jws_get_header_json_t_value(jws_t * jws, const char * key);
1057 
1063 json_t * r_jws_get_full_header_json_t(jws_t * jws);
1064 
1072 int r_jws_add_keys(jws_t * jws, jwk_t * jwk_privkey, jwk_t * jwk_pubkey);
1073 
1081 int r_jws_add_jwks(jws_t * jws, jwks_t * jwks_privkey, jwks_t * jwks_pubkey);
1082 
1091 int r_jws_add_keys_json_str(jws_t * jws, const char * privkey, const char * pubkey);
1092 
1101 int r_jws_add_keys_json_t(jws_t * jws, json_t * privkey, json_t * pubkey);
1102 
1114 int r_jws_add_keys_pem_der(jws_t * jws, int format, const unsigned char * privkey, size_t privkey_len, const unsigned char * pubkey, size_t pubkey_len);
1115 
1124 int r_jws_add_keys_gnutls(jws_t * jws, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey);
1125 
1133 int r_jws_add_key_symmetric(jws_t * jws, const unsigned char * key, size_t key_len);
1134 
1141 
1148 
1161 int r_jws_parse(jws_t * jws, const char * jws_str, int x5u_flags);
1162 
1176 int r_jws_parsen(jws_t * jws, const char * jws_str, size_t jws_str_len, int x5u_flags);
1177 
1193 int r_jws_verify_signature(jws_t * jws, jwk_t * jwk_pubkey, int x5u_flags);
1194 
1208 char * r_jws_serialize(jws_t * jws, jwk_t * jwk_privkey, int x5u_flags);
1209 
1225 jwe_t * r_jwe_copy(jwe_t * jwe);
1226 
1234 int r_jwe_set_payload(jwe_t * jwe, const unsigned char * payload, size_t payload_len);
1235 
1242 const unsigned char * r_jwe_get_payload(jwe_t * jwe, size_t * payload_len);
1243 
1250 int r_jwe_set_alg(jwe_t * jwe, jwa_alg alg);
1251 
1257 jwa_alg r_jwe_get_alg(jwe_t * jwe);
1258 
1265 int r_jwe_set_enc(jwe_t * jwe, jwa_enc enc);
1266 
1272 jwa_enc r_jwe_get_enc(jwe_t * jwe);
1273 
1280 const char * r_jwe_get_kid(jwe_t * jwe);
1281 
1289 int r_jwe_set_header_str_value(jwe_t * jwe, const char * key, const char * str_value);
1290 
1298 int r_jwe_set_header_int_value(jwe_t * jwe, const char * key, int i_value);
1299 
1307 int r_jwe_set_header_json_t_value(jwe_t * jwe, const char * key, json_t * j_value);
1308 
1315 const char * r_jwe_get_header_str_value(jwe_t * jwe, const char * key);
1316 
1323 int r_jwe_get_header_int_value(jwe_t * jwe, const char * key);
1324 
1331 json_t * r_jwe_get_header_json_t_value(jwe_t * jwe, const char * key);
1332 
1338 json_t * r_jwe_get_full_header_json_t(jwe_t * jwe);
1339 
1347 int r_jwe_add_keys(jwe_t * jwe, jwk_t * jwk_privkey, jwk_t * jwk_pubkey);
1348 
1356 int r_jwe_add_jwks(jwe_t * jwe, jwks_t * jwks_privkey, jwks_t * jwks_pubkey);
1357 
1366 int r_jwe_add_keys_json_str(jwe_t * jwe, const char * privkey, const char * pubkey);
1367 
1376 int r_jwe_add_keys_json_t(jwe_t * jwe, json_t * privkey, json_t * pubkey);
1377 
1389 int r_jwe_add_keys_pem_der(jwe_t * jwe, int format, const unsigned char * privkey, size_t privkey_len, const unsigned char * pubkey, size_t pubkey_len);
1390 
1399 int r_jwe_add_keys_gnutls(jwe_t * jwe, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey);
1400 
1408 int r_jwe_add_key_symmetric(jwe_t * jwe, const unsigned char * key, size_t key_len);
1409 
1416 
1423 
1431 int r_jwe_set_cypher_key(jwe_t * jwe, const unsigned char * key, size_t key_len);
1432 
1439 const unsigned char * r_jwe_get_cypher_key(jwe_t * jwe, size_t * key_len);
1440 
1446 int r_jwe_generate_cypher_key(jwe_t * jwe);
1447 
1455 int r_jwe_set_iv(jwe_t * jwe, const unsigned char * iv, size_t iv_len);
1456 
1463 const unsigned char * r_jwe_get_iv(jwe_t * jwe, size_t * iv_len);
1464 
1470 int r_jwe_generate_iv(jwe_t * jwe);
1471 
1477 int r_jwe_encrypt_payload(jwe_t * jwe);
1478 
1484 int r_jwe_decrypt_payload(jwe_t * jwe);
1485 
1498 int r_jwe_encrypt_key(jwe_t * jwe, jwk_t * jwk_pubkey, int x5u_flags);
1499 
1512 int r_jwe_decrypt_key(jwe_t * jwe, jwk_t * jwk_privkey, int x5u_flags);
1513 
1526 int r_jwe_parse(jwe_t * jwe, const char * jwe_str, int x5u_flags);
1527 
1541 int r_jwe_parsen(jwe_t * jwe, const char * jwe_str, size_t jwe_str_len, int x5u_flags);
1542 
1556 int r_jwe_decrypt(jwe_t * jwe, jwk_t * jwk_privkey, int x5u_flags);
1557 
1571 char * r_jwe_serialize(jwe_t * jwe, jwk_t * jwk_pubkey, int x5u_flags);
1572 
1588 jwt_t * r_jwt_copy(jwt_t * jwt);
1589 
1597 int r_jwt_set_header_str_value(jwt_t * jwt, const char * key, const char * str_value);
1598 
1606 int r_jwt_set_header_int_value(jwt_t * jwt, const char * key, int i_value);
1607 
1615 int r_jwt_set_header_json_t_value(jwt_t * jwt, const char * key, json_t * j_value);
1616 
1623 const char * r_jwt_get_header_str_value(jwt_t * jwt, const char * key);
1624 
1631 int r_jwt_get_header_int_value(jwt_t * jwt, const char * key);
1632 
1639 json_t * r_jwt_get_header_json_t_value(jwt_t * jwt, const char * key);
1640 
1646 json_t * r_jwt_get_full_header_json_t(jwt_t * jwt);
1647 
1653 char * r_jwt_get_full_header_str(jwt_t * jwt);
1654 
1662 int r_jwt_set_claim_str_value(jwt_t * jwt, const char * key, const char * str_value);
1663 
1671 int r_jwt_set_claim_int_value(jwt_t * jwt, const char * key, int i_value);
1672 
1680 int r_jwt_set_claim_json_t_value(jwt_t * jwt, const char * key, json_t * j_value);
1681 
1688 const char * r_jwt_get_claim_str_value(jwt_t * jwt, const char * key);
1689 
1696 int r_jwt_get_claim_int_value(jwt_t * jwt, const char * key);
1697 
1704 json_t * r_jwt_get_claim_json_t_value(jwt_t * jwt, const char * key);
1705 
1711 json_t * r_jwt_get_full_claims_json_t(jwt_t * jwt);
1712 
1718 char * r_jwt_get_full_claims_str(jwt_t * jwt);
1719 
1727 int r_jwt_set_full_claims_json_t(jwt_t * jwt, json_t * j_claim);
1728 
1736 int r_jwt_set_full_claims_json_str(jwt_t * jwt, const char * str_claims);
1737 
1745 int r_jwt_append_claims_json_t(jwt_t * jwt, json_t * j_claim);
1746 
1754 int r_jwt_add_sign_keys(jwt_t * jwt, jwk_t * privkey, jwk_t * pubkey);
1755 
1763 int r_jwt_add_sign_jwks(jwt_t * jwt, jwks_t * jwks_privkey, jwks_t * jwks_pubkey);
1764 
1773 int r_jwt_add_sign_keys_json_str(jwt_t * jwt, const char * privkey, const char * pubkey);
1774 
1783 int r_jwt_add_sign_keys_json_t(jwt_t * jwt, json_t * privkey, json_t * pubkey);
1784 
1796 int r_jwt_add_sign_keys_pem_der(jwt_t * jwt, int format, const unsigned char * privkey, size_t privkey_len, const unsigned char * pubkey, size_t pubkey_len);
1797 
1806 int r_jwt_add_sign_keys_gnutls(jwt_t * jwt, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey);
1807 
1815 int r_jwt_add_sign_key_symmetric(jwt_t * jwt, const unsigned char * key, size_t key_len);
1816 
1823 
1830 
1838 int r_jwt_add_enc_keys(jwt_t * jwt, jwk_t * privkey, jwk_t * pubkey);
1839 
1847 int r_jwt_add_enc_jwks(jwt_t * jwt, jwks_t * jwks_privkey, jwks_t * jwks_pubkey);
1848 
1857 int r_jwt_add_enc_keys_json_str(jwt_t * jwt, const char * privkey, const char * pubkey);
1858 
1867 int r_jwt_add_enc_keys_json_t(jwt_t * jwt, json_t * privkey, json_t * pubkey);
1868 
1880 int r_jwt_add_enc_keys_pem_der(jwt_t * jwt, int format, const unsigned char * privkey, size_t privkey_len, const unsigned char * pubkey, size_t pubkey_len);
1881 
1890 int r_jwt_add_enc_keys_gnutls(jwt_t * jwt, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey);
1891 
1899 int r_jwt_add_enc_key_symmetric(jwt_t * jwt, const unsigned char * key, size_t key_len);
1900 
1907 
1914 
1921 int r_jwt_set_sign_alg(jwt_t * jwt, jwa_alg alg);
1922 
1929 
1936 int r_jwt_set_enc_alg(jwt_t * jwt, jwa_alg alg);
1937 
1944 
1951 int r_jwt_set_enc(jwt_t * jwt, jwa_enc enc);
1952 
1958 jwa_enc r_jwt_get_enc(jwt_t * jwt);
1959 
1966 const char * r_jwt_get_enc_kid(jwt_t * jwt);
1967 
1974 const char * r_jwt_get_sig_kid(jwt_t * jwt);
1975 
1988 char * r_jwt_serialize_signed(jwt_t * jwt, jwk_t * privkey, int x5u_flags);
1989 
2002 char * r_jwt_serialize_encrypted(jwt_t * jwt, jwk_t * pubkey, int x5u_flags);
2003 
2028 char * r_jwt_serialize_nested(jwt_t * jwt, unsigned int type, jwk_t * sign_key, int sign_key_x5u_flags, jwk_t * encrypt_key, int encrypt_key_x5u_flags);
2029 
2045 int r_jwt_parse(jwt_t * jwt, const char * token, int x5u_flags);
2046 
2063 int r_jwt_parsen(jwt_t * jwt, const char * token, size_t token_len, int x5u_flags);
2064 
2075 int r_jwt_get_type(jwt_t * jwt);
2076 
2092 int r_jwt_verify_signature(jwt_t * jwt, jwk_t * pubkey, int x5u_flags);
2093 
2107 int r_jwt_decrypt(jwt_t * jwt, jwk_t * privkey, int x5u_flags);
2108 
2131 int r_jwt_decrypt_verify_signature_nested(jwt_t * jwt, jwk_t * verify_key, int verify_key_x5u_flags, jwk_t * decrypt_key, int decrypt_key_x5u_flags);
2132 
2147 int r_jwt_decrypt_nested(jwt_t * jwt, jwk_t * decrypt_key, int decrypt_key_x5u_flags);
2148 
2162 int r_jwt_verify_signature_nested(jwt_t * jwt, jwk_t * verify_key, int verify_key_x5u_flags);
2163 
2190 int r_jwt_validate_claims(jwt_t * jwt, ...);
2191 
2196 #ifndef DOXYGEN_SHOULD_SKIP_THIS
2197 
2201 int _r_json_set_str_value(json_t * j_json, const char * key, const char * str_value);
2202 
2203 int _r_json_set_int_value(json_t * j_json, const char * key, int i_value);
2204 
2205 int _r_json_set_json_t_value(json_t * j_json, const char * key, json_t * j_value);
2206 
2207 const char * _r_json_get_str_value(json_t * j_json, const char * key);
2208 
2209 int _r_json_get_int_value(json_t * j_json, const char * key);
2210 
2211 json_t * _r_json_get_json_t_value(json_t * j_json, const char * key);
2212 
2213 json_t * _r_json_get_full_json_t(json_t * j_json);
2214 
2215 #endif
2216 
2217 #ifdef __cplusplus
2218 }
2219 #endif
2220 
2221 #endif // __RHONABWY_H_
json_t * r_library_info_json_t()
Definition: misc.c:408
char * r_library_info_json_str()
Definition: misc.c:467
void r_jwe_free(jwe_t *jwe)
Definition: jwe.c:1930
const char * r_jwa_alg_to_str(jwa_alg alg)
Definition: misc.c:260
void r_global_close()
Definition: misc.c:51
int r_jws_init(jws_t **jws)
Definition: jws.c:688
jwa_enc r_str_to_jwa_enc(const char *enc)
Definition: misc.c:364
void r_jws_free(jws_t *jws)
Definition: jws.c:729
void r_jwk_free(jwk_t *jwk)
Definition: jwk.c:50
void r_jwks_free(jwks_t *jwks)
Definition: jwks.c:41
void r_jwt_free(jwt_t *jwt)
Definition: jwt.c:84
int r_jwks_init(jwks_t **jwks)
Definition: jwks.c:30
jwa_alg r_str_to_jwa_alg(const char *alg)
Definition: misc.c:188
int r_jwe_init(jwe_t **jwe)
Definition: jwe.c:1882
void r_free(void *data)
Definition: misc.c:477
const char * r_jwa_enc_to_str(jwa_enc enc)
Definition: misc.c:382
int r_jwt_init(jwt_t **jwt)
Definition: jwt.c:28
int r_global_init()
Definition: misc.c:32
int r_jwk_init(jwk_t **jwk)
Definition: jwk.c:39
gnutls_pubkey_t r_jwk_export_to_gnutls_pubkey(jwk_t *jwk, int x5u_flags)
Definition: jwk.c:2165
gnutls_privkey_t r_jwk_export_to_gnutls_privkey(jwk_t *jwk)
Definition: jwk.c:1833
char * r_jwk_thumbprint(jwk_t *jwk, int hash, int x5u_flags)
Definition: jwk.c:2770
gnutls_x509_crt_t r_jwk_export_to_gnutls_crt(jwk_t *jwk, int x5u_flags)
Definition: jwk.c:2457
int r_jwk_export_to_symmetric_key(jwk_t *jwk, unsigned char *key, size_t *key_len)
Definition: jwk.c:2577
int r_jwk_export_to_pem_der(jwk_t *jwk, int format, unsigned char *output, size_t *output_len, int x5u_flags)
Definition: jwk.c:2521
json_t * r_jwk_export_to_json_t(jwk_t *jwk)
Definition: jwk.c:1825
char * r_jwk_export_to_json_str(jwk_t *jwk, int pretty)
Definition: jwk.c:1817
int r_jwk_validate_x5c_chain(jwk_t *jwk, int x5u_flags)
Definition: jwk.c:2864
int r_jwk_import_from_password(jwk_t *jwk, const char *password)
Definition: jwk.c:1801
int r_jwk_import_from_json_str(jwk_t *jwk, const char *input)
Definition: jwk.c:855
int r_jwk_import_from_pem_der(jwk_t *jwk, int type, int format, const unsigned char *input, size_t input_len)
Definition: jwk.c:888
int r_jwk_import_from_json_t(jwk_t *jwk, json_t *j_input)
Definition: jwk.c:872
int r_jwk_import_from_gnutls_x509_crt(jwk_t *jwk, gnutls_x509_crt_t crt)
Definition: jwk.c:1715
int r_jwk_import_from_symmetric_key(jwk_t *jwk, const unsigned char *key, size_t key_len)
Definition: jwk.c:1772
int r_jwk_import_from_gnutls_pubkey(jwk_t *jwk, gnutls_pubkey_t pub)
Definition: jwk.c:1452
jwk_t * r_jwk_copy(jwk_t *jwk)
Definition: jwk.c:1805
int r_jwk_equal(jwk_t *jwk1, jwk_t *jwk2)
Definition: jwk.c:1813
int r_jwk_extract_pubkey(jwk_t *jwk_privkey, jwk_t *jwk_pubkey, int x5u_flags)
Definition: jwk.c:804
int r_jwk_import_from_x5u(jwk_t *jwk, int x5u_flags, const char *x5u)
Definition: jwk.c:1751
int r_jwk_import_from_gnutls_privkey(jwk_t *jwk, gnutls_privkey_t key)
Definition: jwk.c:1005
const unsigned char * r_jwe_get_payload(jwe_t *jwe, size_t *payload_len)
Definition: jwe.c:2005
int r_jwe_set_iv(jwe_t *jwe, const unsigned char *iv, size_t iv_len)
Definition: jwe.c:2080
int r_jwe_set_header_json_t_value(jwe_t *jwe, const char *key, json_t *j_value)
Definition: jwe.c:2334
int r_jwe_encrypt_payload(jwe_t *jwe)
Definition: jwe.c:2633
int r_jwe_set_header_int_value(jwe_t *jwe, const char *key, int i_value)
Definition: jwe.c:2320
int r_jwe_add_keys_pem_der(jwe_t *jwe, int format, const unsigned char *privkey, size_t privkey_len, const unsigned char *pubkey, size_t pubkey_len)
Definition: jwe.c:2514
int r_jwe_set_payload(jwe_t *jwe, const unsigned char *payload, size_t payload_len)
Definition: jwe.c:1978
int r_jwe_set_enc(jwe_t *jwe, jwa_enc enc)
Definition: jwe.c:2258
int r_jwe_decrypt_payload(jwe_t *jwe)
Definition: jwe.c:2794
jwa_enc r_jwe_get_enc(jwe_t *jwe)
Definition: jwe.c:2294
int r_jwe_parse(jwe_t *jwe, const char *jwe_str, int x5u_flags)
Definition: jwe.c:3500
int r_jwe_set_alg(jwe_t *jwe, jwa_alg alg)
Definition: jwe.c:2178
int r_jwe_get_header_int_value(jwe_t *jwe, const char *key)
Definition: jwe.c:2356
const char * r_jwe_get_header_str_value(jwe_t *jwe, const char *key)
Definition: jwe.c:2349
int r_jwe_add_keys_gnutls(jwe_t *jwe, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
Definition: jwe.c:2553
int r_jwe_generate_iv(jwe_t *jwe)
Definition: jwe.c:2133
int r_jwe_generate_cypher_key(jwe_t *jwe)
Definition: jwe.c:2052
const unsigned char * r_jwe_get_iv(jwe_t *jwe, size_t *iv_len)
Definition: jwe.c:2123
int r_jwe_add_keys(jwe_t *jwe, jwk_t *jwk_privkey, jwk_t *jwk_pubkey)
Definition: jwe.c:2377
jwks_t * r_jwe_get_jwks_pubkey(jwe_t *jwe)
Definition: jwe.c:2625
int r_jwe_set_cypher_key(jwe_t *jwe, const unsigned char *key, size_t key_len)
Definition: jwe.c:2015
int r_jwe_add_keys_json_str(jwe_t *jwe, const char *privkey, const char *pubkey)
Definition: jwe.c:2436
int r_jwe_add_keys_json_t(jwe_t *jwe, json_t *privkey, json_t *pubkey)
Definition: jwe.c:2475
jwks_t * r_jwe_get_jwks_privkey(jwe_t *jwe)
Definition: jwe.c:2617
jwe_t * r_jwe_copy(jwe_t *jwe)
Definition: jwe.c:1947
int r_jwe_parsen(jwe_t *jwe, const char *jwe_str, size_t jwe_str_len, int x5u_flags)
Definition: jwe.c:3386
int r_jwe_add_key_symmetric(jwe_t *jwe, const unsigned char *key, size_t key_len)
Definition: jwe.c:2592
int r_jwe_decrypt(jwe_t *jwe, jwk_t *jwk_privkey, int x5u_flags)
Definition: jwe.c:3504
int r_jwe_decrypt_key(jwe_t *jwe, jwk_t *jwk_privkey, int x5u_flags)
Definition: jwe.c:3170
json_t * r_jwe_get_header_json_t_value(jwe_t *jwe, const char *key)
Definition: jwe.c:2363
jwa_alg r_jwe_get_alg(jwe_t *jwe)
Definition: jwe.c:2250
int r_jwe_encrypt_key(jwe_t *jwe, jwk_t *jwk_pubkey, int x5u_flags)
Definition: jwe.c:2952
json_t * r_jwe_get_full_header_json_t(jwe_t *jwe)
Definition: jwe.c:2370
int r_jwe_set_header_str_value(jwe_t *jwe, const char *key, const char *str_value)
Definition: jwe.c:2306
char * r_jwe_serialize(jwe_t *jwe, jwk_t *jwk_pubkey, int x5u_flags)
Definition: jwe.c:3518
const unsigned char * r_jwe_get_cypher_key(jwe_t *jwe, size_t *key_len)
Definition: jwe.c:2042
int r_jwe_add_jwks(jwe_t *jwe, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
Definition: jwe.c:2403
const char * r_jwe_get_kid(jwe_t *jwe)
Definition: jwe.c:2302
int r_jwk_set_property_array(jwk_t *jwk, const char *key, size_t index, const char *value)
Definition: jwk.c:2656
const char * r_jwk_get_property_str(jwk_t *jwk, const char *key)
Definition: jwk.c:2605
int r_jwk_delete_property_str(jwk_t *jwk, const char *key)
Definition: jwk.c:2698
int r_jwk_append_property_array(jwk_t *jwk, const char *key, const char *value)
Definition: jwk.c:2680
int r_jwk_set_property_str(jwk_t *jwk, const char *key, const char *value)
Definition: jwk.c:2643
int r_jwk_append_x5c(jwk_t *jwk, int format, const unsigned char *input, size_t input_len)
Definition: jwk.c:2724
int r_jwk_get_property_array_size(jwk_t *jwk, const char *key)
Definition: jwk.c:2630
const char * r_jwk_get_property_array(jwk_t *jwk, const char *key, size_t index)
Definition: jwk.c:2617
int r_jwk_delete_property_array_at(jwk_t *jwk, const char *key, size_t index)
Definition: jwk.c:2711
int r_jwk_generate_key_pair(jwk_t *jwk_privkey, jwk_t *jwk_pubkey, int type, unsigned int bits, const char *kid)
Definition: jwk.c:451
int r_jwk_is_valid_x5u(jwk_t *jwk, int x5u_flags)
Definition: jwk.c:400
int r_jwk_key_type(jwk_t *jwk, unsigned int *bits, int x5u_flags)
Definition: jwk.c:604
int r_jwk_is_valid(jwk_t *jwk)
Definition: jwk.c:56
size_t r_jwks_size(jwks_t *jwks)
Definition: jwks.c:68
int r_jwks_import_from_str(jwks_t *jwks, const char *input)
Definition: jwks.c:248
int r_jwks_import_from_uri(jwks_t *jwks, const char *uri, int x5u_flags)
Definition: jwks.c:310
jwks_t * r_jwks_copy(jwks_t *jwks)
Definition: jwks.c:97
json_t * r_jwks_export_to_json_t(jwks_t *jwks)
Definition: jwks.c:169
int r_jwks_equal(jwks_t *jwks1, jwks_t *jwks2)
Definition: jwks.c:157
gnutls_privkey_t * r_jwks_export_to_gnutls_privkey(jwks_t *jwks, size_t *len)
Definition: jwks.c:177
int r_jwks_import_from_json_t(jwks_t *jwks, json_t *j_input)
Definition: jwks.c:271
int r_jwks_remove_at(jwks_t *jwks, size_t index)
Definition: jwks.c:131
jwk_t * r_jwks_get_by_kid(jwks_t *jwks, const char *kid)
Definition: jwks.c:84
int r_jwks_is_valid(jwks_t *jwks)
Definition: jwks.c:47
int r_jwks_set_at(jwks_t *jwks, size_t index, jwk_t *jwk)
Definition: jwks.c:118
int r_jwks_append_jwk(jwks_t *jwks, jwk_t *jwk)
Definition: jwks.c:105
char * r_jwks_export_to_json_str(jwks_t *jwks, int pretty)
Definition: jwks.c:161
jwk_t * r_jwks_get_at(jwks_t *jwks, size_t index)
Definition: jwks.c:76
int r_jwks_empty(jwks_t *jwks)
Definition: jwks.c:144
int r_jwks_export_to_pem_der(jwks_t *jwks, int format, unsigned char *output, size_t *output_len, int x5u_flags)
Definition: jwks.c:221
gnutls_pubkey_t * r_jwks_export_to_gnutls_pubkey(jwks_t *jwks, size_t *len, int x5u_flags)
Definition: jwks.c:199
int r_jws_verify_signature(jws_t *jws, jwk_t *jwk_pubkey, int x5u_flags)
Definition: jws.c:1309
jws_t * r_jws_copy(jws_t *jws)
Definition: jws.c:742
int r_jws_set_header_str_value(jws_t *jws, const char *key, const char *str_value)
Definition: jws.c:879
int r_jws_set_header_int_value(jws_t *jws, const char *key, int i_value)
Definition: jws.c:893
int r_jws_add_keys(jws_t *jws, jwk_t *jwk_privkey, jwk_t *jwk_pubkey)
Definition: jws.c:950
int r_jws_add_key_symmetric(jws_t *jws, const unsigned char *key, size_t key_len)
Definition: jws.c:1165
const unsigned char * r_jws_get_payload(jws_t *jws, size_t *payload_len)
Definition: jws.c:794
jwks_t * r_jws_get_jwks_privkey(jws_t *jws)
Definition: jws.c:1190
const char * r_jws_get_kid(jws_t *jws)
Definition: jws.c:875
int r_jws_set_header_json_t_value(jws_t *jws, const char *key, json_t *j_value)
Definition: jws.c:907
int r_jws_parsen(jws_t *jws, const char *jws_str, size_t jws_str_len, int x5u_flags)
Definition: jws.c:1206
char * r_jws_serialize(jws_t *jws, jwk_t *jwk_privkey, int x5u_flags)
Definition: jws.c:1391
json_t * r_jws_get_full_header_json_t(jws_t *jws)
Definition: jws.c:943
int r_jws_add_keys_json_str(jws_t *jws, const char *privkey, const char *pubkey)
Definition: jws.c:1009
int r_jws_add_keys_pem_der(jws_t *jws, int format, const unsigned char *privkey, size_t privkey_len, const unsigned char *pubkey, size_t pubkey_len)
Definition: jws.c:1087
int r_jws_add_keys_gnutls(jws_t *jws, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
Definition: jws.c:1126
json_t * r_jws_get_header_json_t_value(jws_t *jws, const char *key)
Definition: jws.c:936
int r_jws_add_jwks(jws_t *jws, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
Definition: jws.c:976
int r_jws_set_payload(jws_t *jws, const unsigned char *payload, size_t payload_len)
Definition: jws.c:769
jwa_alg r_jws_get_alg(jws_t *jws)
Definition: jws.c:867
int r_jws_parse(jws_t *jws, const char *jws_str, int x5u_flags)
Definition: jws.c:1305
int r_jws_add_keys_json_t(jws_t *jws, json_t *privkey, json_t *pubkey)
Definition: jws.c:1048
const char * r_jws_get_header_str_value(jws_t *jws, const char *key)
Definition: jws.c:922
int r_jws_set_alg(jws_t *jws, jwa_alg alg)
Definition: jws.c:804
jwks_t * r_jws_get_jwks_pubkey(jws_t *jws)
Definition: jws.c:1198
int r_jws_get_header_int_value(jws_t *jws, const char *key)
Definition: jws.c:929
char * r_jwt_serialize_signed(jwt_t *jwt, jwk_t *privkey, int x5u_flags)
Definition: jwt.c:868
int r_jwt_set_sign_alg(jwt_t *jwt, jwa_alg alg)
Definition: jwt.c:800
jwks_t * r_jwt_get_sign_jwks_privkey(jwt_t *jwt)
Definition: jwt.c:528
int r_jwt_add_enc_key_symmetric(jwt_t *jwt, const unsigned char *key, size_t key_len)
Definition: jwt.c:759
int r_jwt_set_header_int_value(jwt_t *jwt, const char *key, int i_value)
Definition: jwt.c:131
int r_jwt_decrypt_nested(jwt_t *jwt, jwk_t *decrypt_key, int decrypt_key_x5u_flags)
Definition: jwt.c:1388
int r_jwt_set_header_json_t_value(jwt_t *jwt, const char *key, json_t *j_value)
Definition: jwt.c:139
int r_jwt_verify_signature(jwt_t *jwt, jwk_t *pubkey, int x5u_flags)
Definition: jwt.c:1165
char * r_jwt_get_full_claims_str(jwt_t *jwt)
Definition: jwt.c:235
int r_jwt_add_sign_keys_json_t(jwt_t *jwt, json_t *privkey, json_t *pubkey)
Definition: jwt.c:386
int r_jwt_add_sign_keys_pem_der(jwt_t *jwt, int format, const unsigned char *privkey, size_t privkey_len, const unsigned char *pubkey, size_t pubkey_len)
Definition: jwt.c:425
jwks_t * r_jwt_get_enc_jwks_pubkey(jwt_t *jwt)
Definition: jwt.c:792
jwt_t * r_jwt_copy(jwt_t *jwt)
Definition: jwt.c:98
jwa_alg r_jwt_get_enc_alg(jwt_t *jwt)
Definition: jwt.c:832
const char * r_jwt_get_sig_kid(jwt_t *jwt)
Definition: jwt.c:864
jwa_enc r_jwt_get_enc(jwt_t *jwt)
Definition: jwt.c:852
jwks_t * r_jwt_get_sign_jwks_pubkey(jwt_t *jwt)
Definition: jwt.c:536
json_t * r_jwt_get_claim_json_t_value(jwt_t *jwt, const char *key)
Definition: jwt.c:221
int r_jwt_set_enc_alg(jwt_t *jwt, jwa_alg alg)
Definition: jwt.c:820
int r_jwt_decrypt(jwt_t *jwt, jwk_t *privkey, int x5u_flags)
Definition: jwt.c:1190
int r_jwt_set_full_claims_json_str(jwt_t *jwt, const char *str_claims)
Definition: jwt.c:253
int r_jwt_set_claim_str_value(jwt_t *jwt, const char *key, const char *str_value)
Definition: jwt.c:183
int r_jwt_get_claim_int_value(jwt_t *jwt, const char *key)
Definition: jwt.c:214
int r_jwt_parsen(jwt_t *jwt, const char *token, size_t token_len, int x5u_flags)
Definition: jwt.c:1026
int r_jwt_add_enc_keys_pem_der(jwt_t *jwt, int format, const unsigned char *privkey, size_t privkey_len, const unsigned char *pubkey, size_t pubkey_len)
Definition: jwt.c:681
jwa_alg r_jwt_get_sign_alg(jwt_t *jwt)
Definition: jwt.c:812
int r_jwt_decrypt_verify_signature_nested(jwt_t *jwt, jwk_t *verify_key, int verify_key_x5u_flags, jwk_t *decrypt_key, int decrypt_key_x5u_flags)
Definition: jwt.c:1244
int r_jwt_set_claim_json_t_value(jwt_t *jwt, const char *key, json_t *j_value)
Definition: jwt.c:199
int r_jwt_set_claim_int_value(jwt_t *jwt, const char *key, int i_value)
Definition: jwt.c:191
int r_jwt_verify_signature_nested(jwt_t *jwt, jwk_t *verify_key, int verify_key_x5u_flags)
Definition: jwt.c:1485
int r_jwt_add_enc_jwks(jwt_t *jwt, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
Definition: jwt.c:570
int r_jwt_add_sign_keys_gnutls(jwt_t *jwt, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
Definition: jwt.c:464
int r_jwt_add_enc_keys_json_str(jwt_t *jwt, const char *privkey, const char *pubkey)
Definition: jwt.c:603
int r_jwt_validate_claims(jwt_t *jwt,...)
Definition: jwt.c:1517
int r_jwt_get_header_int_value(jwt_t *jwt, const char *key)
Definition: jwt.c:154
int r_jwt_add_sign_key_symmetric(jwt_t *jwt, const unsigned char *key, size_t key_len)
Definition: jwt.c:503
char * r_jwt_get_full_header_str(jwt_t *jwt)
Definition: jwt.c:175
int r_jwt_set_header_str_value(jwt_t *jwt, const char *key, const char *str_value)
Definition: jwt.c:123
int r_jwt_parse(jwt_t *jwt, const char *token, int x5u_flags)
Definition: jwt.c:1153
int r_jwt_set_full_claims_json_t(jwt_t *jwt, json_t *j_claim)
Definition: jwt.c:243
const char * r_jwt_get_enc_kid(jwt_t *jwt)
Definition: jwt.c:860
int r_jwt_add_sign_keys(jwt_t *jwt, jwk_t *privkey, jwk_t *pubkey)
Definition: jwt.c:288
int r_jwt_append_claims_json_t(jwt_t *jwt, json_t *j_claim)
Definition: jwt.c:270
int r_jwt_add_sign_keys_json_str(jwt_t *jwt, const char *privkey, const char *pubkey)
Definition: jwt.c:347
int r_jwt_set_enc(jwt_t *jwt, jwa_enc enc)
Definition: jwt.c:840
int r_jwt_add_sign_jwks(jwt_t *jwt, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
Definition: jwt.c:314
int r_jwt_add_enc_keys(jwt_t *jwt, jwk_t *privkey, jwk_t *pubkey)
Definition: jwt.c:544
int r_jwt_add_enc_keys_json_t(jwt_t *jwt, json_t *privkey, json_t *pubkey)
Definition: jwt.c:642
json_t * r_jwt_get_header_json_t_value(jwt_t *jwt, const char *key)
Definition: jwt.c:161
json_t * r_jwt_get_full_header_json_t(jwt_t *jwt)
Definition: jwt.c:168
char * r_jwt_serialize_encrypted(jwt_t *jwt, jwk_t *pubkey, int x5u_flags)
Definition: jwt.c:909
const char * r_jwt_get_claim_str_value(jwt_t *jwt, const char *key)
Definition: jwt.c:207
json_t * r_jwt_get_full_claims_json_t(jwt_t *jwt)
Definition: jwt.c:228
char * r_jwt_serialize_nested(jwt_t *jwt, unsigned int type, jwk_t *sign_key, int sign_key_x5u_flags, jwk_t *encrypt_key, int encrypt_key_x5u_flags)
Definition: jwt.c:951
const char * r_jwt_get_header_str_value(jwt_t *jwt, const char *key)
Definition: jwt.c:147
int r_jwt_add_enc_keys_gnutls(jwt_t *jwt, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
Definition: jwt.c:720
jwks_t * r_jwt_get_enc_jwks_privkey(jwt_t *jwt)
Definition: jwt.c:784
int r_jwt_get_type(jwt_t *jwt)
Definition: jwt.c:1157
jwa_enc
Definition: rhonabwy.h:151
jwa_alg
Definition: rhonabwy.h:115
json_t jwk_t
Definition: rhonabwy.h:112
json_t jwks_t
Definition: rhonabwy.h:113
@ R_JWA_ENC_UNKNOWN
Definition: rhonabwy.h:152
@ R_JWA_ENC_A192GCM
Definition: rhonabwy.h:157
@ R_JWA_ENC_A128GCM
Definition: rhonabwy.h:156
@ R_JWA_ENC_A128CBC
Definition: rhonabwy.h:153
@ R_JWA_ENC_A256GCM
Definition: rhonabwy.h:158
@ R_JWA_ENC_A192CBC
Definition: rhonabwy.h:154
@ R_JWA_ENC_A256CBC
Definition: rhonabwy.h:155
@ R_JWA_ALG_A256KW
Definition: rhonabwy.h:136
@ R_JWA_ALG_A192GCMKW
Definition: rhonabwy.h:143
@ R_JWA_ALG_ES384
Definition: rhonabwy.h:125
@ R_JWA_ALG_A192KW
Definition: rhonabwy.h:135
@ R_JWA_ALG_PBES2_H384
Definition: rhonabwy.h:146
@ R_JWA_ALG_HS384
Definition: rhonabwy.h:119
@ R_JWA_ALG_EDDSA
Definition: rhonabwy.h:127
@ R_JWA_ALG_DIR
Definition: rhonabwy.h:137
@ R_JWA_ALG_A128KW
Definition: rhonabwy.h:134
@ R_JWA_ALG_HS512
Definition: rhonabwy.h:120
@ R_JWA_ALG_PS512
Definition: rhonabwy.h:130
@ R_JWA_ALG_PS384
Definition: rhonabwy.h:129
@ R_JWA_ALG_PBES2_H512
Definition: rhonabwy.h:147
@ R_JWA_ALG_NONE
Definition: rhonabwy.h:117
@ R_JWA_ALG_RSA1_5
Definition: rhonabwy.h:131
@ R_JWA_ALG_ES256
Definition: rhonabwy.h:124
@ R_JWA_ALG_RSA_OAEP_256
Definition: rhonabwy.h:133
@ R_JWA_ALG_A128GCMKW
Definition: rhonabwy.h:142
@ R_JWA_ALG_ECDH_ES_A192KW
Definition: rhonabwy.h:140
@ R_JWA_ALG_ES512
Definition: rhonabwy.h:126
@ R_JWA_ALG_RS512
Definition: rhonabwy.h:123
@ R_JWA_ALG_RS256
Definition: rhonabwy.h:121
@ R_JWA_ALG_A256GCMKW
Definition: rhonabwy.h:144
@ R_JWA_ALG_ES256K
Definition: rhonabwy.h:148
@ R_JWA_ALG_RS384
Definition: rhonabwy.h:122
@ R_JWA_ALG_UNKNOWN
Definition: rhonabwy.h:116
@ R_JWA_ALG_ECDH_ES_A128KW
Definition: rhonabwy.h:139
@ R_JWA_ALG_ECDH_ES
Definition: rhonabwy.h:138
@ R_JWA_ALG_HS256
Definition: rhonabwy.h:118
@ R_JWA_ALG_PS256
Definition: rhonabwy.h:128
@ R_JWA_ALG_PBES2_H256
Definition: rhonabwy.h:145
@ R_JWA_ALG_RSA_OAEP
Definition: rhonabwy.h:132
@ R_JWA_ALG_ECDH_ES_A256KW
Definition: rhonabwy.h:141
int _r_json_get_int_value(json_t *j_json, const char *key)
Definition: misc.c:165
int _r_json_set_int_value(json_t *j_json, const char *key, int i_value)
Definition: misc.c:121
int _r_json_set_json_t_value(json_t *j_json, const char *key, json_t *j_value)
Definition: misc.c:137
const char * _r_json_get_str_value(json_t *j_json, const char *key)
Definition: misc.c:158
json_t * _r_json_get_full_json_t(json_t *j_json)
Definition: misc.c:181
int _r_json_set_str_value(json_t *j_json, const char *key, const char *str_value)
Definition: misc.c:100
json_t * _r_json_get_json_t_value(json_t *j_json, const char *key)
Definition: misc.c:172
Definition: rhonabwy.h:173
size_t payload_len
Definition: rhonabwy.h:189
json_t * j_header
Definition: rhonabwy.h:179
unsigned char * iv
Definition: rhonabwy.h:186
jwa_enc enc
Definition: rhonabwy.h:181
jwks_t * jwks_privkey
Definition: rhonabwy.h:182
unsigned char * iv_b64url
Definition: rhonabwy.h:176
size_t key_len
Definition: rhonabwy.h:185
unsigned char * auth_tag_b64url
Definition: rhonabwy.h:178
unsigned char * header_b64url
Definition: rhonabwy.h:174
unsigned char * ciphertext_b64url
Definition: rhonabwy.h:177
jwa_alg alg
Definition: rhonabwy.h:180
unsigned char * key
Definition: rhonabwy.h:184
jwks_t * jwks_pubkey
Definition: rhonabwy.h:183
unsigned char * payload
Definition: rhonabwy.h:188
size_t iv_len
Definition: rhonabwy.h:187
unsigned char * encrypted_key_b64url
Definition: rhonabwy.h:175
Definition: rhonabwy.h:161
size_t payload_len
Definition: rhonabwy.h:170
jwks_t * jwks_pubkey
Definition: rhonabwy.h:168
jwks_t * jwks_privkey
Definition: rhonabwy.h:167
unsigned char * payload
Definition: rhonabwy.h:169
unsigned char * payload_b64url
Definition: rhonabwy.h:163
json_t * j_header
Definition: rhonabwy.h:165
unsigned char * signature_b64url
Definition: rhonabwy.h:164
jwa_alg alg
Definition: rhonabwy.h:166
unsigned char * header_b64url
Definition: rhonabwy.h:162
Definition: rhonabwy.h:192
jwa_alg enc_alg
Definition: rhonabwy.h:199
jwks_t * jwks_privkey_sign
Definition: rhonabwy.h:201
json_t * j_claims
Definition: rhonabwy.h:195
jwa_alg sign_alg
Definition: rhonabwy.h:198
jwa_enc enc
Definition: rhonabwy.h:200
jwks_t * jwks_pubkey_enc
Definition: rhonabwy.h:204
int type
Definition: rhonabwy.h:193
jws_t * jws
Definition: rhonabwy.h:196
jwks_t * jwks_privkey_enc
Definition: rhonabwy.h:203
jwe_t * jwe
Definition: rhonabwy.h:197
json_t * j_header
Definition: rhonabwy.h:194
jwks_t * jwks_pubkey_sign
Definition: rhonabwy.h:202