CJOSE  0.6.0
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 {
34  const cjose_jwk_t * jwk;
38 
42 typedef struct _cjose_jwe_int cjose_jwe_t;
43 
44 typedef const cjose_jwk_t *(*cjose_key_locator)(cjose_jwe_t *jwe, cjose_header_t *hdr, void *);
45 
65 cjose_jwe_encrypt(const cjose_jwk_t *jwk, cjose_header_t *header, const uint8_t *plaintext, size_t plaintext_len, cjose_err *err);
66 
87  size_t recipient_count,
88  cjose_header_t *protected_header,
89  cjose_header_t *shared_unprotected_header,
90  const uint8_t *plaintext,
91  size_t plaintext_len,
92  cjose_err *err);
93 
105 char *cjose_jwe_export(cjose_jwe_t *jwe, cjose_err *err);
106 
119 
132 cjose_jwe_t *cjose_jwe_import(const char *compact, size_t compact_len, cjose_err *err);
133 
146 cjose_jwe_t *cjose_jwe_import_json(const char *json, size_t json_len, cjose_err *err);
147 
161 uint8_t *cjose_jwe_decrypt(cjose_jwe_t *jwe, const cjose_jwk_t *jwk, size_t *content_len, cjose_err *err);
162 
181 uint8_t *cjose_jwe_decrypt_multi(cjose_jwe_t *jwe, cjose_key_locator key_locator, void *data, size_t *content_len, cjose_err *err);
182 
194 
200 void cjose_jwe_release(cjose_jwe_t *jwe);
201 
202 #ifdef __cplusplus
203 }
204 #endif
205 
206 #endif // CJOSE_JWE_H
Definition: jwe.h:32
uint8_t * cjose_jwe_decrypt(cjose_jwe_t *jwe, const cjose_jwk_t *jwk, size_t *content_len, cjose_err *err)
cjose_header_t * unprotected_header
Definition: jwe.h:36
Functions and data structures for interacting with JSON Web Signature (JWS) objects.
Functions and data structures for interacting with JSON Web Key (JWK) objects.
cjose_header_t * cjose_jwe_get_protected(cjose_jwe_t *jwe)
cjose_jwe_t * cjose_jwe_import(const char *compact, size_t compact_len, cjose_err *err)
struct _cjose_jwk_int cjose_jwk_t
Definition: jwk.h:49
cjose_jwe_t * cjose_jwe_import_json(const char *json, size_t json_len, cjose_err *err)
uint8_t * cjose_jwe_decrypt_multi(cjose_jwe_t *jwe, cjose_key_locator key_locator, void *data, size_t *content_len, cjose_err *err)
Datatypes and functions for error reporting.
struct _cjose_jwe_int cjose_jwe_t
Definition: jwe.h:42
const cjose_jwk_t * jwk
Definition: jwe.h:34
struct json_t cjose_header_t
Definition: header.h:96
Definition: error.h:65
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)
char * cjose_jwe_export_json(cjose_jwe_t *jwe, cjose_err *err)
void cjose_jwe_release(cjose_jwe_t *jwe)
char * cjose_jwe_export(cjose_jwe_t *jwe, cjose_err *err)
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)