Rhonabwy
Javascript Object Signing and Encryption (JOSE) library - JWK, JWKS, JWS, JWE and JWT
Macros | Functions
jwe.c File Reference
#include <string.h>
#include <ctype.h>
#include <gnutls/gnutls.h>
#include <gnutls/crypto.h>
#include <gnutls/abstract.h>
#include <gnutls/x509.h>
#include <orcania.h>
#include <yder.h>
#include <rhonabwy.h>

Macros

#define R_TAG_MAX_SIZE   16
 
#define _R_BLOCK_SIZE   256
 
#define _R_PBES_DEFAULT_ITERATION   4096
 
#define _R_PBES_DEFAULT_SALT_LENGTH   8
 
#define _R_CURVE_MAX_SIZE   66
 

Functions

int r_jwe_init (jwe_t **jwe)
 
void r_jwe_free (jwe_t *jwe)
 
jwe_tr_jwe_copy (jwe_t *jwe)
 
int r_jwe_set_payload (jwe_t *jwe, const unsigned char *payload, size_t payload_len)
 
const unsigned char * r_jwe_get_payload (jwe_t *jwe, size_t *payload_len)
 
int r_jwe_set_cypher_key (jwe_t *jwe, const unsigned char *key, size_t key_len)
 
const unsigned char * r_jwe_get_cypher_key (jwe_t *jwe, size_t *key_len)
 
int r_jwe_generate_cypher_key (jwe_t *jwe)
 
int r_jwe_set_iv (jwe_t *jwe, const unsigned char *iv, size_t iv_len)
 
const unsigned char * r_jwe_get_iv (jwe_t *jwe, size_t *iv_len)
 
int r_jwe_set_aad (jwe_t *jwe, const unsigned char *aad, size_t aad_len)
 
const unsigned char * r_jwe_get_aad (jwe_t *jwe, size_t *aad_len)
 
int r_jwe_generate_iv (jwe_t *jwe)
 
int r_jwe_set_alg (jwe_t *jwe, jwa_alg alg)
 
jwa_alg r_jwe_get_alg (jwe_t *jwe)
 
int r_jwe_set_enc (jwe_t *jwe, jwa_enc enc)
 
jwa_enc r_jwe_get_enc (jwe_t *jwe)
 
const char * r_jwe_get_kid (jwe_t *jwe)
 
int r_jwe_set_header_str_value (jwe_t *jwe, const char *key, const char *str_value)
 
int r_jwe_set_header_int_value (jwe_t *jwe, const char *key, rhn_int_t i_value)
 
int r_jwe_set_header_json_t_value (jwe_t *jwe, const char *key, json_t *j_value)
 
const char * r_jwe_get_header_str_value (jwe_t *jwe, const char *key)
 
rhn_int_t r_jwe_get_header_int_value (jwe_t *jwe, const char *key)
 
json_t * r_jwe_get_header_json_t_value (jwe_t *jwe, const char *key)
 
json_t * r_jwe_get_full_header_json_t (jwe_t *jwe)
 
char * r_jwe_get_full_header_str (jwe_t *jwe)
 
json_t * r_jwe_get_full_unprotected_header_json_t (jwe_t *jwe)
 
char * r_jwe_get_full_unprotected_header_str (jwe_t *jwe)
 
int r_jwe_add_keys (jwe_t *jwe, jwk_t *jwk_privkey, jwk_t *jwk_pubkey)
 
int r_jwe_add_jwks (jwe_t *jwe, jwks_t *jwks_privkey, jwks_t *jwks_pubkey)
 
int r_jwe_add_keys_json_str (jwe_t *jwe, const char *privkey, const char *pubkey)
 
int r_jwe_add_keys_json_t (jwe_t *jwe, json_t *privkey, json_t *pubkey)
 
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)
 
int r_jwe_add_keys_gnutls (jwe_t *jwe, gnutls_privkey_t privkey, gnutls_pubkey_t pubkey)
 
int r_jwe_add_key_symmetric (jwe_t *jwe, const unsigned char *key, size_t key_len)
 
jwks_tr_jwe_get_jwks_privkey (jwe_t *jwe)
 
jwks_tr_jwe_get_jwks_pubkey (jwe_t *jwe)
 
