CJOSE 0.6.1
jwk.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 */
14#ifndef CJOSE_JWK_H
15#define CJOSE_JWK_H
16
17#include <stdbool.h>
18#include <stdint.h>
19#include <stddef.h>
20#include <openssl/obj_mac.h>
21#include "cjose/error.h"
22#include "cjose/header.h"
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
29typedef enum {
37
47
49typedef struct _cjose_jwk_int cjose_jwk_t;
50
61
74
84
94
106
116const char *cjose_jwk_get_kid(const cjose_jwk_t *jwk, cjose_err *err);
117
130bool cjose_jwk_set_kid(cjose_jwk_t *jwk, const char *kid, size_t len, cjose_err *err);
131
143char *cjose_jwk_to_json(const cjose_jwk_t *jwk, bool priv, cjose_err *err);
144
146typedef struct
147{
149 uint8_t *e;
151 size_t elen;
153 uint8_t *n;
155 size_t nlen;
157 uint8_t *d;
159 size_t dlen;
161 uint8_t *p;
163 size_t plen;
165 uint8_t *q;
167 size_t qlen;
169 uint8_t *dp;
171 size_t dplen;
173 uint8_t *dq;
175 size_t dqlen;
177 uint8_t *qi;
179 size_t qilen;
181
195cjose_jwk_t *cjose_jwk_create_RSA_random(size_t keysize, const uint8_t *e, size_t elen, cjose_err *err);
196
213
215typedef enum {
217 CJOSE_JWK_EC_P_256 = NID_X9_62_prime256v1,
219 CJOSE_JWK_EC_P_384 = NID_secp384r1,
221 CJOSE_JWK_EC_P_521 = NID_secp521r1,
225
227typedef struct
228{
232 uint8_t *d;
234 size_t dlen;
236 uint8_t *x;
238 size_t xlen;
240 uint8_t *y;
242 size_t ylen;
244
257
274
284
297
313cjose_jwk_t *cjose_jwk_create_oct_spec(const uint8_t *data, size_t len, cjose_err *err);
314
331cjose_jwk_t *cjose_jwk_import(const char *json, size_t len, cjose_err *err);
332
349
366
371
372#ifdef __cplusplus
373}
374#endif
375
376#endif // CJOSE_JWK_H
Datatypes and functions for error reporting.
Functions and data structures for interacting with JSON Web Signature (JWS) objects.
struct json_t cjose_header_t
Definition: header.h:96
cjose_jwk_t * cjose_jwk_retain(cjose_jwk_t *jwk, cjose_err *err)
cjose_jwk_t * cjose_jwk_derive_ecdh_ephemeral_key(const cjose_jwk_t *jwk_self, const cjose_jwk_t *jwk_peer, cjose_err *err)
char * cjose_jwk_to_json(const cjose_jwk_t *jwk, bool priv, cjose_err *err)
cjose_jwk_t * cjose_jwk_create_RSA_spec(const cjose_jwk_rsa_keyspec *spec, cjose_err *err)
cjose_jwk_t * cjose_jwk_create_oct_random(size_t size, cjose_err *err)
cjose_jwk_t * cjose_jwk_import_json(cjose_header_t *json, cjose_err *err)
void * cjose_jwk_get_keydata(const cjose_jwk_t *jwk, cjose_err *err)
cjose_jwk_t * cjose_jwk_create_EC_random(cjose_jwk_ec_curve crv, cjose_err *err)
const cjose_jwk_ec_curve cjose_jwk_EC_get_curve(const cjose_jwk_t *jwk, cjose_err *err)
cjose_jwk_ec_curve
Definition: jwk.h:215
@ CJOSE_JWK_EC_P_521
Definition: jwk.h:221
@ CJOSE_JWK_EC_INVALID
Definition: jwk.h:223
@ CJOSE_JWK_EC_P_256
Definition: jwk.h:217
@ CJOSE_JWK_EC_P_384
Definition: jwk.h:219
cjose_jwk_t * cjose_jwk_create_RSA_random(size_t keysize, const uint8_t *e, size_t elen, cjose_err *err)
bool cjose_jwk_release(cjose_jwk_t *jwk)
struct _cjose_jwk_int cjose_jwk_t
Definition: jwk.h:49
cjose_jwk_kty_t cjose_jwk_get_kty(const cjose_jwk_t *jwk, cjose_err *err)
size_t cjose_jwk_get_keysize(const cjose_jwk_t *jwk, cjose_err *err)
cjose_jwk_t * cjose_jwk_create_EC_spec(const cjose_jwk_ec_keyspec *spec, cjose_err *err)
cjose_jwk_t * cjose_jwk_derive_ecdh_secret(const cjose_jwk_t *jwk_self, const cjose_jwk_t *jwk_peer, cjose_err *err)
cjose_jwk_t * cjose_jwk_create_oct_spec(const uint8_t *data, size_t len, cjose_err *err)
bool cjose_jwk_set_kid(cjose_jwk_t *jwk, const char *kid, size_t len, cjose_err *err)
const char * cjose_jwk_name_for_kty(cjose_jwk_kty_t kty, cjose_err *err)
cjose_jwk_kty_t
Definition: jwk.h:29
@ CJOSE_JWK_KTY_EC
Definition: jwk.h:33
@ CJOSE_JWK_KTY_RSA
Definition: jwk.h:31
@ CJOSE_JWK_KTY_OCT
Definition: jwk.h:35
cjose_jwk_t * cjose_jwk_import(const char *json, size_t len, cjose_err *err)
const char * cjose_jwk_get_kid(const cjose_jwk_t *jwk, cjose_err *err)
Definition: error.h:66
Definition: jwk.h:228
size_t xlen
Definition: jwk.h:238
uint8_t * y
Definition: jwk.h:240
uint8_t * x
Definition: jwk.h:236
cjose_jwk_ec_curve crv
Definition: jwk.h:230
size_t ylen
Definition: jwk.h:242
uint8_t * d
Definition: jwk.h:232
size_t dlen
Definition: jwk.h:234
Definition: jwk.h:147
size_t dqlen
Definition: jwk.h:175
size_t elen
Definition: jwk.h:151
uint8_t * p
Definition: jwk.h:161
size_t nlen
Definition: jwk.h:155
uint8_t * q
Definition: jwk.h:165
uint8_t * d
Definition: jwk.h:157
uint8_t * n
Definition: jwk.h:153
size_t qlen
Definition: jwk.h:167
size_t qilen
Definition: jwk.h:179
size_t dplen
Definition: jwk.h:171
uint8_t * e
Definition: jwk.h:149
uint8_t * dq
Definition: jwk.h:173
uint8_t * qi
Definition: jwk.h:177
size_t dlen
Definition: jwk.h:159
uint8_t * dp
Definition: jwk.h:169
size_t plen
Definition: jwk.h:163