CJOSE  0.6.2.2
jwe.h
Go to the documentation of this file.
1 /*
2  * Copyrights
3  *
4  * Portions created or assigned to Cisco Systems, Inc. are
5  * Copyright (c) 2014-2016 Cisco Systems, Inc. All Rights Reserved.
6  */
7 
15 #ifndef CJOSE_JWE_H
16 #define CJOSE_JWE_H
17 
18 #include <stdbool.h>
19 #include <stdint.h>
20 #include <stddef.h>
21 #include "header.h"
22 #include "error.h"
23 #include "jwk.h"
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
32 typedef struct
33 {
35  const cjose_jwk_t *jwk;
39 
43 typedef struct _cjose_jwe_int cjose_jwe_t;
44 
45 typedef const cjose_jwk_t *(*cjose_key_locator)(cjose_jwe_t *jwe, cjose_header_t *hdr, void *);
46 
66 cjose_jwe_encrypt(const cjose_jwk_t *jwk, cjose_header_t *header, const uint8_t *plaintext, size_t plaintext_len, cjose_err *err);
67 
90  cjose_header_t *header,
91  const uint8_t *iv,
92  size_t iv_len,
93  const uint8_t *plaintext,
94  size_t plaintext_len,
95  cjose_err *err);
96 
117  size_t recipient_count,
118  cjose_header_t *protected_header,
119  cjose_header_t *shared_unprotected_header,
120  const uint8_t *plaintext,
121  size_t plaintext_len,
122  cjose_err *err);
123 
147  size_t recipient_count,
148  cjose_header_t *protected_header,
149  cjose_header_t *shared_unprotected_header,
150  const uint8_t *iv,
151  size_t iv_len,
152  const uint8_t *plaintext,
153  size_t plaintext_len,
154  cjose_err *err);
155 
167 char *cjose_jwe_export(cjose_jwe_t *jwe, cjose_err *err);
168 
181 
194 cjose_jwe_t *cjose_jwe_import(const char *compact, size_t compact_len, cjose_err *err);
195 
208 cjose_jwe_t *cjose_jwe_import_json(const char *json, size_t json_len, cjose_err *err);
209 
223 uint8_t *cjose_jwe_decrypt(cjose_jwe_t *jwe, const cjose_jwk_t *jwk, size_t *content_len, cjose_err *err);
224 
243 uint8_t *cjose_jwe_decrypt_multi(cjose_jwe_t *jwe, cjose_key_locator key_locator, void *data, size_t *content_len, cjose_err *err);
244 
256 
262 void cjose_jwe_release(cjose_jwe_t *jwe);
263 
264 #ifdef __cplusplus
265 }
266 #endif
267 
268 #endif // CJOSE_JWE_H
jwk.h
Functions and data structures for interacting with JSON Web Key (JWK) objects.
cjose_jwe_export
char * cjose_jwe_export(cjose_jwe_t *jwe, cjose_err *err)
cjose_jwe_recipient_t::unprotected_header
cjose_header_t * unprotected_header
Definition: jwe.h:37
cjose_jwe_import
cjose_jwe_t * cjose_jwe_import(const char *compact, size_t compact_len, cjose_err *err)
cjose_jwe_release
void cjose_jwe_release(cjose_jwe_t *jwe)
cjose_jwe_encrypt
cjose_jwe_t * cjose_jwe_encrypt(const cjose_jwk_t *jwk, cjose_header_t *header, const uint8_t *plaintext, size_t plaintext_len, cjose_err *err)
cjose_jwk_t
struct _cjose_jwk_int cjose_jwk_t
Definition: jwk.h:50
cjose_jwe_decrypt
uint8_t * cjose_jwe_decrypt(cjose_jwe_t *jwe, const cjose_jwk_t *jwk, size_t *content_len, cjose_err *err)
cjose_jwe_import_json
cjose_jwe_t * cjose_jwe_import_json(const char *json, size_t json_len, cjose_err *err)
cjose_jwe_encrypt_multi
cjose_jwe_t * cjose_jwe_encrypt_multi(const cjose_jwe_recipient_t *recipients, size_t recipient_count, cjose_header_t *protected_header, cjose_header_t *shared_unprotected_header, const uint8_t *plaintext, size_t plaintext_len, cjose_err *err)
cjose_jwe_t
struct _cjose_jwe_int cjose_jwe_t
Definition: jwe.h:43
cjose_jwe_recipient_t::jwk
const cjose_jwk_t * jwk
Definition: jwe.h:35
error.h
Datatypes and functions for error reporting.
cjose_jwe_recipient_t
Definition: jwe.h:32
cjose_err
Definition: error.h:66
cjose_jwe_encrypt_iv
cjose_jwe_t * cjose_jwe_encrypt_iv(const cjose_jwk_t *jwk, cjose_header_t *header, const uint8_t *iv, size_t iv_len, const uint8_t *plaintext, size_t plaintext_len, cjose_err *err)
cjose_header_t
struct json_t cjose_header_t
Definition: header.h:98
cjose_jwe_encrypt_multi_iv
cjose_jwe_t * cjose_jwe_encrypt_multi_iv(const cjose_jwe_recipient_t *recipients, size_t recipient_count, cjose_header_t *protected_header, cjose_header_t *shared_unprotected_header, const uint8_t *iv, size_t iv_len, const uint8_t *plaintext, size_t plaintext_len, cjose_err *err)
cjose_jwe_decrypt_multi
uint8_t * cjose_jwe_decrypt_multi(cjose_jwe_t *jwe, cjose_key_locator key_locator, void *data, size_t *content_len, cjose_err *err)
cjose_jwe_get_protected
cjose_header_t * cjose_jwe_get_protected(cjose_jwe_t *jwe)
cjose_jwe_export_json
char * cjose_jwe_export_json(cjose_jwe_t *jwe, cjose_err *err)
header.h
Functions and data structures for interacting with JSON Web Signature (JWS) objects.