33 #include "rhonabwy-cfg.h"
36 #include <gnutls/gnutls.h>
37 #include <nettle/version.h>
39 #define RHN_BEGIN_CERT_TAG "-----BEGIN CERTIFICATE-----"
49 #define RHN_ERROR_MEMORY 2
50 #define RHN_ERROR_PARAM 3
51 #define RHN_ERROR_UNSUPPORTED 4
52 #define RHN_ERROR_INVALID 5
54 #define R_X509_TYPE_PUBKEY 1
55 #define R_X509_TYPE_PRIVKEY 2
56 #define R_X509_TYPE_CERTIFICATE 3
58 #define R_FORMAT_PEM 0
59 #define R_FORMAT_DER 1
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
71 #define R_FLAG_IGNORE_SERVER_CERTIFICATE 0x00000001
72 #define R_FLAG_FOLLOW_REDIRECT 0x00000010
73 #define R_FLAG_IGNORE_REMOTE 0x00000100
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
81 #define R_JWT_CLAIM_NOW -1
82 #define R_JWT_CLAIM_PRESENT -2
84 #define R_JWK_THUMB_SHA256 0
85 #define R_JWK_THUMB_SHA384 1
86 #define R_JWK_THUMB_SHA512 2
88 #define R_JSON_MODE_COMPACT 0
89 #define R_JSON_MODE_GENERAL 1
90 #define R_JSON_MODE_FLATTENED 2
1207 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);
1271 int r_jws_parsen(
jws_t * jws,
const char * jws_str,
size_t jws_str_len,
int x5u_flags);
1668 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);
1837 int r_jwe_parsen(
jwe_t * jwe,
const char * jwe_str,
size_t jwe_str_len,
int x5u_flags);
2233 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);
2317 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);
2548 int r_jwt_parsen(
jwt_t * jwt,
const char * token,
size_t token_len,
int x5u_flags);
2683 #ifndef DOXYGEN_SHOULD_SKIP_THIS
2706 int _r_deflate_payload(
const unsigned char * uncompressed,
size_t uncompressed_len,
unsigned char ** compressed,
size_t * compressed_len);
2708 int _r_inflate_payload(
const unsigned char * compressed,
size_t compressed_len,
unsigned char ** uncompressed,
size_t * uncompressed_len);
json_t * r_library_info_json_t()
Definition: misc.c:555
char * r_library_info_json_str()
Definition: misc.c:614
void r_jwe_free(jwe_t *jwe)
Definition: jwe.c:2380
const char * r_jwa_alg_to_str(jwa_alg alg)
Definition: misc.c:407
void r_global_close()
Definition: misc.c:54
int r_jws_init(jws_t **jws)
Definition: jws.c:865
jwa_enc r_str_to_jwa_enc(const char *enc)
Definition: misc.c:511
void r_jws_free(jws_t *jws)
Definition: jws.c:908
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:94
int r_jwks_init(jwks_t **jwks)
Definition: jwks.c:30
jwa_alg r_str_to_jwa_alg(const char *alg)
Definition: misc.c:335
int r_jwe_init(jwe_t **jwe)
Definition: jwe.c:2326
void r_free(void *data)
Definition: misc.c:624
const char * r_jwa_enc_to_str(jwa_enc enc)
Definition: misc.c:529
int r_jwt_init(jwt_t **jwt)
Definition: jwt.c:34
int r_global_init()
Definition: misc.c:35
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:2166
gnutls_privkey_t r_jwk_export_to_gnutls_privkey(jwk_t *jwk)
Definition: jwk.c:1834
char * r_jwk_thumbprint(jwk_t *jwk, int hash, int x5u_flags)
Definition: jwk.c:2771
gnutls_x509_crt_t r_jwk_export_to_gnutls_crt(jwk_t *jwk, int x5u_flags)
Definition: jwk.c:2458
int r_jwk_export_to_symmetric_key(jwk_t *jwk, unsigned char *key, size_t *key_len)
Definition: jwk.c:2578
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:2522
json_t * r_jwk_export_to_json_t(jwk_t *jwk)
Definition: jwk.c:1826
char * r_jwk_export_to_json_str(jwk_t *jwk, int pretty)
Definition: jwk.c:1818
int r_jwk_validate_x5c_chain(jwk_t *jwk, int x5u_flags)
Definition: jwk.c:2865
int r_jwk_import_from_password(jwk_t *jwk, const char *password)
Definition: jwk.c:1802
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:1773
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:1806
int r_jwk_equal(jwk_t *jwk1, jwk_t *jwk2)
Definition: jwk.c:1814
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
char * r_jwe_get_full_header_str(jwe_t *jwe)
Definition: jwe.c:2796
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:3582
const unsigned char * r_jwe_get_payload(jwe_t *jwe, size_t *payload_len)
Definition: jwe.c:2461
int r_jwe_set_iv(jwe_t *jwe, const unsigned char *iv, size_t iv_len)
Definition: jwe.c:2534
json_t * r_jwe_get_full_unprotected_header_json_t(jwe_t *jwe)
Definition: jwe.c:2804
int r_jwe_set_properties(jwe_t *jwe,...)
Definition: jwe.c:4129
int r_jwe_set_header_json_t_value(jwe_t *jwe, const char *key, json_t *j_value)
Definition: jwe.c:2753
int r_jwe_encrypt_payload(jwe_t *jwe)
Definition: jwe.c:3075
char * r_jwe_serialize_json_str(jwe_t *jwe, jwks_t *jwks_pubkey, int x5u_flags, int mode)
Definition: jwe.c:3918
int r_jwe_set_header_int_value(jwe_t *jwe, const char *key, int i_value)
Definition: jwe.c:2739
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:2956
int r_jwe_set_payload(jwe_t *jwe, const unsigned char *payload, size_t payload_len)
Definition: jwe.c:2436
int r_jwe_set_enc(jwe_t *jwe, jwa_enc enc)
Definition: jwe.c:2702
int r_jwe_decrypt_payload(jwe_t *jwe)
Definition: jwe.c:3222
jwa_enc r_jwe_get_enc(jwe_t *jwe)
Definition: jwe.c:2713
int r_jwe_parse(jwe_t *jwe, const char *jwe_str, int x5u_flags)
Definition: jwe.c:3430
int r_jwe_set_alg(jwe_t *jwe, jwa_alg alg)
Definition: jwe.c:2683
int r_jwe_get_header_int_value(jwe_t *jwe, const char *key)
Definition: jwe.c:2775
const char * r_jwe_get_header_str_value(jwe_t *jwe, const char *key)
Definition: jwe.c:2768
int r_jwe_set_full_unprotected_header_json_t(jwe_t *jwe, json_t *j_unprotected_header)
Definition: jwe.c:4102
const unsigned char * r_jwe_get_aad(jwe_t *jwe, size_t *aad_len)
Definition: jwe.c:2628
int r_jwe_add_keys_gnutls(jwe_t *jwe, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
Definition: jwe.c:2995
int r_jwe_generate_iv(jwe_t *jwe)
Definition: jwe.c:2638
int r_jwe_set_full_unprotected_header_json_str(jwe_t *jwe, const char *str_unprotected_header)
Definition: jwe.c:4119
int r_jwe_generate_cypher_key(jwe_t *jwe)
Definition: jwe.c:2506
const unsigned char * r_jwe_get_iv(jwe_t *jwe, size_t *iv_len)
Definition: jwe.c:2575
int r_jwe_add_keys(jwe_t *jwe, jwk_t *jwk_privkey, jwk_t *jwk_pubkey)
Definition: jwe.c:2819
jwks_t * r_jwe_get_jwks_pubkey(jwe_t *jwe)
Definition: jwe.c:3067
int r_jwe_parse_json_str(jwe_t *jwe, const char *jwe_json_str, int x5u_flags)
Definition: jwe.c:3578
int r_jwe_set_cypher_key(jwe_t *jwe, const unsigned char *key, size_t key_len)
Definition: jwe.c:2471
int r_jwe_add_keys_json_str(jwe_t *jwe, const char *privkey, const char *pubkey)
Definition: jwe.c:2878
int r_jwe_compact_parse(jwe_t *jwe, const char *jwe_str, int x5u_flags)
Definition: jwe.c:3574
char * r_jwe_get_full_unprotected_header_str(jwe_t *jwe)
Definition: jwe.c:2811
json_t * r_jwe_serialize_json_t(jwe_t *jwe, jwks_t *jwks_pubkey, int x5u_flags, int mode)
Definition: jwe.c:3925
int r_jwe_add_keys_json_t(jwe_t *jwe, json_t *privkey, json_t *pubkey)
Definition: jwe.c:2917
jwks_t * r_jwe_get_jwks_privkey(jwe_t *jwe)
Definition: jwe.c:3059
int r_jwe_set_full_header_json_t(jwe_t *jwe, json_t *j_header)
Definition: jwe.c:4056
jwe_t * r_jwe_copy(jwe_t *jwe)
Definition: jwe.c:2401
int r_jwe_parsen(jwe_t *jwe, const char *jwe_str, size_t jwe_str_len, int x5u_flags)
Definition: jwe.c:3434
int r_jwe_add_key_symmetric(jwe_t *jwe, const unsigned char *key, size_t key_len)
Definition: jwe.c:3034
int r_jwe_decrypt(jwe_t *jwe, jwk_t *jwk_privkey, int x5u_flags)
Definition: jwe.c:3750
int r_jwe_decrypt_key(jwe_t *jwe, jwk_t *jwk_privkey, int x5u_flags)
Definition: jwe.c:3404
int r_jwe_compact_parsen(jwe_t *jwe, const char *jwe_str, size_t jwe_str_len, int x5u_flags)
Definition: jwe.c:3457
int r_jwe_set_aad(jwe_t *jwe, const unsigned char *aad, size_t aad_len)
Definition: jwe.c:2585
json_t * r_jwe_get_header_json_t_value(jwe_t *jwe, const char *key)
Definition: jwe.c:2782
int r_jwe_parse_json_t(jwe_t *jwe, json_t *jwe_json, int x5u_flags)
Definition: jwe.c:3593
jwa_alg r_jwe_get_alg(jwe_t *jwe)
Definition: jwe.c:2694
int r_jwe_encrypt_key(jwe_t *jwe, jwk_t *jwk_pubkey, int x5u_flags)
Definition: jwe.c:3356
int r_jwe_set_full_header_json_str(jwe_t *jwe, const char *str_header)
Definition: jwe.c:4092
json_t * r_jwe_get_full_header_json_t(jwe_t *jwe)
Definition: jwe.c:2789
int r_jwe_set_header_str_value(jwe_t *jwe, const char *key, const char *str_value)
Definition: jwe.c:2725
char * r_jwe_serialize(jwe_t *jwe, jwk_t *jwk_pubkey, int x5u_flags)
Definition: jwe.c:3860
const unsigned char * r_jwe_get_cypher_key(jwe_t *jwe, size_t *key_len)
Definition: jwe.c:2496
int r_jwe_add_jwks(jwe_t *jwe, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
Definition: jwe.c:2845
const char * r_jwe_get_kid(jwe_t *jwe)
Definition: jwe.c:2721
int r_jwk_set_property_array(jwk_t *jwk, const char *key, size_t index, const char *value)
Definition: jwk.c:2657
const char * r_jwk_get_property_str(jwk_t *jwk, const char *key)
Definition: jwk.c:2606
int r_jwk_delete_property_str(jwk_t *jwk, const char *key)
Definition: jwk.c:2699
int r_jwk_append_property_array(jwk_t *jwk, const char *key, const char *value)
Definition: jwk.c:2681
int r_jwk_set_property_str(jwk_t *jwk, const char *key, const char *value)
Definition: jwk.c:2644
int r_jwk_append_x5c(jwk_t *jwk, int format, const unsigned char *input, size_t input_len)
Definition: jwk.c:2725
int r_jwk_get_property_array_size(jwk_t *jwk, const char *key)
Definition: jwk.c:2631
const char * r_jwk_get_property_array(jwk_t *jwk, const char *key, size_t index)
Definition: jwk.c:2618
int r_jwk_delete_property_array_at(jwk_t *jwk, const char *key, size_t index)
Definition: jwk.c:2712
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_set_full_header_json_t(jws_t *jws, json_t *j_value)
Definition: jws.c:1990
int r_jws_verify_signature(jws_t *jws, jwk_t *jwk_pubkey, int x5u_flags)
Definition: jws.c:1770
jws_t * r_jws_copy(jws_t *jws)
Definition: jws.c:922
int r_jws_set_header_str_value(jws_t *jws, const char *key, const char *str_value)
Definition: jws.c:1066
int r_jws_set_header_int_value(jws_t *jws, const char *key, int i_value)
Definition: jws.c:1080
int r_jws_add_keys(jws_t *jws, jwk_t *jwk_privkey, jwk_t *jwk_pubkey)
Definition: jws.c:1145
int r_jws_add_key_symmetric(jws_t *jws, const unsigned char *key, size_t key_len)
Definition: jws.c:1360
const unsigned char * r_jws_get_payload(jws_t *jws, size_t *payload_len)
Definition: jws.c:975
int r_jws_set_properties(jws_t *jws,...)
Definition: jws.c:2028
jwks_t * r_jws_get_jwks_privkey(jws_t *jws)
Definition: jws.c:1385
const char * r_jws_get_kid(jws_t *jws)
Definition: jws.c:1056
int r_jws_set_header_json_t_value(jws_t *jws, const char *key, json_t *j_value)
Definition: jws.c:1094
char * r_jws_get_full_header_str(jws_t *jws)
Definition: jws.c:1137
int r_jws_parsen(jws_t *jws, const char *jws_str, size_t jws_str_len, int x5u_flags)
Definition: jws.c:1405
int r_jws_compact_parsen(jws_t *jws, const char *jws_str, size_t jws_str_len, int x5u_flags)
Definition: jws.c:1428
char * r_jws_serialize(jws_t *jws, jwk_t *jwk_privkey, int x5u_flags)
Definition: jws.c:1862
json_t * r_jws_get_full_header_json_t(jws_t *jws)
Definition: jws.c:1130
char * r_jws_serialize_json_str(jws_t *jws, jwks_t *jwks_privkey, int x5u_flags, int mode)
Definition: jws.c:1907
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:1755
json_t * r_jws_serialize_json_t(jws_t *jws, jwks_t *jwks_privkey, int x5u_flags, int mode)
Definition: jws.c:1914
int r_jws_parse_json_t(jws_t *jws, json_t *jws_json, int x5u_flags)
Definition: jws.c:1552
int r_jws_add_keys_json_str(jws_t *jws, const char *privkey, const char *pubkey)
Definition: jws.c:1204
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:1282
int r_jws_add_keys_gnutls(jws_t *jws, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
Definition: jws.c:1321
json_t * r_jws_get_header_json_t_value(jws_t *jws, const char *key)
Definition: jws.c:1123
int r_jws_add_jwks(jws_t *jws, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
Definition: jws.c:1171
int r_jws_set_payload(jws_t *jws, const unsigned char *payload, size_t payload_len)
Definition: jws.c:950
jwa_alg r_jws_get_alg(jws_t *jws)
Definition: jws.c:1048
int r_jws_set_full_header_json_str(jws_t *jws, const char *str_value)
Definition: jws.c:2018
int r_jws_parse_json_str(jws_t *jws, const char *jws_json_str, int x5u_flags)
Definition: jws.c:1766
int r_jws_compact_parse(jws_t *jws, const char *jws_str, int x5u_flags)
Definition: jws.c:1548
int r_jws_parse(jws_t *jws, const char *jws_str, int x5u_flags)
Definition: jws.c:1401
int r_jws_add_keys_json_t(jws_t *jws, json_t *privkey, json_t *pubkey)
Definition: jws.c:1243
const char * r_jws_get_header_str_value(jws_t *jws, const char *key)
Definition: jws.c:1109
int r_jws_set_alg(jws_t *jws, jwa_alg alg)
Definition: jws.c:985
jwks_t * r_jws_get_jwks_pubkey(jws_t *jws)
Definition: jws.c:1393
int r_jws_get_header_int_value(jws_t *jws, const char *key)
Definition: jws.c:1116
char * r_jwt_serialize_signed(jwt_t *jwt, jwk_t *privkey, int x5u_flags)
Definition: jwt.c:1004
int r_jwt_set_sign_alg(jwt_t *jwt, jwa_alg alg)
Definition: jwt.c:812
jwks_t * r_jwt_get_sign_jwks_privkey(jwt_t *jwt)
Definition: jwt.c:540
int r_jwt_add_enc_key_symmetric(jwt_t *jwt, const unsigned char *key, size_t key_len)
Definition: jwt.c:771
int r_jwt_set_claims(jwt_t *jwt,...)
Definition: jwt.c:1843
int r_jwt_set_header_int_value(jwt_t *jwt, const char *key, int i_value)
Definition: jwt.c:143
int r_jwt_decrypt_nested(jwt_t *jwt, jwk_t *decrypt_key, int decrypt_key_x5u_flags)
Definition: jwt.c:1532
int r_jwt_set_header_json_t_value(jwt_t *jwt, const char *key, json_t *j_value)
Definition: jwt.c:151
int r_jwt_verify_signature(jwt_t *jwt, jwk_t *pubkey, int x5u_flags)
Definition: jwt.c:1309
char * r_jwt_get_full_claims_str(jwt_t *jwt)
Definition: jwt.c:247
int r_jwt_add_sign_keys_json_t(jwt_t *jwt, json_t *privkey, json_t *pubkey)
Definition: jwt.c:398
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:437
jwks_t * r_jwt_get_enc_jwks_pubkey(jwt_t *jwt)
Definition: jwt.c:804
jwt_t * r_jwt_copy(jwt_t *jwt)
Definition: jwt.c:110
jwa_alg r_jwt_get_enc_alg(jwt_t *jwt)
Definition: jwt.c:844
int r_jwt_set_enc_iv(jwt_t *jwt, const unsigned char *iv, size_t iv_len)
Definition: jwt.c:925
const char * r_jwt_get_sig_kid(jwt_t *jwt)
Definition: jwt.c:1000
jwa_enc r_jwt_get_enc(jwt_t *jwt)
Definition: jwt.c:988
jwks_t * r_jwt_get_sign_jwks_pubkey(jwt_t *jwt)
Definition: jwt.c:548
json_t * r_jwt_get_claim_json_t_value(jwt_t *jwt, const char *key)
Definition: jwt.c:233
int r_jwt_set_enc_alg(jwt_t *jwt, jwa_alg alg)
Definition: jwt.c:832
int r_jwt_set_full_header_json_t(jwt_t *jwt, json_t *j_header)
Definition: jwt.c:1968
int r_jwt_decrypt(jwt_t *jwt, jwk_t *privkey, int x5u_flags)
Definition: jwt.c:1334
int r_jwt_set_full_claims_json_str(jwt_t *jwt, const char *str_claims)
Definition: jwt.c:265
int r_jwt_set_claim_str_value(jwt_t *jwt, const char *key, const char *str_value)
Definition: jwt.c:195
int r_jwt_set_enc_cypher_key(jwt_t *jwt, const unsigned char *key, size_t key_len)
Definition: jwt.c:864
const unsigned char * r_jwt_get_enc_iv(jwt_t *jwt, size_t *iv_len)
Definition: jwt.c:950
int r_jwt_get_claim_int_value(jwt_t *jwt, const char *key)
Definition: jwt.c:226
int r_jwt_parsen(jwt_t *jwt, const char *token, size_t token_len, int x5u_flags)
Definition: jwt.c:1170
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:693
jwa_alg r_jwt_get_sign_alg(jwt_t *jwt)
Definition: jwt.c:824
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:1388
int r_jwt_set_claim_json_t_value(jwt_t *jwt, const char *key, json_t *j_value)
Definition: jwt.c:211
int r_jwt_set_claim_int_value(jwt_t *jwt, const char *key, int i_value)
Definition: jwt.c:203
int r_jwt_verify_signature_nested(jwt_t *jwt, jwk_t *verify_key, int verify_key_x5u_flags)
Definition: jwt.c:1629
int r_jwt_set_properties(jwt_t *jwt,...)
Definition: jwt.c:2023
int r_jwt_add_enc_jwks(jwt_t *jwt, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
Definition: jwt.c:582
int r_jwt_add_sign_keys_gnutls(jwt_t *jwt, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
Definition: jwt.c:476
int r_jwt_add_enc_keys_json_str(jwt_t *jwt, const char *privkey, const char *pubkey)
Definition: jwt.c:615
int r_jwt_validate_claims(jwt_t *jwt,...)
Definition: jwt.c:1661
int r_jwt_get_header_int_value(jwt_t *jwt, const char *key)
Definition: jwt.c:166
int r_jwt_add_sign_key_symmetric(jwt_t *jwt, const unsigned char *key, size_t key_len)
Definition: jwt.c:515
char * r_jwt_get_full_header_str(jwt_t *jwt)
Definition: jwt.c:187
int r_jwt_set_header_str_value(jwt_t *jwt, const char *key, const char *str_value)
Definition: jwt.c:135
int r_jwt_parse(jwt_t *jwt, const char *token, int x5u_flags)
Definition: jwt.c:1297
int r_jwt_set_full_claims_json_t(jwt_t *jwt, json_t *j_claim)
Definition: jwt.c:255
const char * r_jwt_get_enc_kid(jwt_t *jwt)
Definition: jwt.c:996
int r_jwt_add_sign_keys(jwt_t *jwt, jwk_t *privkey, jwk_t *pubkey)
Definition: jwt.c:300
int r_jwt_append_claims_json_t(jwt_t *jwt, json_t *j_claim)
Definition: jwt.c:282
int r_jwt_add_sign_keys_json_str(jwt_t *jwt, const char *privkey, const char *pubkey)
Definition: jwt.c:359
int r_jwt_set_enc(jwt_t *jwt, jwa_enc enc)
Definition: jwt.c:852
int r_jwt_add_sign_jwks(jwt_t *jwt, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
Definition: jwt.c:326
int r_jwt_add_enc_keys(jwt_t *jwt, jwk_t *privkey, jwk_t *pubkey)
Definition: jwt.c:556
int r_jwt_add_enc_keys_json_t(jwt_t *jwt, json_t *privkey, json_t *pubkey)
Definition: jwt.c:654
json_t * r_jwt_get_header_json_t_value(jwt_t *jwt, const char *key)
Definition: jwt.c:173
json_t * r_jwt_get_full_header_json_t(jwt_t *jwt)
Definition: jwt.c:180
const unsigned char * r_jwt_get_enc_cypher_key(jwt_t *jwt, size_t *key_len)
Definition: jwt.c:889
int r_jwt_set_full_header_json_str(jwt_t *jwt, const char *str_header)
Definition: jwt.c:2013
char * r_jwt_serialize_encrypted(jwt_t *jwt, jwk_t *pubkey, int x5u_flags)
Definition: jwt.c:1045
const char * r_jwt_get_claim_str_value(jwt_t *jwt, const char *key)
Definition: jwt.c:219
json_t * r_jwt_get_full_claims_json_t(jwt_t *jwt)
Definition: jwt.c:240
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:1095
const char * r_jwt_get_header_str_value(jwt_t *jwt, const char *key)
Definition: jwt.c:159
int r_jwt_generate_iv(jwt_t *jwt)
int r_jwt_add_enc_keys_gnutls(jwt_t *jwt, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
Definition: jwt.c:732
int r_jwt_generate_enc_cypher_key(jwt_t *jwt)
Definition: jwt.c:899
jwks_t * r_jwt_get_enc_jwks_privkey(jwt_t *jwt)
Definition: jwt.c:796
int r_jwt_get_type(jwt_t *jwt)
Definition: jwt.c:1301
jwa_enc
Definition: rhonabwy.h:157
rhn_opt
Definition: rhonabwy.h:167
rhn_claim_opt
Definition: rhonabwy.h:141
jwa_alg
Definition: rhonabwy.h:105
json_t jwk_t
Definition: rhonabwy.h:102
json_t jwks_t
Definition: rhonabwy.h:103
@ R_JWA_ENC_UNKNOWN
Definition: rhonabwy.h:158
@ R_JWA_ENC_A192GCM
Definition: rhonabwy.h:163
@ R_JWA_ENC_A128GCM
Definition: rhonabwy.h:162
@ R_JWA_ENC_A128CBC
Definition: rhonabwy.h:159
@ R_JWA_ENC_A256GCM
Definition: rhonabwy.h:164
@ R_JWA_ENC_A192CBC
Definition: rhonabwy.h:160
@ R_JWA_ENC_A256CBC
Definition: rhonabwy.h:161
@ RHN_OPT_VERIFY_KEY_JWKS
Definition: rhonabwy.h:195
@ RHN_OPT_SIG_ALG
Definition: rhonabwy.h:184
@ RHN_OPT_HEADER_JSON_T_VALUE
Definition: rhonabwy.h:171
@ RHN_OPT_HEADER_INT_VALUE
Definition: rhonabwy.h:169
@ RHN_OPT_DECRYPT_KEY_JWK
Definition: rhonabwy.h:206
@ RHN_OPT_SIGN_KEY_JSON_T
Definition: rhonabwy.h:191
@ RHN_OPT_ENCRYPT_KEY_JSON_T
Definition: rhonabwy.h:203
@ RHN_OPT_HEADER_FULL_JSON_STR
Definition: rhonabwy.h:173
@ RHN_OPT_DECRYPT_KEY_JWKS
Definition: rhonabwy.h:207
@ RHN_OPT_ENCRYPT_KEY_JSON_STR
Definition: rhonabwy.h:204
@ RHN_OPT_VERIFY_KEY_JWK
Definition: rhonabwy.h:194
@ RHN_OPT_DECRYPT_KEY_JSON_STR
Definition: rhonabwy.h:210
@ RHN_OPT_ENCRYPT_KEY_GNUTLS
Definition: rhonabwy.h:202
@ RHN_OPT_VERIFY_KEY_GNUTLS
Definition: rhonabwy.h:196
@ RHN_OPT_SIGN_KEY_GNUTLS
Definition: rhonabwy.h:190
@ RHN_OPT_HEADER_STR_VALUE
Definition: rhonabwy.h:170
@ RHN_OPT_ENCRYPT_KEY_PEM_DER
Definition: rhonabwy.h:205
@ RHN_OPT_UN_HEADER_FULL_JSON_STR
Definition: rhonabwy.h:175
@ RHN_OPT_AAD
Definition: rhonabwy.h:187
@ RHN_OPT_HEADER_FULL_JSON_T
Definition: rhonabwy.h:172
@ RHN_OPT_CLAIM_INT_VALUE
Definition: rhonabwy.h:177
@ RHN_OPT_VERIFY_KEY_JSON_STR
Definition: rhonabwy.h:198
@ RHN_OPT_CIPHER_KEY
Definition: rhonabwy.h:185
@ RHN_OPT_SIGN_KEY_JWK
Definition: rhonabwy.h:188
@ RHN_OPT_VERIFY_KEY_PEM_DER
Definition: rhonabwy.h:199
@ RHN_OPT_CLAIM_FULL_JSON_STR
Definition: rhonabwy.h:181
@ RHN_OPT_CLAIM_STR_VALUE
Definition: rhonabwy.h:178
@ RHN_OPT_IV
Definition: rhonabwy.h:186
@ RHN_OPT_SIGN_KEY_PEM_DER
Definition: rhonabwy.h:193
@ RHN_OPT_DECRYPT_KEY_JSON_T
Definition: rhonabwy.h:209
@ RHN_OPT_CLAIM_JSON_T_VALUE
Definition: rhonabwy.h:179
@ RHN_OPT_DECRYPT_KEY_PEM_DER
Definition: rhonabwy.h:211
@ RHN_OPT_SIGN_KEY_JWKS
Definition: rhonabwy.h:189
@ RHN_OPT_SIGN_KEY_JSON_STR
Definition: rhonabwy.h:192
@ RHN_OPT_UN_HEADER_FULL_JSON_T
Definition: rhonabwy.h:174
@ RHN_OPT_CLAIM_FULL_JSON_T
Definition: rhonabwy.h:180
@ RHN_OPT_ENC_ALG
Definition: rhonabwy.h:182
@ RHN_OPT_VERIFY_KEY_JSON_T
Definition: rhonabwy.h:197
@ RHN_OPT_DECRYPT_KEY_GNUTLS
Definition: rhonabwy.h:208
@ RHN_OPT_ENC
Definition: rhonabwy.h:183
@ RHN_OPT_NONE
Definition: rhonabwy.h:168
@ RHN_OPT_PAYLOAD
Definition: rhonabwy.h:176
@ RHN_OPT_ENCRYPT_KEY_JWKS
Definition: rhonabwy.h:201
@ RHN_OPT_ENCRYPT_KEY_JWK
Definition: rhonabwy.h:200
@ R_JWT_CLAIM_ISS
Definition: rhonabwy.h:143
@ R_JWT_CLAIM_SUB
Definition: rhonabwy.h:144
@ R_JWT_CLAIM_NBF
Definition: rhonabwy.h:147
@ R_JWT_CLAIM_JSN
Definition: rhonabwy.h:152
@ R_JWT_CLAIM_IAT
Definition: rhonabwy.h:148
@ R_JWT_CLAIM_TYP
Definition: rhonabwy.h:153
@ R_JWT_CLAIM_STR
Definition: rhonabwy.h:150
@ R_JWT_CLAIM_INT
Definition: rhonabwy.h:151
@ R_JWT_CLAIM_EXP
Definition: rhonabwy.h:146
@ R_JWT_CLAIM_NOP
Definition: rhonabwy.h:142
@ R_JWT_CLAIM_AUD
Definition: rhonabwy.h:145
@ R_JWT_CLAIM_CTY
Definition: rhonabwy.h:154
@ R_JWT_CLAIM_JTI
Definition: rhonabwy.h:149
@ R_JWA_ALG_A256KW
Definition: rhonabwy.h:126
@ R_JWA_ALG_A192GCMKW
Definition: rhonabwy.h:133
@ R_JWA_ALG_ES384
Definition: rhonabwy.h:115
@ R_JWA_ALG_A192KW
Definition: rhonabwy.h:125
@ R_JWA_ALG_PBES2_H384
Definition: rhonabwy.h:136
@ R_JWA_ALG_HS384
Definition: rhonabwy.h:109
@ R_JWA_ALG_EDDSA
Definition: rhonabwy.h:117
@ R_JWA_ALG_DIR
Definition: rhonabwy.h:127
@ R_JWA_ALG_A128KW
Definition: rhonabwy.h:124
@ R_JWA_ALG_HS512
Definition: rhonabwy.h:110
@ R_JWA_ALG_PS512
Definition: rhonabwy.h:120
@ R_JWA_ALG_PS384
Definition: rhonabwy.h:119
@ R_JWA_ALG_PBES2_H512
Definition: rhonabwy.h:137
@ R_JWA_ALG_NONE
Definition: rhonabwy.h:107
@ R_JWA_ALG_RSA1_5
Definition: rhonabwy.h:121
@ R_JWA_ALG_ES256
Definition: rhonabwy.h:114
@ R_JWA_ALG_RSA_OAEP_256
Definition: rhonabwy.h:123
@ R_JWA_ALG_A128GCMKW
Definition: rhonabwy.h:132
@ R_JWA_ALG_ECDH_ES_A192KW
Definition: rhonabwy.h:130
@ R_JWA_ALG_ES512
Definition: rhonabwy.h:116
@ R_JWA_ALG_RS512
Definition: rhonabwy.h:113
@ R_JWA_ALG_RS256
Definition: rhonabwy.h:111
@ R_JWA_ALG_A256GCMKW
Definition: rhonabwy.h:134
@ R_JWA_ALG_ES256K
Definition: rhonabwy.h:138
@ R_JWA_ALG_RS384
Definition: rhonabwy.h:112
@ R_JWA_ALG_UNKNOWN
Definition: rhonabwy.h:106
@ R_JWA_ALG_ECDH_ES_A128KW
Definition: rhonabwy.h:129
@ R_JWA_ALG_ECDH_ES
Definition: rhonabwy.h:128
@ R_JWA_ALG_HS256
Definition: rhonabwy.h:108
@ R_JWA_ALG_PS256
Definition: rhonabwy.h:118
@ R_JWA_ALG_PBES2_H256
Definition: rhonabwy.h:135
@ R_JWA_ALG_RSA_OAEP
Definition: rhonabwy.h:122
@ R_JWA_ALG_ECDH_ES_A256KW
Definition: rhonabwy.h:131
int _r_json_get_int_value(json_t *j_json, const char *key)
Definition: misc.c:168
int _r_inflate_payload(const unsigned char *compressed, size_t compressed_len, unsigned char **uncompressed, size_t *uncompressed_len)
Definition: misc.c:293
int _r_json_set_int_value(json_t *j_json, const char *key, int i_value)
Definition: misc.c:124
size_t _r_get_key_size(jwa_enc enc)
Definition: misc.c:191
int _r_deflate_payload(const unsigned char *uncompressed, size_t uncompressed_len, unsigned char **compressed, size_t *compressed_len)
Definition: misc.c:250
int _r_json_set_json_t_value(json_t *j_json, const char *key, json_t *j_value)
Definition: misc.c:140
const char * _r_json_get_str_value(json_t *j_json, const char *key)
Definition: misc.c:161
json_t * _r_json_get_full_json_t(json_t *j_json)
Definition: misc.c:184
int _r_json_set_str_value(json_t *j_json, const char *key, const char *str_value)
Definition: misc.c:103
gnutls_cipher_algorithm_t _r_get_alg_from_enc(jwa_enc enc)
Definition: misc.c:217
json_t * _r_json_get_json_t_value(json_t *j_json, const char *key)
Definition: misc.c:175
Definition: rhonabwy.h:228
size_t payload_len
Definition: rhonabwy.h:248
json_t * j_header
Definition: rhonabwy.h:235
unsigned char * iv
Definition: rhonabwy.h:245
jwa_enc enc
Definition: rhonabwy.h:238
json_t * j_json_serialization
Definition: rhonabwy.h:249
jwks_t * jwks_privkey
Definition: rhonabwy.h:239
unsigned char * iv_b64url
Definition: rhonabwy.h:232
size_t key_len
Definition: rhonabwy.h:244
unsigned char * auth_tag_b64url
Definition: rhonabwy.h:234
unsigned char * aad_b64url
Definition: rhonabwy.h:231
size_t aad_len
Definition: rhonabwy.h:242
unsigned char * header_b64url
Definition: rhonabwy.h:229
unsigned char * ciphertext_b64url
Definition: rhonabwy.h:233
jwa_alg alg
Definition: rhonabwy.h:237
unsigned char * key
Definition: rhonabwy.h:243
unsigned char * aad
Definition: rhonabwy.h:241
jwks_t * jwks_pubkey
Definition: rhonabwy.h:240
unsigned char * payload
Definition: rhonabwy.h:247
size_t iv_len
Definition: rhonabwy.h:246
unsigned char * encrypted_key_b64url
Definition: rhonabwy.h:230
json_t * j_unprotected_header
Definition: rhonabwy.h:236
int token_mode
Definition: rhonabwy.h:250
Definition: rhonabwy.h:214
int token_mode
Definition: rhonabwy.h:225
size_t payload_len
Definition: rhonabwy.h:223
jwks_t * jwks_pubkey
Definition: rhonabwy.h:221
jwks_t * jwks_privkey
Definition: rhonabwy.h:220
unsigned char * payload
Definition: rhonabwy.h:222
json_t * j_json_serialization
Definition: rhonabwy.h:224
unsigned char * payload_b64url
Definition: rhonabwy.h:216
json_t * j_header
Definition: rhonabwy.h:218
unsigned char * signature_b64url
Definition: rhonabwy.h:217
jwa_alg alg
Definition: rhonabwy.h:219
unsigned char * header_b64url
Definition: rhonabwy.h:215
Definition: rhonabwy.h:253
jwa_alg enc_alg
Definition: rhonabwy.h:260
jwks_t * jwks_privkey_sign
Definition: rhonabwy.h:266
json_t * j_claims
Definition: rhonabwy.h:256
jwa_alg sign_alg
Definition: rhonabwy.h:259
jwa_enc enc
Definition: rhonabwy.h:261
size_t key_len
Definition: rhonabwy.h:263
jwks_t * jwks_pubkey_enc
Definition: rhonabwy.h:269
int type
Definition: rhonabwy.h:254
unsigned char * iv
Definition: rhonabwy.h:264
jws_t * jws
Definition: rhonabwy.h:257
jwks_t * jwks_privkey_enc
Definition: rhonabwy.h:268
jwe_t * jwe
Definition: rhonabwy.h:258
unsigned char * key
Definition: rhonabwy.h:262
json_t * j_header
Definition: rhonabwy.h:255
size_t iv_len
Definition: rhonabwy.h:265
jwks_t * jwks_pubkey_sign
Definition: rhonabwy.h:267