CJOSE 0.6.2.3
Loading...
Searching...
No Matches
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
38
48
50typedef struct _cjose_jwk_int cjose_jwk_t;
51
62
75
85
95
107
117const char *cjose_jwk_get_kid(const cjose_jwk_t *jwk, cjose_err *err);
118
131bool cjose_jwk_set_kid(cjose_jwk_t *jwk, const char *kid, size_t len, cjose_err *err);
132
144char *cjose_jwk_to_json(const cjose_jwk_t *jwk, bool priv, cjose_err *err);
145
147typedef struct
148{
150 uint8_t *e;
152 size_t elen;
154 uint8_t *n;
156 size_t nlen;
158 uint8_t *d;
160 size_t dlen;
162 uint8_t *p;
164 size_t plen;
166 uint8_t *q;
168 size_t qlen;
170 uint8_t *dp;
172 size_t dplen;
174 uint8_t *dq;
176 size_t dqlen;
178 uint8_t *qi;
180 size_t qilen;
182
196cjose_jwk_t *cjose_jwk_create_RSA_random(size_t keysize, const uint8_t *e, size_t elen, cjose_err *err);
197
214
216typedef enum
217{
219 CJOSE_JWK_EC_P_256 = NID_X9_62_prime256v1,
221 CJOSE_JWK_EC_P_384 = NID_secp384r1,
223 CJOSE_JWK_EC_P_521 = NID_secp521r1,
227
229typedef struct
230{
234 uint8_t *d;
236 size_t dlen;
238 uint8_t *x;
240 size_t xlen;
242 uint8_t *y;
244 size_t ylen;
246
259
276
286
299
315cjose_jwk_t *cjose_jwk_create_oct_spec(const uint8_t *data, size_t len, cjose_err *err);
316
333cjose_jwk_t *cjose_jwk_import(const char *json, size_t len, cjose_err *err);
334
351
370 const cjose_jwk_t *jwk_self, const cjose_jwk_t *jwk_peer, const uint8_t *salt, size_t salt_len, cjose_err *err);
371
376 const cjose_jwk_t *jwk_self, const cjose_jwk_t *jwk_peer, const uint8_t *salt, size_t salt_len, cjose_err *err);
377
378#ifdef __cplusplus
379}
380#endif
381
382#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:98
cjose_jwk_t * cjose_jwk_retain(cjose_jwk_t *jwk, 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:217
@ CJOSE_JWK_EC_P_521
Definition jwk.h:223
@ CJOSE_JWK_EC_INVALID
Definition jwk.h:225
@ CJOSE_JWK_EC_P_256
Definition jwk.h:219
@ CJOSE_JWK_EC_P_384
Definition jwk.h:221
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:50
cjose_jwk_kty_t cjose_jwk_get_kty(const cjose_jwk_t *jwk, cjose_err *err)
cjose_jwk_t * cjose_jwk_derive_ecdh_secret(const cjose_jwk_t *jwk_self, const cjose_jwk_t *jwk_peer, const uint8_t *salt, size_t salt_len, 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_create_oct_spec(const uint8_t *data, size_t len, cjose_err *err)
cjose_jwk_t * cjose_jwk_derive_ecdh_ephemeral_key(const cjose_jwk_t *jwk_self, const cjose_jwk_t *jwk_peer, const uint8_t *salt, size_t salt_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:30
@ CJOSE_JWK_KTY_EC
Definition jwk.h:34
@ CJOSE_JWK_KTY_RSA
Definition jwk.h:32
@ CJOSE_JWK_KTY_OCT
Definition jwk.h:36
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:67
Definition jwk.h:230
size_t xlen
Definition jwk.h:240
uint8_t * y
Definition jwk.h:242
uint8_t * x
Definition jwk.h:238
cjose_jwk_ec_curve crv
Definition jwk.h:232
size_t ylen
Definition jwk.h:244
uint8_t * d
Definition jwk.h:234
size_t dlen
Definition jwk.h:236
Definition jwk.h:148
size_t dqlen
Definition jwk.h:176
size_t elen
Definition jwk.h:152
uint8_t * p
Definition jwk.h:162
size_t nlen
Definition jwk.h:156
uint8_t * q
Definition jwk.h:166
uint8_t * d
Definition jwk.h:158
uint8_t * n
Definition jwk.h:154
size_t qlen
Definition jwk.h:168
size_t qilen
Definition jwk.h:180
size_t dplen
Definition jwk.h:172
uint8_t * e
Definition jwk.h:150
uint8_t * dq
Definition jwk.h:174
uint8_t * qi
Definition jwk.h:178
size_t dlen
Definition jwk.h:160
uint8_t * dp
Definition jwk.h:170
size_t plen
Definition jwk.h:164