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 
bool jose_jwk_gen(jose_cfg_t *cfg, json_t *jwk)
Generates a new JWK.
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.
bool jose_jwk_pub(jose_cfg_t *cfg, json_t *jwk)
Removes all private key material from a JWK.
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.
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.
json_t * jose_jwk_exc(jose_cfg_t *cfg, const json_t *prv, const json_t *pub)
Perform a key exchange.