José

jwk.h
1 /* vim: set tabstop=8 shiftwidth=4 softtabstop=4 expandtab smarttab colorcolumn=80: */
2 /*
3 * Copyright 2016 Red Hat, Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
30 #pragma once
31
32 #include "cfg.h"
33 #include <jansson.h>
34 #include <stdbool.h>
35 #include <stdint.h>
36
85 bool
86 jose_jwk_gen(jose_cfg_t *cfg, json_t *jwk);
87
100 bool
101 jose_jwk_pub(jose_cfg_t *cfg, json_t *jwk);
102
120 bool
121 jose_jwk_prm(jose_cfg_t *cfg, const json_t *jwk, bool req, const char *op);
122
134 json_t *
135 jose_jwk_thp(jose_cfg_t *cfg, const json_t *jwk, const char *alg);
136
154 size_t
155 jose_jwk_thp_buf(jose_cfg_t *cfg, const json_t *jwk,
156 const char *alg, uint8_t *thp, size_t len);
157
168 json_t *
169 jose_jwk_exc(jose_cfg_t *cfg, const json_t *prv, const json_t *pub);
170
jose_jwk_gen
bool jose_jwk_gen(jose_cfg_t *cfg, json_t *jwk)
Generates a new JWK.
jose_jwk_thp_buf
size_t jose_jwk_thp_buf(jose_cfg_t *cfg, const json_t *jwk, const char *alg, uint8_t *thp, size_t len)
Calculates the thumbprint of a JWK.
jose_jwk_pub
bool jose_jwk_pub(jose_cfg_t *cfg, json_t *jwk)
Removes all private key material from a JWK.
jose_jwk_prm
bool jose_jwk_prm(jose_cfg_t *cfg, const json_t *jwk, bool req, const char *op)
Determines if an operation is permitted for a JWK.
jose_jwk_thp
json_t * jose_jwk_thp(jose_cfg_t *cfg, const json_t *jwk, const char *alg)
Calculates the thumbprint of a JWK as a URL-safe Base64 encoded JSON string.
jose_jwk_exc
json_t * jose_jwk_exc(jose_cfg_t *cfg, const json_t *prv, const json_t *pub)
Perform a key exchange.