int r_jwe_encrypt_payload (jwe_t *jwe)
 
int r_jwe_decrypt_payload (jwe_t *jwe)
 
int r_jwe_encrypt_key (jwe_t *jwe, jwk_t *jwk_s, int x5u_flags)
 
int r_jwe_decrypt_key (jwe_t *jwe, jwk_t *jwk_s, int x5u_flags)
 
int r_jwe_parse (jwe_t *jwe, const char *jwe_str, int x5u_flags)
 
int r_jwe_parsen (jwe_t *jwe, const char *jwe_str, size_t jwe_str_len, int x5u_flags)
 
int r_jwe_advanced_parse (jwe_t *jwe, const char *jwe_str, uint32_t parse_flags, int x5u_flags)
 
int r_jwe_advanced_parsen (jwe_t *jwe, const char *jwe_str, size_t jwe_str_len, uint32_t parse_flags, int x5u_flags)
 
int r_jwe_compact_parsen (jwe_t *jwe, const char *jwe_str, size_t jwe_str_len, int x5u_flags)
 
int r_jwe_compact_parse (jwe_t *jwe, const char *jwe_str, int x5u_flags)
 
int r_jwe_advanced_compact_parse (jwe_t *jwe, const char *jwe_str, uint32_t parse_flags, int x5u_flags)
 
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)
 
int r_jwe_parse_json_str (jwe_t *jwe, const char *jwe_json_str, int x5u_flags)
 
int r_jwe_parsen_json_str (jwe_t *jwe, const char *jwe_json_str, size_t jwe_json_str_len, int x5u_flags)
 
int r_jwe_parse_json_t (jwe_t *jwe, json_t *jwe_json, int x5u_flags)
 
int r_jwe_advanced_parse_json_str (jwe_t *jwe, const char *jwe_json_str, uint32_t parse_flags, int x5u_flags)
 
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)
 
int r_jwe_advanced_parse_json_t (jwe_t *jwe, json_t *jwe_json, uint32_t parse_flags, int x5u_flags)
 
jwe_tr_jwe_quick_parse (const char *jwe_str, uint32_t parse_flags, int x5u_flags)
 
jwe_tr_jwe_quick_parsen (const char *jwe_str, size_t jwe_str_len, uint32_t parse_flags, int x5u_flags)
 
int r_jwe_decrypt (jwe_t *jwe, jwk_t *jwk_privkey, int x5u_flags)
 
char * r_jwe_serialize (jwe_t *jwe, jwk_t *jwk_pubkey, int x5u_flags)
 
char * r_jwe_serialize_json_str (jwe_t *jwe, jwks_t *jwks_pubkey, int x5u_flags, int mode)
 
json_t * r_jwe_serialize_json_t (jwe_t *jwe, jwks_t *jwks_pubkey, int x5u_flags, int mode)
 
int r_jwe_set_full_header_json_t (jwe_t *jwe, json_t *j_header)
 
int r_jwe_set_full_header_json_str (jwe_t *jwe, const char *str_header)
 
int r_jwe_set_full_unprotected_header_json_t (jwe_t *jwe, json_t *j_unprotected_header)
 
int r_jwe_set_full_unprotected_header_json_str (jwe_t *jwe, const char *str_unprotected_header)
 
int r_jwe_set_properties (jwe_t *jwe,...)
 

Macro Definition Documentation

◆ _R_BLOCK_SIZE

#define _R_BLOCK_SIZE   256

◆ _R_CURVE_MAX_SIZE

#define _R_CURVE_MAX_SIZE   66

◆ _R_PBES_DEFAULT_ITERATION

#define _R_PBES_DEFAULT_ITERATION   4096

◆ _R_PBES_DEFAULT_SALT_LENGTH

#define _R_PBES_DEFAULT_SALT_LENGTH   8

◆ R_TAG_MAX_SIZE

#define R_TAG_MAX_SIZE   16

Rhonabwy JSON Web Encryption (JWE) library

jwe.c: functions definitions

Copyright 2020-2022 Nicolas Mora mail@.nosp@m.babe.nosp@m.loues.nosp@m.t.or.nosp@m.g

This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; version 2.1 of the License.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GENERAL PUBLIC LICENSE for more details.

You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses/.