Rhonabwy
Javascript Object Signing and Encryption (JOSE) library - JWK, JWKS, JWS, JWE and JWT
rhonabwy.h
Go to the documentation of this file.
1
25#ifndef __RHONABWY_H_
26#define __RHONABWY_H_
27
28#ifdef __cplusplus
29extern "C"
30{
31#endif
32
33#include "rhonabwy-cfg.h"
34
35#include <stdint.h>
36#include <jansson.h>
37#include <gnutls/gnutls.h>
38#include <nettle/version.h>
39
46#define RHN_OK 0
47#define RHN_ERROR 1
48#define RHN_ERROR_MEMORY 2
49#define RHN_ERROR_PARAM 3
50#define RHN_ERROR_UNSUPPORTED 4
51#define RHN_ERROR_INVALID 5
52
53#define R_X509_TYPE_UNSPECIFIED 0
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_EC 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_NOW -1
82#define R_JWT_CLAIM_PRESENT -2
83
84#define R_JWK_THUMB_SHA256 0
85#define R_JWK_THUMB_SHA384 1
86#define R_JWK_THUMB_SHA512 2
87
88#define R_JSON_MODE_COMPACT 0
89#define R_JSON_MODE_GENERAL 1
90#define R_JSON_MODE_FLATTENED 2
91
92#define R_PARSE_NONE 0
93#define R_PARSE_HEADER_JWK 1
94#define R_PARSE_HEADER_JKU 2
95#define R_PARSE_HEADER_X5C 4
96#define R_PARSE_HEADER_X5U 8
97#define R_PARSE_HEADER_ALL (R_PARSE_HEADER_JWK|R_PARSE_HEADER_JKU|R_PARSE_HEADER_X5C|R_PARSE_HEADER_X5U)
98#define R_PARSE_UNSIGNED 16
99#define R_PARSE_ALL (R_PARSE_HEADER_ALL|R_PARSE_UNSIGNED)
100
101#define R_MAX_BODY_SIZE 4194304
102
113typedef json_t jwk_t;
114typedef json_t jwks_t;
115typedef json_int_t rhn_int_t;
116
117#define RHONABWY_INTEGER_FORMAT JSON_INTEGER_FORMAT
118
119typedef enum {
154
155typedef enum {
171
172typedef enum {
181
182typedef enum {
230
231typedef enum {
243 R_IMPORT_JKU = 11
245
246typedef struct {
247 unsigned char * header_b64url;
248 unsigned char * payload_b64url;
249 unsigned char * signature_b64url;
250 json_t * j_header;
254 unsigned char * payload;
258} jws_t;
259
260typedef struct {
261 unsigned char * header_b64url;
262 unsigned char * encrypted_key_b64url;
263 unsigned char * aad_b64url;
264 unsigned char * iv_b64url;
265 unsigned char * ciphertext_b64url;
266 unsigned char * auth_tag_b64url;
267 json_t * j_header;
273 unsigned char * aad;
274 size_t aad_len;
275 unsigned char * key;
276 size_t key_len;
277 unsigned char * iv;
278 size_t iv_len;
279 unsigned char * payload;
283} jwe_t;
284
285typedef struct {
286 int type;
287 uint32_t parse_flags;
288 json_t * j_header;
289 json_t * j_claims;
295 unsigned char * key;
296 size_t key_len;
297 unsigned char * iv;
298 size_t iv_len;
303} jwt_t;
304
322int r_global_init(void);
323
327void r_global_close(void);
328
336json_t * r_library_info_json_t(void);
337
345char * r_library_info_json_str(void);
346
352void r_free(void * data);
353
359int r_jwk_init(jwk_t ** jwk);
360
365void r_jwk_free(jwk_t * jwk);
366
372int r_jwks_init(jwks_t ** jwks);
373
378void r_jwks_free(jwks_t * jwks);
379
385int r_jws_init(jws_t ** jws);
386
391void r_jws_free(jws_t * jws);
392
398int r_jwe_init(jwe_t ** jwe);
399
404void r_jwe_free(jwe_t * jwe);
405
411int r_jwt_init(jwt_t ** jwt);
412
417void r_jwt_free(jwt_t * jwt);
418
424jwa_alg r_str_to_jwa_alg(const char * alg);
425
432const char * r_jwa_alg_to_str(jwa_alg alg);
433
439jwa_enc r_str_to_jwa_enc(const char * enc);
440
447const char * r_jwa_enc_to_str(jwa_enc enc);
448
484int r_jwk_key_type(jwk_t * jwk, unsigned int * bits, int x5u_flags);
485
492int r_jwk_is_valid(jwk_t * jwk);
493
506int r_jwk_is_valid_x5u(jwk_t * jwk, int x5u_flags);
507
519int r_jwk_generate_key_pair(jwk_t * jwk_privkey, jwk_t * jwk_pubkey, int type, unsigned int bits, const char * kid);
520
537const char * r_jwk_get_property_str(jwk_t * jwk, const char * key);
538
546const char * r_jwk_get_property_array(jwk_t * jwk, const char * key, size_t index);
547
554int r_jwk_get_property_array_size(jwk_t * jwk, const char * key);
555
564int r_jwk_set_property_str(jwk_t * jwk, const char * key, const char * value);
565
575int r_jwk_set_property_array(jwk_t * jwk, const char * key, size_t index, const char * value);
576
585int r_jwk_append_property_array(jwk_t * jwk, const char * key, const char * value);
586
594int r_jwk_delete_property_str(jwk_t * jwk, const char * key);
595
604int r_jwk_delete_property_array_at(jwk_t * jwk, const char * key, size_t index);
605
615int r_jwk_append_x5c(jwk_t * jwk, int format, const unsigned char * input, size_t input_len);
616
634int r_jwk_import_from_json_str(jwk_t * jwk, const char * input);
635
643int r_jwk_import_from_json_t(jwk_t * jwk, json_t * j_input);
644
655int r_jwk_import_from_pem_der(jwk_t * jwk, int type, int format, const unsigned char * input, size_t input_len);
656
664int r_jwk_import_from_gnutls_privkey(jwk_t * jwk, gnutls_privkey_t key);
665
673int r_jwk_import_from_gnutls_pubkey(jwk_t * jwk, gnutls_pubkey_t pub);
674
682int r_jwk_import_from_gnutls_x509_crt(jwk_t * jwk, gnutls_x509_crt_t crt);
683
695int r_jwk_import_from_x5u(jwk_t * jwk, int x5u_flags, const char * x5u);
696
704int r_jwk_import_from_x5c(jwk_t * jwk, const char * x5c);
705
714int r_jwk_import_from_symmetric_key(jwk_t * jwk, const unsigned char * key, size_t key_len);
715
723int r_jwk_import_from_password(jwk_t * jwk, const char * password);
724
737int r_jwk_extract_pubkey(jwk_t * jwk_privkey, jwk_t * jwk_pubkey, int x5u_flags);
738
748
754jwk_t * r_jwk_copy(jwk_t * jwk);
755
762int r_jwk_equal(jwk_t * jwk1, jwk_t * jwk2);
763
780char * r_jwk_export_to_json_str(jwk_t * jwk, int pretty);
781
787json_t * r_jwk_export_to_json_t(jwk_t * jwk);
788
794gnutls_privkey_t r_jwk_export_to_gnutls_privkey(jwk_t * jwk);
795
807gnutls_pubkey_t r_jwk_export_to_gnutls_pubkey(jwk_t * jwk, int x5u_flags);
808
822gnutls_x509_crt_t r_jwk_export_to_gnutls_crt(jwk_t * jwk, int x5u_flags);
823
839int r_jwk_export_to_pem_der(jwk_t * jwk, int format, unsigned char * output, size_t * output_len, int x5u_flags);
840
849int r_jwk_export_to_symmetric_key(jwk_t * jwk, unsigned char * key, size_t * key_len);
850
867char * r_jwk_thumbprint(jwk_t * jwk, int hash, int x5u_flags);
868
881int r_jwk_validate_x5c_chain(jwk_t * jwk, int x5u_flags);
882
897int r_jwk_match_json_t(jwk_t * jwk, json_t * j_match);
898
913int r_jwk_match_json_str(jwk_t * jwk, const char * str_match);
914
932int r_jwks_is_valid(jwks_t * jwks);
933
943int r_jwks_import_from_json_str(jwks_t * jwks, const char * input);
944
954int r_jwks_import_from_json_t(jwks_t * jwks, json_t * j_input);
955
969int r_jwks_import_from_uri(jwks_t * jwks, const char * uri, int x5u_flags);
970
981
987jwks_t * r_jwks_copy(jwks_t * jwks);
988
994size_t r_jwks_size(jwks_t * jwks);
995
1003jwk_t * r_jwks_get_at(jwks_t * jwks, size_t index);
1004
1012jwk_t * r_jwks_get_by_kid(jwks_t * jwks, const char * kid);
1013
1020int r_jwks_append_jwk(jwks_t * jwks, jwk_t * jwk);
1021
1029int r_jwks_set_at(jwks_t * jwks, size_t index, jwk_t * jwk);
1030
1037int r_jwks_remove_at(jwks_t * jwks, size_t index);
1038
1044int r_jwks_empty(jwks_t * jwks);
1045
1053int r_jwks_equal(jwks_t * jwks1, jwks_t * jwks2);
1054
1061char * r_jwks_export_to_json_str(jwks_t * jwks, int pretty);
1062
1068json_t * r_jwks_export_to_json_t(jwks_t * jwks);
1069
1077gnutls_privkey_t * r_jwks_export_to_gnutls_privkey(jwks_t * jwks, size_t * len);
1078
1091gnutls_pubkey_t * r_jwks_export_to_gnutls_pubkey(jwks_t * jwks, size_t * len, int x5u_flags);
1092
1108int r_jwks_export_to_pem_der(jwks_t * jwks, int format, unsigned char * output, size_t * output_len, int x5u_flags);
1109
1122jwks_t * r_jwks_search_json_t(jwks_t * jwks, json_t * j_match);
1123
1136jwks_t * r_jwks_search_json_str(jwks_t * jwks, const char * str_match);
1137
1153int r_jws_set_properties(jws_t * jws, ...);
1154
1160jws_t * r_jws_copy(jws_t * jws);
1161
1169int r_jws_set_payload(jws_t * jws, const unsigned char * payload, size_t payload_len);
1170
1177const unsigned char * r_jws_get_payload(jws_t * jws, size_t * payload_len);
1178
1185int r_jws_set_alg(jws_t * jws, jwa_alg alg);
1186
1193
1200const char * r_jws_get_kid(jws_t * jws);
1201
1209int r_jws_set_header_str_value(jws_t * jws, const char * key, const char * str_value);
1210
1218int r_jws_set_header_int_value(jws_t * jws, const char * key, rhn_int_t i_value);
1219
1227int r_jws_set_header_json_t_value(jws_t * jws, const char * key, json_t * j_value);
1228
1235int r_jws_set_full_header_json_t(jws_t * jws, json_t * j_value);
1236
1243int r_jws_set_full_header_json_str(jws_t * jws, const char * str_value);
1244
1251const char * r_jws_get_header_str_value(jws_t * jws, const char * key);
1252
1259rhn_int_t r_jws_get_header_int_value(jws_t * jws, const char * key);
1260
1267json_t * r_jws_get_header_json_t_value(jws_t * jws, const char * key);
1268
1274json_t * r_jws_get_full_header_json_t(jws_t * jws);
1275
1281char * r_jws_get_full_header_str(jws_t * jws);
1282
1290int r_jws_add_keys(jws_t * jws, jwk_t * jwk_privkey, jwk_t * jwk_pubkey);
1291
1299int r_jws_add_jwks(jws_t * jws, jwks_t * jwks_privkey, jwks_t * jwks_pubkey);
1300
1309int r_jws_add_keys_json_str(jws_t * jws, const char * privkey, const char * pubkey);
1310
1319int r_jws_add_keys_json_t(jws_t * jws, json_t * privkey, json_t * pubkey);
1320
1332int 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);
1333
1342int r_jws_add_keys_gnutls(jws_t * jws, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey);
1343
1351int r_jws_add_key_symmetric(jws_t * jws, const unsigned char * key, size_t key_len);
1352
1359
1366
1379int r_jws_parse(jws_t * jws, const char * jws_str, int x5u_flags);
1380
1394int r_jws_parsen(jws_t * jws, const char * jws_str, size_t jws_str_len, int x5u_flags);
1395
1418int r_jws_advanced_parse(jws_t * jws, const char * jws_str, uint32_t parse_flags, int x5u_flags);
1419
1443int r_jws_advanced_parsen(jws_t * jws, const char * jws_str, size_t jws_str_len, uint32_t parse_flags, int x5u_flags);
1444
1458int r_jws_parse_unsecure(jws_t * jws, const char * jws_str, int x5u_flags);
1459
1474int r_jws_parsen_unsecure(jws_t * jws, const char * jws_str, size_t jws_str_len, int x5u_flags);
1475
1488int r_jws_compact_parse(jws_t * jws, const char * jws_str, int x5u_flags);
1489
1513int r_jws_advanced_compact_parsen(jws_t * jws, const char * jws_str, size_t jws_str_len, uint32_t parse_flags, int x5u_flags);
1514
1537int r_jws_advanced_compact_parse(jws_t * jws, const char * jws_str, uint32_t parse_flags, int x5u_flags);
1538
1552int r_jws_compact_parsen(jws_t * jws, const char * jws_str, size_t jws_str_len, int x5u_flags);
1553
1568int r_jws_compact_parsen_unsecure(jws_t * jws, const char * jws_str, size_t jws_str_len, int x5u_flags);
1569
1583int r_jws_compact_parse_unsecure(jws_t * jws, const char * jws_str, int x5u_flags);
1584
1597int r_jws_parse_json_str(jws_t * jws, const char * jws_json_str, int x5u_flags);
1598
1612int r_jws_parsen_json_str(jws_t * jws, const char * jws_json_str, size_t jws_json_str_len, int x5u_flags);
1613
1626int r_jws_parse_json_t(jws_t * jws, json_t * jws_json, int x5u_flags);
1627
1650int r_jws_advanced_parse_json_str(jws_t * jws, const char * jws_json_str, uint32_t parse_flags, int x5u_flags);
1651
1675int r_jws_advanced_parsen_json_str(jws_t * jws, const char * jws_json_str, size_t jws_json_str_len, uint32_t parse_flags, int x5u_flags);
1676
1699int r_jws_advanced_parse_json_t(jws_t * jws, json_t * jws_json, uint32_t parse_flags, int x5u_flags);
1700
1722jws_t * r_jws_quick_parse(const char * jws_str, uint32_t parse_flags, int x5u_flags);
1723
1746jws_t * r_jws_quick_parsen(const char * jws_str, size_t jws_str_len, uint32_t parse_flags, int x5u_flags);
1747
1764int r_jws_verify_signature(jws_t * jws, jwk_t * jwk_pubkey, int x5u_flags);
1765
1779char * r_jws_serialize(jws_t * jws, jwk_t * jwk_privkey, int x5u_flags);
1780
1795char * r_jws_serialize_unsecure(jws_t * jws, jwk_t * jwk_privkey, int x5u_flags);
1796
1819json_t * r_jws_serialize_json_t(jws_t * jws, jwks_t * jwks_privkey, int x5u_flags, int mode);
1820
1843char * r_jws_serialize_json_str(jws_t * jws, jwks_t * jwks_privkey, int x5u_flags, int mode);
1844
1860int r_jwe_set_properties(jwe_t * jwe, ...);
1861
1867jwe_t * r_jwe_copy(jwe_t * jwe);
1868
1876int r_jwe_set_payload(jwe_t * jwe, const unsigned char * payload, size_t payload_len);
1877
1884const unsigned char * r_jwe_get_payload(jwe_t * jwe, size_t * payload_len);
1885
1892int r_jwe_set_alg(jwe_t * jwe, jwa_alg alg);
1893
1900
1907int r_jwe_set_enc(jwe_t * jwe, jwa_enc enc);
1908
1915
1922const char * r_jwe_get_kid(jwe_t * jwe);
1923
1931int r_jwe_set_header_str_value(jwe_t * jwe, const char * key, const char * str_value);
1932
1940int r_jwe_set_header_int_value(jwe_t * jwe, const char * key, rhn_int_t i_value);
1941
1949int r_jwe_set_header_json_t_value(jwe_t * jwe, const char * key, json_t * j_value);
1950
1957int r_jwe_set_full_header_json_t(jwe_t * jwe, json_t * j_header);
1958
1965int r_jwe_set_full_header_json_str(jwe_t * jwe, const char * str_header);
1966
1974int r_jwe_set_full_unprotected_header_json_t(jwe_t * jwe, json_t * j_unprotected_header);
1975
1983int r_jwe_set_full_unprotected_header_json_str(jwe_t * jwe, const char * str_unprotected_header);
1984
1991
1998
2005const char * r_jwe_get_header_str_value(jwe_t * jwe, const char * key);
2006
2013rhn_int_t r_jwe_get_header_int_value(jwe_t * jwe, const char * key);
2014
2021json_t * r_jwe_get_header_json_t_value(jwe_t * jwe, const char * key);
2022
2028json_t * r_jwe_get_full_header_json_t(jwe_t * jwe);
2029
2035char * r_jwe_get_full_header_str(jwe_t * jwe);
2036
2044int r_jwe_add_keys(jwe_t * jwe, jwk_t * jwk_privkey, jwk_t * jwk_pubkey);
2045
2053int r_jwe_add_jwks(jwe_t * jwe, jwks_t * jwks_privkey, jwks_t * jwks_pubkey);
2054
2063int r_jwe_add_keys_json_str(jwe_t * jwe, const char * privkey, const char * pubkey);
2064
2073int r_jwe_add_keys_json_t(jwe_t * jwe, json_t * privkey, json_t * pubkey);
2074
2086int 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);
2087
2096int r_jwe_add_keys_gnutls(jwe_t * jwe, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey);
2097
2105int r_jwe_add_key_symmetric(jwe_t * jwe, const unsigned char * key, size_t key_len);
2106
2113
2120
2128int r_jwe_set_cypher_key(jwe_t * jwe, const unsigned char * key, size_t key_len);
2129
2136const unsigned char * r_jwe_get_cypher_key(jwe_t * jwe, size_t * key_len);
2137
2144
2152int r_jwe_set_iv(jwe_t * jwe, const unsigned char * iv, size_t iv_len);
2153
2160const unsigned char * r_jwe_get_iv(jwe_t * jwe, size_t * iv_len);
2161
2167int r_jwe_generate_iv(jwe_t * jwe);
2168
2176int r_jwe_set_aad(jwe_t * jwe, const unsigned char * aad, size_t aad_len);
2177
2184const unsigned char * r_jwe_get_aad(jwe_t * jwe, size_t * aad_len);
2185
2191int r_jwe_encrypt_payload(jwe_t * jwe);
2192
2198int r_jwe_decrypt_payload(jwe_t * jwe);
2199
2212int r_jwe_encrypt_key(jwe_t * jwe, jwk_t * jwk_pubkey, int x5u_flags);
2213
2226int r_jwe_decrypt_key(jwe_t * jwe, jwk_t * jwk_privkey, int x5u_flags);
2227
2240int r_jwe_parse(jwe_t * jwe, const char * jwe_str, int x5u_flags);
2241
2255int r_jwe_parsen(jwe_t * jwe, const char * jwe_str, size_t jwe_str_len, int x5u_flags);
2256
2279int r_jwe_advanced_parse(jwe_t * jwe, const char * jwe_str, uint32_t parse_flags, int x5u_flags);
2280
2304int r_jwe_advanced_parsen(jwe_t * jwe, const char * jwe_str, size_t jwe_str_len, uint32_t parse_flags, int x5u_flags);
2305
2318int r_jwe_compact_parse(jwe_t * jwe, const char * jwe_str, int x5u_flags);
2319
2333int r_jwe_compact_parsen(jwe_t * jwe, const char * jwe_str, size_t jwe_str_len, int x5u_flags);
2334
2357int r_jwe_advanced_compact_parse(jwe_t * jwe, const char * jwe_str, uint32_t parse_flags, int x5u_flags);
2358
2382int r_jwe_advanced_compact_parsen(jwe_t * jwe, const char * jwe_str, size_t jwe_str_len, uint32_t parse_flags, int x5u_flags);
2383
2396int r_jwe_parse_json_str(jwe_t * jwe, const char * jwe_json_str, int x5u_flags);
2397
2411int r_jwe_parsen_json_str(jwe_t * jwe, const char * jwe_json_str, size_t jwe_json_str_len, int x5u_flags);
2412
2425int r_jwe_parse_json_t(jwe_t * jwe, json_t * jwe_json, int x5u_flags);
2426
2449int r_jwe_advanced_parse_json_str(jwe_t * jwe, const char * jwe_json_str, uint32_t parse_flags, int x5u_flags);
2450
2474int r_jwe_advanced_parsen_json_str(jwe_t * jwe, const char * jwe_json_str, size_t jwe_json_str_len, uint32_t parse_flags, int x5u_flags);
2475
2498int r_jwe_advanced_parse_json_t(jwe_t * jwe, json_t * jwe_json, uint32_t parse_flags, int x5u_flags);
2499
2521jwe_t * r_jwe_quick_parse(const char * jwe_str, uint32_t parse_flags, int x5u_flags);
2522
2545jwe_t * r_jwe_quick_parsen(const char * jwe_str, size_t jwe_str_len, uint32_t parse_flags, int x5u_flags);
2546
2560int r_jwe_decrypt(jwe_t * jwe, jwk_t * jwk_privkey, int x5u_flags);
2561
2575char * r_jwe_serialize(jwe_t * jwe, jwk_t * jwk_pubkey, int x5u_flags);
2576
2599char * r_jwe_serialize_json_str(jwe_t * jwe, jwks_t * jwks_pubkey, int x5u_flags, int mode);
2600
2623json_t * r_jwe_serialize_json_t(jwe_t * jwe, jwks_t * jwks_pubkey, int x5u_flags, int mode);
2624
2640int r_jwt_set_properties(jwt_t * jwt, ...);
2641
2647jwt_t * r_jwt_copy(jwt_t * jwt);
2648
2656int r_jwt_set_header_str_value(jwt_t * jwt, const char * key, const char * str_value);
2657
2665int r_jwt_set_header_int_value(jwt_t * jwt, const char * key, rhn_int_t i_value);
2666
2674int r_jwt_set_header_json_t_value(jwt_t * jwt, const char * key, json_t * j_value);
2675
2682int r_jwt_set_full_header_json_t(jwt_t * jwt, json_t * j_header);
2683
2690int r_jwt_set_full_header_json_str(jwt_t * jwt, const char * str_header);
2691
2698const char * r_jwt_get_header_str_value(jwt_t * jwt, const char * key);
2699
2706rhn_int_t r_jwt_get_header_int_value(jwt_t * jwt, const char * key);
2707
2714json_t * r_jwt_get_header_json_t_value(jwt_t * jwt, const char * key);
2715
2721json_t * r_jwt_get_full_header_json_t(jwt_t * jwt);
2722
2728char * r_jwt_get_full_header_str(jwt_t * jwt);
2729
2737int r_jwt_set_claim_str_value(jwt_t * jwt, const char * key, const char * str_value);
2738
2746int r_jwt_set_claim_int_value(jwt_t * jwt, const char * key, rhn_int_t i_value);
2747
2755int r_jwt_set_claim_json_t_value(jwt_t * jwt, const char * key, json_t * j_value);
2756
2763const char * r_jwt_get_claim_str_value(jwt_t * jwt, const char * key);
2764
2771rhn_int_t r_jwt_get_claim_int_value(jwt_t * jwt, const char * key);
2772
2779json_t * r_jwt_get_claim_json_t_value(jwt_t * jwt, const char * key);
2780
2786json_t * r_jwt_get_full_claims_json_t(jwt_t * jwt);
2787
2793char * r_jwt_get_full_claims_str(jwt_t * jwt);
2794
2802int r_jwt_set_full_claims_json_t(jwt_t * jwt, json_t * j_claim);
2803
2811int r_jwt_set_full_claims_json_str(jwt_t * jwt, const char * str_claims);
2812
2820int r_jwt_append_claims_json_t(jwt_t * jwt, json_t * j_claim);
2821
2829int r_jwt_add_sign_keys(jwt_t * jwt, jwk_t * privkey, jwk_t * pubkey);
2830
2838int r_jwt_add_sign_jwks(jwt_t * jwt, jwks_t * jwks_privkey, jwks_t * jwks_pubkey);
2839
2848int r_jwt_add_sign_keys_json_str(jwt_t * jwt, const char * privkey, const char * pubkey);
2849
2858int r_jwt_add_sign_keys_json_t(jwt_t * jwt, json_t * privkey, json_t * pubkey);
2859
2871int 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);
2872
2881int r_jwt_add_sign_keys_gnutls(jwt_t * jwt, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey);
2882
2890int r_jwt_add_sign_key_symmetric(jwt_t * jwt, const unsigned char * key, size_t key_len);
2891
2898
2905
2913int r_jwt_add_enc_keys(jwt_t * jwt, jwk_t * privkey, jwk_t * pubkey);
2914
2922int r_jwt_add_enc_jwks(jwt_t * jwt, jwks_t * jwks_privkey, jwks_t * jwks_pubkey);
2923
2932int r_jwt_add_enc_keys_json_str(jwt_t * jwt, const char * privkey, const char * pubkey);
2933
2942int r_jwt_add_enc_keys_json_t(jwt_t * jwt, json_t * privkey, json_t * pubkey);
2943
2955int 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);
2956
2965int r_jwt_add_enc_keys_gnutls(jwt_t * jwt, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey);
2966
2974int r_jwt_add_enc_key_symmetric(jwt_t * jwt, const unsigned char * key, size_t key_len);
2975
2982
2989
2996int r_jwt_set_sign_alg(jwt_t * jwt, jwa_alg alg);
2997
3004
3011int r_jwt_set_enc_alg(jwt_t * jwt, jwa_alg alg);
3012
3019
3026int r_jwt_set_enc(jwt_t * jwt, jwa_enc enc);
3027
3034
3041const char * r_jwt_get_enc_kid(jwt_t * jwt);
3042
3049const char * r_jwt_get_sig_kid(jwt_t * jwt);
3050
3058int r_jwt_set_enc_cypher_key(jwt_t * jwt, const unsigned char * key, size_t key_len);
3059
3066const unsigned char * r_jwt_get_enc_cypher_key(jwt_t * jwt, size_t * key_len);
3067
3074
3082int r_jwt_set_enc_iv(jwt_t * jwt, const unsigned char * iv, size_t iv_len);
3083
3090const unsigned char * r_jwt_get_enc_iv(jwt_t * jwt, size_t * iv_len);
3091
3098
3111char * r_jwt_serialize_signed(jwt_t * jwt, jwk_t * privkey, int x5u_flags);
3112
3126char * r_jwt_serialize_signed_unsecure(jwt_t * jwt, jwk_t * privkey, int x5u_flags);
3127
3140char * r_jwt_serialize_encrypted(jwt_t * jwt, jwk_t * pubkey, int x5u_flags);
3141
3166char * 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);
3167
3183int r_jwt_parse(jwt_t * jwt, const char * token, int x5u_flags);
3184
3201int r_jwt_parsen(jwt_t * jwt, const char * token, size_t token_len, int x5u_flags);
3202
3219int r_jwt_parse_unsecure(jwt_t * jwt, const char * token, int x5u_flags);
3220
3238int r_jwt_parsen_unsecure(jwt_t * jwt, const char * token, size_t token_len, int x5u_flags);
3239
3265int r_jwt_advanced_parse(jwt_t * jwt, const char * token, uint32_t parse_flags, int x5u_flags);
3266
3293int r_jwt_advanced_parsen(jwt_t * jwt, const char * token, size_t token_len, uint32_t parse_flags, int x5u_flags);
3294
3319jwt_t * r_jwt_quick_parse(const char * token, uint32_t parse_flags, int x5u_flags);
3320
3346jwt_t * r_jwt_quick_parsen(const char * token, size_t token_len, uint32_t parse_flags, int x5u_flags);
3347
3358int r_jwt_get_type(jwt_t * jwt);
3359
3369int r_jwt_token_type(const char * token);
3370
3381int r_jwt_token_typen(const char * token, size_t token_len);
3382
3397int r_jwt_verify_signature(jwt_t * jwt, jwk_t * pubkey, int x5u_flags);
3398
3412int r_jwt_decrypt(jwt_t * jwt, jwk_t * privkey, int x5u_flags);
3413
3436int 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);
3437
3452int r_jwt_decrypt_nested(jwt_t * jwt, jwk_t * decrypt_key, int decrypt_key_x5u_flags);
3453
3467int r_jwt_verify_signature_nested(jwt_t * jwt, jwk_t * verify_key, int verify_key_x5u_flags);
3468
3498int r_jwt_validate_claims(jwt_t * jwt, ...);
3499
3518int r_jwt_set_claims(jwt_t * jwt, ...);
3519
3524#ifndef DOXYGEN_SHOULD_SKIP_THIS
3525
3529int _r_json_set_str_value(json_t * j_json, const char * key, const char * str_value);
3530
3531int _r_json_set_int_value(json_t * j_json, const char * key, rhn_int_t i_value);
3532
3533int _r_json_set_json_t_value(json_t * j_json, const char * key, json_t * j_value);
3534
3535const char * _r_json_get_str_value(json_t * j_json, const char * key);
3536
3537rhn_int_t _r_json_get_int_value(json_t * j_json, const char * key);
3538
3539json_t * _r_json_get_json_t_value(json_t * j_json, const char * key);
3540
3541json_t * _r_json_get_full_json_t(json_t * j_json);
3542
3543size_t _r_get_key_size(jwa_enc enc);
3544
3545gnutls_cipher_algorithm_t _r_get_alg_from_enc(jwa_enc enc);
3546
3547int _r_deflate_payload(const unsigned char * uncompressed, size_t uncompressed_len, unsigned char ** compressed, size_t * compressed_len);
3548
3549int _r_inflate_payload(const unsigned char * compressed, size_t compressed_len, unsigned char ** uncompressed, size_t * uncompressed_len);
3550
3551#endif
3552
3553#ifdef __cplusplus
3554}
3555#endif
3556
3557#endif // __RHONABWY_H_
void r_jwe_free(jwe_t *jwe)
Definition: jwe.c:2745
json_t * r_library_info_json_t(void)
Definition: misc.c:691
int r_jws_init(jws_t **jws)
Definition: jws.c:845
jwa_enc r_str_to_jwa_enc(const char *enc)
Definition: misc.c:647
void r_jws_free(jws_t *jws)
Definition: jws.c:888
void r_jwk_free(jwk_t *jwk)
Definition: jwk.c:57
void r_jwks_free(jwks_t *jwks)
Definition: jwks.c:41
char * r_library_info_json_str(void)
Definition: misc.c:750
void r_jwt_free(jwt_t *jwt)
Definition: jwt.c:95
int r_jwks_init(jwks_t **jwks)
Definition: jwks.c:30
const char * r_jwa_alg_to_str(jwa_alg alg)
Definition: misc.c:543
const char * r_jwa_enc_to_str(jwa_enc enc)
Definition: misc.c:665
jwa_alg r_str_to_jwa_alg(const char *alg)
Definition: misc.c:471
int r_jwe_init(jwe_t **jwe)
Definition: jwe.c:2691
void r_free(void *data)
Definition: misc.c:760
void r_global_close(void)
Definition: misc.c:59
int r_global_init(void)
Definition: misc.c:37
int r_jwt_init(jwt_t **jwt)
Definition: jwt.c:34
int r_jwk_init(jwk_t **jwk)
Definition: jwk.c:46
gnutls_pubkey_t r_jwk_export_to_gnutls_pubkey(jwk_t *jwk, int x5u_flags)
Definition: jwk.c:2084
gnutls_privkey_t r_jwk_export_to_gnutls_privkey(jwk_t *jwk)
Definition: jwk.c:1787
gnutls_x509_crt_t r_jwk_export_to_gnutls_crt(jwk_t *jwk, int x5u_flags)
Definition: jwk.c:2354
int r_jwk_match_json_str(jwk_t *jwk, const char *str_match)
Definition: jwk.c:2914
json_t * r_jwk_export_to_json_t(jwk_t *jwk)
Definition: jwk.c:1779
int r_jwk_export_to_symmetric_key(jwk_t *jwk, unsigned char *key, size_t *key_len)
Definition: jwk.c:2464
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:2408
int r_jwk_match_json_t(jwk_t *jwk, json_t *j_match)
Definition: jwk.c:2893
int r_jwk_validate_x5c_chain(jwk_t *jwk, int x5u_flags)
Definition: jwk.c:2756
char * r_jwk_thumbprint(jwk_t *jwk, int hash, int x5u_flags)
Definition: jwk.c:2662
char * r_jwk_export_to_json_str(jwk_t *jwk, int pretty)
Definition: jwk.c:1771
int r_jwk_import_from_password(jwk_t *jwk, const char *password)
Definition: jwk.c:1677
int r_jwk_import_from_json_str(jwk_t *jwk, const char *input)
Definition: jwk.c:884
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:917
int r_jwk_import_from_json_t(jwk_t *jwk, json_t *j_input)
Definition: jwk.c:901
int r_jwk_import_from_gnutls_x509_crt(jwk_t *jwk, gnutls_x509_crt_t crt)
Definition: jwk.c:1572
int r_jwk_import_from_symmetric_key(jwk_t *jwk, const unsigned char *key, size_t key_len)
Definition: jwk.c:1652
int r_jwk_import_from_x5c(jwk_t *jwk, const char *x5c)
Definition: jwk.c:1630
int r_jwk_import_from_gnutls_pubkey(jwk_t *jwk, gnutls_pubkey_t pub)
Definition: jwk.c:1359
jwk_t * r_jwk_copy(jwk_t *jwk)
Definition: jwk.c:1759
int r_jwk_equal(jwk_t *jwk1, jwk_t *jwk2)
Definition: jwk.c:1767
jwk_t * r_jwk_quick_import(rhn_import type,...)
Definition: jwk.c:1681
int r_jwk_extract_pubkey(jwk_t *jwk_privkey, jwk_t *jwk_pubkey, int x5u_flags)
Definition: jwk.c:833
int r_jwk_import_from_x5u(jwk_t *jwk, int x5u_flags, const char *x5u)
Definition: jwk.c:1608
int r_jwk_import_from_gnutls_privkey(jwk_t *jwk, gnutls_privkey_t key)
Definition: jwk.c:1046
int r_jwe_parsen_json_str(jwe_t *jwe, const char *jwe_json_str, size_t jwe_json_str_len, int x5u_flags)
Definition: jwe.c:3963
int r_jwe_set_iv(jwe_t *jwe, const unsigned char *iv, size_t iv_len)
Definition: jwe.c:2899
int r_jwe_set_properties(jwe_t *jwe,...)
Definition: jwe.c:4523
int r_jwe_set_header_json_t_value(jwe_t *jwe, const char *key, json_t *j_value)
Definition: jwe.c:3100
int r_jwe_encrypt_payload(jwe_t *jwe)
Definition: jwe.c:3422
jwe_t * r_jwe_quick_parsen(const char *jwe_str, size_t jwe_str_len, uint32_t parse_flags, int x5u_flags)
Definition: jwe.c:4128
char * r_jwe_serialize_json_str(jwe_t *jwe, jwks_t *jwks_pubkey, int x5u_flags, int mode)
Definition: jwe.c:4313
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:3303
const unsigned char * r_jwe_get_aad(jwe_t *jwe, size_t *aad_len)
Definition: jwe.c:2981
int r_jwe_set_payload(jwe_t *jwe, const unsigned char *payload, size_t payload_len)
Definition: jwe.c:2801
int r_jwe_set_enc(jwe_t *jwe, jwa_enc enc)
Definition: jwe.c:3049
int r_jwe_decrypt_payload(jwe_t *jwe)
Definition: jwe.c:3586
const unsigned char * r_jwe_get_cypher_key(jwe_t *jwe, size_t *key_len)
Definition: jwe.c:2861
char * r_jwe_get_full_header_str(jwe_t *jwe)
Definition: jwe.c:3143
jwa_enc r_jwe_get_enc(jwe_t *jwe)
Definition: jwe.c:3060
int r_jwe_parse(jwe_t *jwe, const char *jwe_str, int x5u_flags)
Definition: jwe.c:3819
int r_jwe_set_alg(jwe_t *jwe, jwa_alg alg)
Definition: jwe.c:3030
int r_jwe_advanced_parse_json_t(jwe_t *jwe, json_t *jwe_json, uint32_t parse_flags, int x5u_flags)
Definition: jwe.c:3993
jwe_t * r_jwe_quick_parse(const char *jwe_str, uint32_t parse_flags, int x5u_flags)
Definition: jwe.c:4124
const unsigned char * r_jwe_get_iv(jwe_t *jwe, size_t *iv_len)
Definition: jwe.c:2934
int r_jwe_set_full_unprotected_header_json_t(jwe_t *jwe, json_t *j_unprotected_header)
Definition: jwe.c:4497
int r_jwe_advanced_parse_json_str(jwe_t *jwe, const char *jwe_json_str, uint32_t parse_flags, int x5u_flags)
Definition: jwe.c:3978
int r_jwe_add_keys_gnutls(jwe_t *jwe, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
Definition: jwe.c:3342
int r_jwe_generate_iv(jwe_t *jwe)
Definition: jwe.c:2991
int r_jwe_set_full_unprotected_header_json_str(jwe_t *jwe, const char *str_unprotected_header)
Definition: jwe.c:4513
int r_jwe_advanced_parse(jwe_t *jwe, const char *jwe_str, uint32_t parse_flags, int x5u_flags)
Definition: jwe.c:3846
int r_jwe_generate_cypher_key(jwe_t *jwe)
Definition: jwe.c:2871
json_t * r_jwe_get_header_json_t_value(jwe_t *jwe, const char *key)
Definition: jwe.c:3129
int r_jwe_add_keys(jwe_t *jwe, jwk_t *jwk_privkey, jwk_t *jwk_pubkey)
Definition: jwe.c:3166
int r_jwe_parse_json_str(jwe_t *jwe, const char *jwe_json_str, int x5u_flags)
Definition: jwe.c:3959
char * r_jwe_get_full_unprotected_header_str(jwe_t *jwe)
Definition: jwe.c:3158
int r_jwe_set_cypher_key(jwe_t *jwe, const unsigned char *key, size_t key_len)
Definition: jwe.c:2836
int r_jwe_add_keys_json_str(jwe_t *jwe, const char *privkey, const char *pubkey)
Definition: jwe.c:3225
int r_jwe_compact_parse(jwe_t *jwe, const char *jwe_str, int x5u_flags)
Definition: jwe.c:3877
int r_jwe_advanced_parsen(jwe_t *jwe, const char *jwe_str, size_t jwe_str_len, uint32_t parse_flags, int x5u_flags)
Definition: jwe.c:3850
jwks_t * r_jwe_get_jwks_pubkey(jwe_t *jwe)
Definition: jwe.c:3414
json_t * r_jwe_get_full_unprotected_header_json_t(jwe_t *jwe)
Definition: jwe.c:3151
int r_jwe_add_keys_json_t(jwe_t *jwe, json_t *privkey, json_t *pubkey)
Definition: jwe.c:3264
int r_jwe_advanced_compact_parsen(jwe_t *jwe, const char *jwe_str, size_t jwe_str_len, uint32_t parse_flags, int x5u_flags)
Definition: jwe.c:3885
int r_jwe_set_full_header_json_t(jwe_t *jwe, json_t *j_header)
Definition: jwe.c:4451
int r_jwe_parsen(jwe_t *jwe, const char *jwe_str, size_t jwe_str_len, int x5u_flags)
Definition: jwe.c:3823
json_t * r_jwe_get_full_header_json_t(jwe_t *jwe)
Definition: jwe.c:3136
int r_jwe_add_key_symmetric(jwe_t *jwe, const unsigned char *key, size_t key_len)
Definition: jwe.c:3381
int r_jwe_decrypt(jwe_t *jwe, jwk_t *jwk_privkey, int x5u_flags)
Definition: jwe.c:4145
int r_jwe_decrypt_key(jwe_t *jwe, jwk_t *jwk_privkey, int x5u_flags)
Definition: jwe.c:3793
int r_jwe_compact_parsen(jwe_t *jwe, const char *jwe_str, size_t jwe_str_len, int x5u_flags)
Definition: jwe.c:3873
const unsigned char * r_jwe_get_payload(jwe_t *jwe, size_t *payload_len)
Definition: jwe.c:2826
json_t * r_jwe_serialize_json_t(jwe_t *jwe, jwks_t *jwks_pubkey, int x5u_flags, int mode)
Definition: jwe.c:4320
int r_jwe_set_aad(jwe_t *jwe, const unsigned char *aad, size_t aad_len)
Definition: jwe.c:2944
const char * r_jwe_get_kid(jwe_t *jwe)
Definition: jwe.c:3068
rhn_int_t r_jwe_get_header_int_value(jwe_t *jwe, const char *key)
Definition: jwe.c:3122
int r_jwe_parse_json_t(jwe_t *jwe, json_t *jwe_json, int x5u_flags)
Definition: jwe.c:3974
jwa_alg r_jwe_get_alg(jwe_t *jwe)
Definition: jwe.c:3041
int r_jwe_advanced_parsen_json_str(jwe_t *jwe, const char *jwe_json_str, size_t jwe_json_str_len, uint32_t parse_flags, int x5u_flags)
Definition: jwe.c:3982
int r_jwe_encrypt_key(jwe_t *jwe, jwk_t *jwk_pubkey, int x5u_flags)
Definition: jwe.c:3745
int r_jwe_set_full_header_json_str(jwe_t *jwe, const char *str_header)
Definition: jwe.c:4487
char * r_jwe_serialize(jwe_t *jwe, jwk_t *jwk_pubkey, int x5u_flags)
Definition: jwe.c:4255
jwe_t * r_jwe_copy(jwe_t *jwe)
Definition: jwe.c:2766
jwks_t * r_jwe_get_jwks_privkey(jwe_t *jwe)
Definition: jwe.c:3406
int r_jwe_set_header_str_value(jwe_t *jwe, const char *key, const char *str_value)
Definition: jwe.c:3072
int r_jwe_advanced_compact_parse(jwe_t *jwe, const char *jwe_str, uint32_t parse_flags, int x5u_flags)
Definition: jwe.c:3881
int r_jwe_set_header_int_value(jwe_t *jwe, const char *key, rhn_int_t i_value)
Definition: jwe.c:3086
int r_jwe_add_jwks(jwe_t *jwe, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
Definition: jwe.c:3192
const char * r_jwe_get_header_str_value(jwe_t *jwe, const char *key)
Definition: jwe.c:3115
const char * r_jwk_get_property_str(jwk_t *jwk, const char *key)
Definition: jwk.c:2501
int r_jwk_set_property_array(jwk_t *jwk, const char *key, size_t index, const char *value)
Definition: jwk.c:2552
int r_jwk_delete_property_str(jwk_t *jwk, const char *key)
Definition: jwk.c:2594
int r_jwk_append_property_array(jwk_t *jwk, const char *key, const char *value)
Definition: jwk.c:2576
const char * r_jwk_get_property_array(jwk_t *jwk, const char *key, size_t index)
Definition: jwk.c:2513
int r_jwk_set_property_str(jwk_t *jwk, const char *key, const char *value)
Definition: jwk.c:2539
int r_jwk_append_x5c(jwk_t *jwk, int format, const unsigned char *input, size_t input_len)
Definition: jwk.c:2620
int r_jwk_get_property_array_size(jwk_t *jwk, const char *key)
Definition: jwk.c:2526
int r_jwk_delete_property_array_at(jwk_t *jwk, const char *key, size_t index)
Definition: jwk.c:2607
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:487
int r_jwk_is_valid_x5u(jwk_t *jwk, int x5u_flags)
Definition: jwk.c:403
int r_jwk_key_type(jwk_t *jwk, unsigned int *bits, int x5u_flags)
Definition: jwk.c:640
int r_jwk_is_valid(jwk_t *jwk)
Definition: jwk.c:63
size_t r_jwks_size(jwks_t *jwks)
Definition: jwks.c:68
jwks_t * r_jwks_search_json_t(jwks_t *jwks, json_t *j_match)
Definition: jwks.c:471
json_t * r_jwks_export_to_json_t(jwks_t *jwks)
Definition: jwks.c:169
jwk_t * r_jwks_get_at(jwks_t *jwks, size_t index)
Definition: jwks.c:76
int r_jwks_import_from_uri(jwks_t *jwks, const char *uri, int x5u_flags)
Definition: jwks.c:310
char * r_jwks_export_to_json_str(jwks_t *jwks, int pretty)
Definition: jwks.c:161
jwks_t * r_jwks_search_json_str(jwks_t *jwks, const char *str_match)
Definition: jwks.c:494
int r_jwks_equal(jwks_t *jwks1, jwks_t *jwks2)
Definition: jwks.c:157
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
jwks_t * r_jwks_copy(jwks_t *jwks)
Definition: jwks.c:97
jwks_t * r_jwks_quick_import(rhn_import,...)
Definition: jwks.c:336
int r_jwks_import_from_json_str(jwks_t *jwks, const char *input)
Definition: jwks.c:248
gnutls_pubkey_t * r_jwks_export_to_gnutls_pubkey(jwks_t *jwks, size_t *len, int x5u_flags)
Definition: jwks.c:199
gnutls_privkey_t * r_jwks_export_to_gnutls_privkey(jwks_t *jwks, size_t *len)
Definition: jwks.c:177
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
int r_jws_set_full_header_json_t(jws_t *jws, json_t *j_value)
Definition: jws.c:2006
jwks_t * r_jws_get_jwks_privkey(jws_t *jws)
Definition: jws.c:1365
int r_jws_compact_parsen_unsecure(jws_t *jws, const char *jws_str, size_t jws_str_len, int x5u_flags)
Definition: jws.c:1441
json_t * r_jws_get_full_header_json_t(jws_t *jws)
Definition: jws.c:1110
int r_jws_advanced_parse_json_str(jws_t *jws, const char *jws_json_str, uint32_t parse_flags, int x5u_flags)
Definition: jws.c:1562
int r_jws_advanced_parse_json_t(jws_t *jws, json_t *jws_json, uint32_t parse_flags, int x5u_flags)
Definition: jws.c:1577
int r_jws_verify_signature(jws_t *jws, jwk_t *jwk_pubkey, int x5u_flags)
Definition: jws.c:1778
int r_jws_set_header_str_value(jws_t *jws, const char *key, const char *str_value)
Definition: jws.c:1046
jws_t * r_jws_quick_parse(const char *jws_str, uint32_t parse_flags, int x5u_flags)
Definition: jws.c:1757
char * r_jws_serialize_json_str(jws_t *jws, jwks_t *jwks_privkey, int x5u_flags, int mode)
Definition: jws.c:1923
int r_jws_add_keys(jws_t *jws, jwk_t *jwk_privkey, jwk_t *jwk_pubkey)
Definition: jws.c:1125
int r_jws_add_key_symmetric(jws_t *jws, const unsigned char *key, size_t key_len)
Definition: jws.c:1340
rhn_int_t r_jws_get_header_int_value(jws_t *jws, const char *key)
Definition: jws.c:1096
int r_jws_advanced_compact_parse(jws_t *jws, const char *jws_str, uint32_t parse_flags, int x5u_flags)
Definition: jws.c:1449
const char * r_jws_get_kid(jws_t *jws)
Definition: jws.c:1036
int r_jws_set_properties(jws_t *jws,...)
Definition: jws.c:2043
json_t * r_jws_serialize_json_t(jws_t *jws, jwks_t *jwks_privkey, int x5u_flags, int mode)
Definition: jws.c:1930
jwks_t * r_jws_get_jwks_pubkey(jws_t *jws)
Definition: jws.c:1373
int r_jws_advanced_parsen(jws_t *jws, const char *jws_str, size_t jws_str_len, uint32_t parse_flags, int x5u_flags)
Definition: jws.c:1401
int r_jws_parsen_unsecure(jws_t *jws, const char *jws_str, size_t jws_str_len, int x5u_flags)
Definition: jws.c:1393
int r_jws_advanced_parse(jws_t *jws, const char *jws_str, uint32_t parse_flags, int x5u_flags)
Definition: jws.c:1397
int r_jws_parse_unsecure(jws_t *jws, const char *jws_str, int x5u_flags)
Definition: jws.c:1389
int r_jws_set_header_json_t_value(jws_t *jws, const char *key, json_t *j_value)
Definition: jws.c:1074
char * r_jws_serialize(jws_t *jws, jwk_t *jwk_privkey, int x5u_flags)
Definition: jws.c:1870
int r_jws_parsen(jws_t *jws, const char *jws_str, size_t jws_str_len, int x5u_flags)
Definition: jws.c:1385
int r_jws_compact_parsen(jws_t *jws, const char *jws_str, size_t jws_str_len, int x5u_flags)
Definition: jws.c:1424
jws_t * r_jws_quick_parsen(const char *jws_str, size_t jws_str_len, uint32_t parse_flags, int x5u_flags)
Definition: jws.c:1761
int r_jws_advanced_parsen_json_str(jws_t *jws, const char *jws_json_str, size_t jws_json_str_len, uint32_t parse_flags, int x5u_flags)
Definition: jws.c:1566
int r_jws_parsen_json_str(jws_t *jws, const char *jws_json_str, size_t jws_json_str_len, int x5u_flags)
Definition: jws.c:1547
int r_jws_parse_json_t(jws_t *jws, json_t *jws_json, int x5u_flags)
Definition: jws.c:1543
int r_jws_add_keys_json_str(jws_t *jws, const char *privkey, const char *pubkey)
Definition: jws.c:1184
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:1262
int r_jws_add_keys_gnutls(jws_t *jws, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
Definition: jws.c:1301
jws_t * r_jws_copy(jws_t *jws)
Definition: jws.c:902
char * r_jws_serialize_unsecure(jws_t *jws, jwk_t *jwk_privkey, int x5u_flags)
Definition: jws.c:1878
int r_jws_compact_parse_unsecure(jws_t *jws, const char *jws_str, int x5u_flags)
Definition: jws.c:1445
int r_jws_add_jwks(jws_t *jws, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
Definition: jws.c:1151
json_t * r_jws_get_header_json_t_value(jws_t *jws, const char *key)
Definition: jws.c:1103
int r_jws_set_payload(jws_t *jws, const unsigned char *payload, size_t payload_len)
Definition: jws.c:930
int r_jws_advanced_compact_parsen(jws_t *jws, const char *jws_str, size_t jws_str_len, uint32_t parse_flags, int x5u_flags)
Definition: jws.c:1453
jwa_alg r_jws_get_alg(jws_t *jws)
Definition: jws.c:1028
int r_jws_set_full_header_json_str(jws_t *jws, const char *str_value)
Definition: jws.c:2033
int r_jws_parse_json_str(jws_t *jws, const char *jws_json_str, int x5u_flags)
Definition: jws.c:1558
int r_jws_compact_parse(jws_t *jws, const char *jws_str, int x5u_flags)
Definition: jws.c:1437
char * r_jws_get_full_header_str(jws_t *jws)
Definition: jws.c:1117
int r_jws_parse(jws_t *jws, const char *jws_str, int x5u_flags)
Definition: jws.c:1381
int r_jws_add_keys_json_t(jws_t *jws, json_t *privkey, json_t *pubkey)
Definition: jws.c:1223
const char * r_jws_get_header_str_value(jws_t *jws, const char *key)
Definition: jws.c:1089
int r_jws_set_alg(jws_t *jws, jwa_alg alg)
Definition: jws.c:965
const unsigned char * r_jws_get_payload(jws_t *jws, size_t *payload_len)
Definition: jws.c:955
int r_jws_set_header_int_value(jws_t *jws, const char *key, rhn_int_t i_value)
Definition: jws.c:1060
int r_jwt_set_sign_alg(jwt_t *jwt, jwa_alg alg)
Definition: jwt.c:814
int r_jwt_token_typen(const char *token, size_t token_len)
Definition: jwt.c:2380
int r_jwt_add_enc_key_symmetric(jwt_t *jwt, const unsigned char *key, size_t key_len)
Definition: jwt.c:773
int r_jwt_set_claims(jwt_t *jwt,...)
Definition: jwt.c:1962
int r_jwt_advanced_parse(jwt_t *jwt, const char *token, uint32_t parse_flags, int x5u_flags)
Definition: jwt.c:1202
const char * r_jwt_get_claim_str_value(jwt_t *jwt, const char *key)
Definition: jwt.c:220
json_t * r_jwt_get_full_claims_json_t(jwt_t *jwt)
Definition: jwt.c:241
const unsigned char * r_jwt_get_enc_iv(jwt_t *jwt, size_t *iv_len)
Definition: jwt.c:952
int r_jwt_decrypt_nested(jwt_t *jwt, jwk_t *decrypt_key, int decrypt_key_x5u_flags)
Definition: jwt.c:1564
char * r_jwt_serialize_encrypted(jwt_t *jwt, jwk_t *pubkey, int x5u_flags)
Definition: jwt.c:1055
int r_jwt_set_header_json_t_value(jwt_t *jwt, const char *key, json_t *j_value)
Definition: jwt.c:152
jwks_t * r_jwt_get_sign_jwks_pubkey(jwt_t *jwt)
Definition: jwt.c:550
int r_jwt_verify_signature(jwt_t *jwt, jwk_t *pubkey, int x5u_flags)
Definition: jwt.c:1341
char * r_jwt_serialize_signed_unsecure(jwt_t *jwt, jwk_t *privkey, int x5u_flags)
Definition: jwt.c:1014
int r_jwt_add_sign_keys_json_t(jwt_t *jwt, json_t *privkey, json_t *pubkey)
Definition: jwt.c:400
char * r_jwt_get_full_claims_str(jwt_t *jwt)
Definition: jwt.c:248
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:439
json_t * r_jwt_get_full_header_json_t(jwt_t *jwt)
Definition: jwt.c:181
const char * r_jwt_get_sig_kid(jwt_t *jwt)
Definition: jwt.c:1002
jwa_alg r_jwt_get_enc_alg(jwt_t *jwt)
Definition: jwt.c:846
int r_jwt_set_enc_iv(jwt_t *jwt, const unsigned char *iv, size_t iv_len)
Definition: jwt.c:927
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:1105
jwks_t * r_jwt_get_enc_jwks_privkey(jwt_t *jwt)
Definition: jwt.c:798
int r_jwt_parse_unsecure(jwt_t *jwt, const char *token, int x5u_flags)
Definition: jwt.c:1198
rhn_int_t r_jwt_get_claim_int_value(jwt_t *jwt, const char *key)
Definition: jwt.c:227
jwks_t * r_jwt_get_sign_jwks_privkey(jwt_t *jwt)
Definition: jwt.c:542
jwa_enc r_jwt_get_enc(jwt_t *jwt)
Definition: jwt.c:990
const char * r_jwt_get_header_str_value(jwt_t *jwt, const char *key)
Definition: jwt.c:160
jwt_t * r_jwt_copy(jwt_t *jwt)
Definition: jwt.c:111
const unsigned char * r_jwt_get_enc_cypher_key(jwt_t *jwt, size_t *key_len)
Definition: jwt.c:891
int r_jwt_set_enc_alg(jwt_t *jwt, jwa_alg alg)
Definition: jwt.c:834
int r_jwt_set_full_header_json_t(jwt_t *jwt, json_t *j_header)
Definition: jwt.c:2107
jwt_t * r_jwt_quick_parsen(const char *token, size_t token_len, uint32_t parse_flags, int x5u_flags)
Definition: jwt.c:1316
json_t * r_jwt_get_claim_json_t_value(jwt_t *jwt, const char *key)
Definition: jwt.c:234
int r_jwt_decrypt(jwt_t *jwt, jwk_t *privkey, int x5u_flags)
Definition: jwt.c:1366
int r_jwt_token_type(const char *token)
Definition: jwt.c:2376
jwt_t * r_jwt_quick_parse(const char *token, uint32_t parse_flags, int x5u_flags)
Definition: jwt.c:1312
int r_jwt_set_full_claims_json_str(jwt_t *jwt, const char *str_claims)
Definition: jwt.c:267
int r_jwt_set_claim_str_value(jwt_t *jwt, const char *key, const char *str_value)
Definition: jwt.c:196
int r_jwt_set_enc_cypher_key(jwt_t *jwt, const unsigned char *key, size_t key_len)
Definition: jwt.c:866
int r_jwt_parsen(jwt_t *jwt, const char *token, size_t token_len, int x5u_flags)
Definition: jwt.c:1190
int r_jwt_set_claim_int_value(jwt_t *jwt, const char *key, rhn_int_t i_value)
Definition: jwt.c:204
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:695
jwa_alg r_jwt_get_sign_alg(jwt_t *jwt)
Definition: jwt.c:826
int r_jwt_advanced_parsen(jwt_t *jwt, const char *token, size_t token_len, uint32_t parse_flags, int x5u_flags)
Definition: jwt.c:1206
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:1420
jwks_t * r_jwt_get_enc_jwks_pubkey(jwt_t *jwt)
Definition: jwt.c:806
int r_jwt_set_claim_json_t_value(jwt_t *jwt, const char *key, json_t *j_value)
Definition: jwt.c:212
int r_jwt_verify_signature_nested(jwt_t *jwt, jwk_t *verify_key, int verify_key_x5u_flags)
Definition: jwt.c:1661
int r_jwt_set_properties(jwt_t *jwt,...)
Definition: jwt.c:2161
rhn_int_t r_jwt_get_header_int_value(jwt_t *jwt, const char *key)
Definition: jwt.c:167
int r_jwt_add_enc_jwks(jwt_t *jwt, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
Definition: jwt.c:584
int r_jwt_add_sign_keys_gnutls(jwt_t *jwt, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
Definition: jwt.c:478
int r_jwt_add_enc_keys_json_str(jwt_t *jwt, const char *privkey, const char *pubkey)
Definition: jwt.c:617
int r_jwt_validate_claims(jwt_t *jwt,...)
Definition: jwt.c:1693
int r_jwt_add_sign_key_symmetric(jwt_t *jwt, const unsigned char *key, size_t key_len)
Definition: jwt.c:517
int r_jwt_parsen_unsecure(jwt_t *jwt, const char *token, size_t token_len, int x5u_flags)
Definition: jwt.c:1194
char * r_jwt_get_full_header_str(jwt_t *jwt)
Definition: jwt.c:188
int r_jwt_set_header_str_value(jwt_t *jwt, const char *key, const char *str_value)
Definition: jwt.c:136
int r_jwt_parse(jwt_t *jwt, const char *token, int x5u_flags)
Definition: jwt.c:1186
int r_jwt_set_full_claims_json_t(jwt_t *jwt, json_t *j_claim)
Definition: jwt.c:256
int r_jwt_add_sign_keys(jwt_t *jwt, jwk_t *privkey, jwk_t *pubkey)
Definition: jwt.c:302
int r_jwt_append_claims_json_t(jwt_t *jwt, json_t *j_claim)
Definition: jwt.c:284
int r_jwt_add_sign_keys_json_str(jwt_t *jwt, const char *privkey, const char *pubkey)
Definition: jwt.c:361
int r_jwt_set_enc(jwt_t *jwt, jwa_enc enc)
Definition: jwt.c:854
int r_jwt_add_sign_jwks(jwt_t *jwt, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
Definition: jwt.c:328
int r_jwt_add_enc_keys(jwt_t *jwt, jwk_t *privkey, jwk_t *pubkey)
Definition: jwt.c:558
int r_jwt_add_enc_keys_json_t(jwt_t *jwt, json_t *privkey, json_t *pubkey)
Definition: jwt.c:656
int r_jwt_set_full_header_json_str(jwt_t *jwt, const char *str_header)
Definition: jwt.c:2151
const char * r_jwt_get_enc_kid(jwt_t *jwt)
Definition: jwt.c:998
int r_jwt_set_header_int_value(jwt_t *jwt, const char *key, rhn_int_t i_value)
Definition: jwt.c:144
int r_jwt_generate_iv(jwt_t *jwt)
char * r_jwt_serialize_signed(jwt_t *jwt, jwk_t *privkey, int x5u_flags)
Definition: jwt.c:1006
json_t * r_jwt_get_header_json_t_value(jwt_t *jwt, const char *key)
Definition: jwt.c:174
int r_jwt_add_enc_keys_gnutls(jwt_t *jwt, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
Definition: jwt.c:734
int r_jwt_generate_enc_cypher_key(jwt_t *jwt)
Definition: jwt.c:901
int r_jwt_get_type(jwt_t *jwt)
Definition: jwt.c:1333
jwa_enc
Definition: rhonabwy.h:172
rhn_opt
Definition: rhonabwy.h:182
json_int_t rhn_int_t
Definition: rhonabwy.h:115
rhn_import
Definition: rhonabwy.h:231
rhn_claim_opt
Definition: rhonabwy.h:155
jwa_alg
Definition: rhonabwy.h:119
json_t jwk_t
Definition: rhonabwy.h:113
json_t jwks_t
Definition: rhonabwy.h:114
@ R_JWA_ENC_UNKNOWN
Definition: rhonabwy.h:173
@ R_JWA_ENC_A192GCM
Definition: rhonabwy.h:178
@ R_JWA_ENC_A128GCM
Definition: rhonabwy.h:177
@ R_JWA_ENC_A128CBC
Definition: rhonabwy.h:174
@ R_JWA_ENC_A256GCM
Definition: rhonabwy.h:179
@ R_JWA_ENC_A192CBC
Definition: rhonabwy.h:175
@ R_JWA_ENC_A256CBC
Definition: rhonabwy.h:176
@ RHN_OPT_VERIFY_KEY_JWKS
Public key set in JWKS format to verify the token signature, following parameter must be a jwks_t * v...
Definition: rhonabwy.h:212
@ RHN_OPT_SIG_ALG
Signature algorithm, following parameter must be a jwa_alg value.
Definition: rhonabwy.h:201
@ RHN_OPT_HEADER_JSON_T_VALUE
Header JSON value, following parameters must be const char * name, json_t * j_value.
Definition: rhonabwy.h:187
@ RHN_OPT_HEADER_INT_VALUE
Header Integer value, following parameters must be const char * name, int i_value.
Definition: rhonabwy.h:184
@ RHN_OPT_DECRYPT_KEY_JWK
Private key in JWK format to decrypt the token, following parameter must be a jwk_t * value.
Definition: rhonabwy.h:223
@ RHN_OPT_SIGN_KEY_JSON_T
Private key in JSON format to sign the token, following parameter must be a json_t * value.
Definition: rhonabwy.h:208
@ RHN_OPT_ENCRYPT_KEY_JSON_T
Public key in JSON format to encrypt the token, following parameter must be a json_t * value.
Definition: rhonabwy.h:220
@ RHN_OPT_HEADER_FULL_JSON_STR
Stringified JSON value to set the entire header, following parameter must be const char * str_value.
Definition: rhonabwy.h:189
@ RHN_OPT_DECRYPT_KEY_JWKS
Private key set in JWKS format to decrypt the token, following parameter must be a jwks_t * value.
Definition: rhonabwy.h:224
@ RHN_OPT_ENCRYPT_KEY_JSON_STR
Public key in stringified JSON format to encrypt the token, following parameter must be a const char ...
Definition: rhonabwy.h:221
@ RHN_OPT_VERIFY_KEY_JWK
Public key in JWK format to verify the token signature, following parameter must be a jwk_t * value.
Definition: rhonabwy.h:211
@ RHN_OPT_DECRYPT_KEY_JSON_STR
Private key in stringified JSON format to decrypt the token, following parameter must be a const char...
Definition: rhonabwy.h:227
@ RHN_OPT_ENCRYPT_KEY_GNUTLS
Public key in GnuTLS format to encrypt the token, following parameter must be a gnutls_pubkey_t value...
Definition: rhonabwy.h:219
@ RHN_OPT_VERIFY_KEY_GNUTLS
Public key in GnuTLS format to verify the token signature, following parameter must be a gnutls_pubke...
Definition: rhonabwy.h:213
@ RHN_OPT_SIGN_KEY_GNUTLS
Private key in GnuTLS format to sign the token, following parameter must be a gnutls_privkey_t value.
Definition: rhonabwy.h:207
@ RHN_OPT_HEADER_STR_VALUE
Header String value, following parameters must be const char * name, const char * str_value.
Definition: rhonabwy.h:186
@ RHN_OPT_ENCRYPT_KEY_PEM_DER
Public key in PEM or DER format to encrypt the token, following parameter must be R_FORMAT_PEM or R_F...
Definition: rhonabwy.h:222
@ RHN_OPT_UN_HEADER_FULL_JSON_STR
Stringified JSON value to set the entire unprotected header, following parameter must be const char *...
Definition: rhonabwy.h:191
@ RHN_OPT_AAD
Additional Authenticated Data (AAD) for data encryption, following parameters must be const unsigned ...
Definition: rhonabwy.h:204
@ RHN_OPT_HEADER_FULL_JSON_T
JSON value to set the entire header, following parameter must be json_t * j_value.
Definition: rhonabwy.h:188
@ RHN_OPT_CLAIM_INT_VALUE
Claims Integer value, following parameters must be const char * name, int i_value.
Definition: rhonabwy.h:193
@ RHN_OPT_VERIFY_KEY_JSON_STR
Public key in stringified JSON format to verify the token signature, following parameter must be a co...
Definition: rhonabwy.h:215
@ RHN_OPT_CIPHER_KEY
Cipher key to encrypt data, following parameters must be const unsigned char * value,...
Definition: rhonabwy.h:202
@ RHN_OPT_SIGN_KEY_JWK
Private key in JWK format to sign the token, following parameter must be a jwk_t * value.
Definition: rhonabwy.h:205
@ RHN_OPT_VERIFY_KEY_PEM_DER
Public key in PEM or DER format to verify the token signature, following parameter must be R_FORMAT_P...
Definition: rhonabwy.h:216
@ RHN_OPT_CLAIM_FULL_JSON_STR
Stringified JSON value to set the entire claims, following parameter must be const char * str_value.
Definition: rhonabwy.h:198
@ RHN_OPT_CLAIM_STR_VALUE
Claims String value, following parameters must be const char * name, const char * str_value.
Definition: rhonabwy.h:195
@ RHN_OPT_IV
Initial Value (IV) for data encryption, following parameters must be const unsigned char * value,...
Definition: rhonabwy.h:203
@ RHN_OPT_SIGN_KEY_PEM_DER
Private key in PEM or DER format to sign the token, following parameter must be R_FORMAT_PEM or R_FOR...
Definition: rhonabwy.h:210
@ RHN_OPT_HEADER_RHN_INT_VALUE
Header rhn_int_t value, following parameters must be const char * name, rhn_int_t i_value.
Definition: rhonabwy.h:185
@ RHN_OPT_DECRYPT_KEY_JSON_T
Private key in JSON format to decrypt the token, following parameter must be a json_t * value.
Definition: rhonabwy.h:226
@ RHN_OPT_CLAIM_JSON_T_VALUE
Claims JSON value, following parameters must be const char * name, json_t * j_value.
Definition: rhonabwy.h:196
@ RHN_OPT_DECRYPT_KEY_PEM_DER
Private key in PEM or DER format to decrypt the token, following parameter must be R_FORMAT_PEM or R_...
Definition: rhonabwy.h:228
@ RHN_OPT_SIGN_KEY_JWKS
Private key set in JWKS format to sign the token, following parameter must be a jwks_t * value.
Definition: rhonabwy.h:206
@ RHN_OPT_SIGN_KEY_JSON_STR
Private key in stringified JSON format to sign the token, following parameter must be a const char * ...
Definition: rhonabwy.h:209
@ RHN_OPT_UN_HEADER_FULL_JSON_T
JSON value to set the entire unprotected header, following parameter must be json_t * j_value.
Definition: rhonabwy.h:190
@ RHN_OPT_CLAIM_FULL_JSON_T
JSON value to set the entire claims, following parameter must be json_t * j_value.
Definition: rhonabwy.h:197
@ RHN_OPT_ENC_ALG
Key management algorithm, following parameter must be a jwa_alg value.
Definition: rhonabwy.h:199
@ RHN_OPT_CLAIM_RHN_INT_VALUE
Claims Integer value, following parameters must be const char * name, int i_value.
Definition: rhonabwy.h:194
@ RHN_OPT_VERIFY_KEY_JSON_T
Public key in JSON format to verify the token signature, following parameter must be a json_t * value...
Definition: rhonabwy.h:214
@ RHN_OPT_DECRYPT_KEY_GNUTLS
Private key in GnuTLS format to decrypt the token, following parameter must be a gnutls_privkey_t val...
Definition: rhonabwy.h:225
@ RHN_OPT_ENC
Encryption algorithm, following parameter must be a jwa_enc value.
Definition: rhonabwy.h:200
@ RHN_OPT_NONE
End option list, mandatory at the end of the option list.
Definition: rhonabwy.h:183
@ RHN_OPT_PAYLOAD
JSON value to set the entire payload, following parameters must be const unsigned char * value,...
Definition: rhonabwy.h:192
@ RHN_OPT_ENCRYPT_KEY_JWKS
Public key set in JWKS format to encrypt the token, following parameter must be a jwks_t * value.
Definition: rhonabwy.h:218
@ RHN_OPT_ENCRYPT_KEY_JWK
Public key in JWK format to encrypt the token, following parameter must be a jwk_t * value.
Definition: rhonabwy.h:217
@ R_IMPORT_PEM
Import from a X509 key in PEM format, following parameters must be type (R_X509_TYPE_PUBKEY,...
Definition: rhonabwy.h:235
@ R_IMPORT_PASSWORD
Import from a password, following parameter must be a const char * value.
Definition: rhonabwy.h:242
@ R_IMPORT_SYMKEY
Import from a symmetric key, following parameters must be const unsigned char *, size_t.
Definition: rhonabwy.h:241
@ R_IMPORT_JSON_STR
Import from a stringified JSON, following parameter must be a const char * value.
Definition: rhonabwy.h:233
@ R_IMPORT_X5U
Import from an URL pointing to a x5u, following parameters must be x5u_flags (R_FLAG_IGNORE_SERVER_CE...
Definition: rhonabwy.h:240
@ R_IMPORT_JSON_T
Import from a json_t *, following parameter must be a const json_t * value.
Definition: rhonabwy.h:234
@ R_IMPORT_DER
Import from a X509 key in DER format, following parameters must be type (R_X509_TYPE_PUBKEY,...
Definition: rhonabwy.h:236
@ R_IMPORT_JKU
Import from an URL pointing to a jku, available for r_jwks_quick_import only, following parameters mu...
Definition: rhonabwy.h:243
@ R_IMPORT_NONE
End option list, mandatory at the end of the option list when using r_jwks_quick_import.
Definition: rhonabwy.h:232
@ R_IMPORT_G_PUBKEY
Import from a gnutls_pubkey_t, following parameters must be gnutls_pubkey_t.
Definition: rhonabwy.h:238
@ R_IMPORT_G_PRIVKEY
Import from a gnutls_privkey_t, following parameters must be gnutls_privkey_t.
Definition: rhonabwy.h:237
@ R_IMPORT_G_CERT
Import from a gnutls_x509_crt_t, following parameters must be gnutls_x509_crt_t.
Definition: rhonabwy.h:239
@ R_JWT_CLAIM_ISS
Definition: rhonabwy.h:157
@ R_JWT_CLAIM_SUB
Definition: rhonabwy.h:158
@ R_JWT_CLAIM_NBF
Definition: rhonabwy.h:161
@ R_JWT_CLAIM_JSN
Definition: rhonabwy.h:166
@ R_JWT_CLAIM_IAT
Definition: rhonabwy.h:162
@ R_JWT_CLAIM_AMR
Definition: rhonabwy.h:169
@ R_JWT_CLAIM_TYP
Definition: rhonabwy.h:167
@ R_JWT_CLAIM_STR
Definition: rhonabwy.h:164
@ R_JWT_CLAIM_INT
Definition: rhonabwy.h:165
@ R_JWT_CLAIM_EXP
Definition: rhonabwy.h:160
@ R_JWT_CLAIM_NOP
Definition: rhonabwy.h:156
@ R_JWT_CLAIM_AUD
Definition: rhonabwy.h:159
@ R_JWT_CLAIM_CTY
Definition: rhonabwy.h:168
@ R_JWT_CLAIM_JTI
Definition: rhonabwy.h:163
@ R_JWA_ALG_A256KW
Definition: rhonabwy.h:140
@ R_JWA_ALG_A192GCMKW
Definition: rhonabwy.h:147
@ R_JWA_ALG_ES384
Definition: rhonabwy.h:129
@ R_JWA_ALG_A192KW
Definition: rhonabwy.h:139
@ R_JWA_ALG_PBES2_H384
Definition: rhonabwy.h:150
@ R_JWA_ALG_HS384
Definition: rhonabwy.h:123
@ R_JWA_ALG_EDDSA
Definition: rhonabwy.h:131
@ R_JWA_ALG_DIR
Definition: rhonabwy.h:141
@ R_JWA_ALG_A128KW
Definition: rhonabwy.h:138
@ R_JWA_ALG_HS512
Definition: rhonabwy.h:124
@ R_JWA_ALG_PS512
Definition: rhonabwy.h:134
@ R_JWA_ALG_PS384
Definition: rhonabwy.h:133
@ R_JWA_ALG_PBES2_H512
Definition: rhonabwy.h:151
@ R_JWA_ALG_NONE
Definition: rhonabwy.h:121
@ R_JWA_ALG_RSA1_5
Definition: rhonabwy.h:135
@ R_JWA_ALG_ES256
Definition: rhonabwy.h:128
@ R_JWA_ALG_RSA_OAEP_256
Definition: rhonabwy.h:137
@ R_JWA_ALG_A128GCMKW
Definition: rhonabwy.h:146
@ R_JWA_ALG_ECDH_ES_A192KW
Definition: rhonabwy.h:144
@ R_JWA_ALG_ES512
Definition: rhonabwy.h:130
@ R_JWA_ALG_RS512
Definition: rhonabwy.h:127
@ R_JWA_ALG_RS256
Definition: rhonabwy.h:125
@ R_JWA_ALG_A256GCMKW
Definition: rhonabwy.h:148
@ R_JWA_ALG_ES256K
Definition: rhonabwy.h:152
@ R_JWA_ALG_RS384
Definition: rhonabwy.h:126
@ R_JWA_ALG_UNKNOWN
Definition: rhonabwy.h:120
@ R_JWA_ALG_ECDH_ES_A128KW
Definition: rhonabwy.h:143
@ R_JWA_ALG_ECDH_ES
Definition: rhonabwy.h:142
@ R_JWA_ALG_HS256
Definition: rhonabwy.h:122
@ R_JWA_ALG_PS256
Definition: rhonabwy.h:132
@ R_JWA_ALG_PBES2_H256
Definition: rhonabwy.h:149
@ R_JWA_ALG_RSA_OAEP
Definition: rhonabwy.h:136
@ R_JWA_ALG_ECDH_ES_A256KW
Definition: rhonabwy.h:145
json_t * _r_json_get_json_t_value(json_t *j_json, const char *key)
Definition: misc.c:311
int _r_inflate_payload(const unsigned char *compressed, size_t compressed_len, unsigned char **uncompressed, size_t *uncompressed_len)
Definition: misc.c:429
rhn_int_t _r_json_get_int_value(json_t *j_json, const char *key)
Definition: misc.c:304
const char * _r_json_get_str_value(json_t *j_json, const char *key)
Definition: misc.c:297
size_t _r_get_key_size(jwa_enc enc)
Definition: misc.c:327
int _r_deflate_payload(const unsigned char *uncompressed, size_t uncompressed_len, unsigned char **compressed, size_t *compressed_len)
Definition: misc.c:386
json_t * _r_json_get_full_json_t(json_t *j_json)
Definition: misc.c:320
int _r_json_set_json_t_value(json_t *j_json, const char *key, json_t *j_value)
Definition: misc.c:276
int _r_json_set_str_value(json_t *j_json, const char *key, const char *str_value)
Definition: misc.c:239
gnutls_cipher_algorithm_t _r_get_alg_from_enc(jwa_enc enc)
Definition: misc.c:353
int _r_json_set_int_value(json_t *j_json, const char *key, rhn_int_t i_value)
Definition: misc.c:260
Definition: rhonabwy.h:260
size_t payload_len
Definition: rhonabwy.h:280
json_t * j_header
Definition: rhonabwy.h:267
unsigned char * iv
Definition: rhonabwy.h:277
jwa_enc enc
Definition: rhonabwy.h:270
json_t * j_json_serialization
Definition: rhonabwy.h:281
jwks_t * jwks_privkey
Definition: rhonabwy.h:271
unsigned char * iv_b64url
Definition: rhonabwy.h:264
size_t key_len
Definition: rhonabwy.h:276
unsigned char * auth_tag_b64url
Definition: rhonabwy.h:266
unsigned char * aad_b64url
Definition: rhonabwy.h:263
size_t aad_len
Definition: rhonabwy.h:274
unsigned char * header_b64url
Definition: rhonabwy.h:261
unsigned char * ciphertext_b64url
Definition: rhonabwy.h:265
jwa_alg alg
Definition: rhonabwy.h:269
unsigned char * key
Definition: rhonabwy.h:275
unsigned char * aad
Definition: rhonabwy.h:273
jwks_t * jwks_pubkey
Definition: rhonabwy.h:272
unsigned char * payload
Definition: rhonabwy.h:279
size_t iv_len
Definition: rhonabwy.h:278
unsigned char * encrypted_key_b64url
Definition: rhonabwy.h:262
json_t * j_unprotected_header
Definition: rhonabwy.h:268
int token_mode
Definition: rhonabwy.h:282
Definition: rhonabwy.h:246
int token_mode
Definition: rhonabwy.h:257
size_t payload_len
Definition: rhonabwy.h:255
jwks_t * jwks_pubkey
Definition: rhonabwy.h:253
jwks_t * jwks_privkey
Definition: rhonabwy.h:252
unsigned char * payload
Definition: rhonabwy.h:254
json_t * j_json_serialization
Definition: rhonabwy.h:256
unsigned char * payload_b64url
Definition: rhonabwy.h:248
json_t * j_header
Definition: rhonabwy.h:250
unsigned char * signature_b64url
Definition: rhonabwy.h:249
jwa_alg alg
Definition: rhonabwy.h:251
unsigned char * header_b64url
Definition: rhonabwy.h:247
Definition: rhonabwy.h:285
jwa_alg enc_alg
Definition: rhonabwy.h:293
jwks_t * jwks_privkey_sign
Definition: rhonabwy.h:299
json_t * j_claims
Definition: rhonabwy.h:289
jwa_alg sign_alg
Definition: rhonabwy.h:292
jwa_enc enc
Definition: rhonabwy.h:294
size_t key_len
Definition: rhonabwy.h:296
jwks_t * jwks_pubkey_enc
Definition: rhonabwy.h:302
int type
Definition: rhonabwy.h:286
unsigned char * iv
Definition: rhonabwy.h:297
jws_t * jws
Definition: rhonabwy.h:290
jwks_t * jwks_privkey_enc
Definition: rhonabwy.h:301
jwe_t * jwe
Definition: rhonabwy.h:291
unsigned char * key
Definition: rhonabwy.h:295
json_t * j_header
Definition: rhonabwy.h:288
size_t iv_len
Definition: rhonabwy.h:298
uint32_t parse_flags
Definition: rhonabwy.h:287
jwks_t * jwks_pubkey_sign
Definition: rhonabwy.h:300