libwebsockets
Lightweight C library for HTML5 websockets
lws-genrsa.h
1 /*
2  * libwebsockets - small server side websockets and web server implementation
3  *
4  * Copyright (C) 2010-2018 Andy Green <andy@warmcat.com>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation:
9  * version 2.1 of the License.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19  * MA 02110-1301 USA
20  *
21  * included from libwebsockets.h
22  */
23 
33 
35 enum enum_jwk_tok {
36  JWK_KEY_E,
37  JWK_KEY_N,
38  JWK_KEY_D,
39  JWK_KEY_P,
40  JWK_KEY_Q,
41  JWK_KEY_DP,
42  JWK_KEY_DQ,
43  JWK_KEY_QI,
44  JWK_KTY, /* also serves as count of real elements */
45  JWK_KEY,
46 };
47 
48 #define LWS_COUNT_RSA_ELEMENTS JWK_KTY
49 
51 #if defined(LWS_WITH_MBEDTLS)
52  mbedtls_rsa_context *ctx;
53 #else
54  BIGNUM *bn[LWS_COUNT_RSA_ELEMENTS];
55  RSA *rsa;
56 #endif
57 };
58 
60  uint8_t *buf;
61  uint16_t len;
62 };
63 
65  struct lws_genrsa_element e[LWS_COUNT_RSA_ELEMENTS];
66 };
67 
79 LWS_VISIBLE LWS_EXTERN void
81 
94 LWS_VISIBLE LWS_EXTERN int
96 
111 LWS_VISIBLE LWS_EXTERN int
112 lws_genrsa_new_keypair(struct lws_context *context, struct lws_genrsa_ctx *ctx,
113  struct lws_genrsa_elements *el, int bits);
114 
129 LWS_VISIBLE LWS_EXTERN int
130 lws_genrsa_public_decrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
131  size_t in_len, uint8_t *out, size_t out_max);
132 
145 LWS_VISIBLE LWS_EXTERN int
146 lws_genrsa_public_verify(struct lws_genrsa_ctx *ctx, const uint8_t *in,
147  enum lws_genhash_types hash_type,
148  const uint8_t *sig, size_t sig_len);
149 
162 LWS_VISIBLE LWS_EXTERN int
163 lws_genrsa_public_sign(struct lws_genrsa_ctx *ctx, const uint8_t *in,
164  enum lws_genhash_types hash_type, uint8_t *sig,
165  size_t sig_len);
166 
175 LWS_VISIBLE LWS_EXTERN void
177 
187 LWS_VISIBLE LWS_EXTERN int
188 lws_genrsa_render_pkey_asn1(struct lws_genrsa_ctx *ctx, int _private,
189  uint8_t *pkey_asn1, size_t pkey_asn1_len);
lws_genrsa_render_pkey_asn1
LWS_VISIBLE LWS_EXTERN int lws_genrsa_render_pkey_asn1(struct lws_genrsa_ctx *ctx, int _private, uint8_t *pkey_asn1, size_t pkey_asn1_len)
lws_genrsa_element
Definition: lws-genrsa.h:59
lws_genrsa_new_keypair
LWS_VISIBLE LWS_EXTERN int lws_genrsa_new_keypair(struct lws_context *context, struct lws_genrsa_ctx *ctx, struct lws_genrsa_elements *el, int bits)
lws_genrsa_public_verify
LWS_VISIBLE LWS_EXTERN int lws_genrsa_public_verify(struct lws_genrsa_ctx *ctx, const uint8_t *in, enum lws_genhash_types hash_type, const uint8_t *sig, size_t sig_len)
lws_jwk_destroy_genrsa_elements
LWS_VISIBLE LWS_EXTERN void lws_jwk_destroy_genrsa_elements(struct lws_genrsa_elements *el)
lws_genrsa_public_decrypt
LWS_VISIBLE LWS_EXTERN int lws_genrsa_public_decrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in, size_t in_len, uint8_t *out, size_t out_max)
lws_genrsa_public_sign
LWS_VISIBLE LWS_EXTERN int lws_genrsa_public_sign(struct lws_genrsa_ctx *ctx, const uint8_t *in, enum lws_genhash_types hash_type, uint8_t *sig, size_t sig_len)
lws_genrsa_ctx
Definition: lws-genrsa.h:50
lws_genrsa_elements
Definition: lws-genrsa.h:64
lws_genrsa_create
LWS_VISIBLE LWS_EXTERN int lws_genrsa_create(struct lws_genrsa_ctx *ctx, struct lws_genrsa_elements *el)
lws_genrsa_destroy
LWS_VISIBLE LWS_EXTERN void lws_genrsa_destroy(struct lws_genrsa_ctx *ctx)