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 
34 
35 /* include/libwebsockets/lws-jwk.h must be included before this */
36 
37 enum enum_genrsa_mode {
38  LGRSAM_PKCS1_1_5,
39  LGRSAM_PKCS1_OAEP_PSS,
40 
41  LGRSAM_COUNT
42 };
43 
45 #if defined(LWS_WITH_MBEDTLS)
46  mbedtls_rsa_context *ctx;
47 #else
48  BIGNUM *bn[LWS_GENCRYPTO_RSA_KEYEL_COUNT];
49  EVP_PKEY_CTX *ctx;
50  RSA *rsa;
51 #endif
52  struct lws_context *context;
53  enum enum_genrsa_mode mode;
54 };
55 
75 LWS_VISIBLE LWS_EXTERN int
77  struct lws_context *context, enum enum_genrsa_mode mode,
78  enum lws_genhash_types oaep_hashid);
79 
91 LWS_VISIBLE LWS_EXTERN void
93 
112 LWS_VISIBLE LWS_EXTERN int
113 lws_genrsa_new_keypair(struct lws_context *context, struct lws_genrsa_ctx *ctx,
114  enum enum_genrsa_mode mode, struct lws_gencrypto_keyelem *el,
115  int bits);
116 
130 LWS_VISIBLE LWS_EXTERN int
131 lws_genrsa_public_encrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
132  size_t in_len, uint8_t *out);
133 
147 LWS_VISIBLE LWS_EXTERN int
148 lws_genrsa_private_encrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
149  size_t in_len, uint8_t *out);
150 
165 LWS_VISIBLE LWS_EXTERN int
166 lws_genrsa_public_decrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
167  size_t in_len, uint8_t *out, size_t out_max);
168 
183 LWS_VISIBLE LWS_EXTERN int
184 lws_genrsa_private_decrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in,
185  size_t in_len, uint8_t *out, size_t out_max);
186 
204 LWS_VISIBLE LWS_EXTERN int
205 lws_genrsa_hash_sig_verify(struct lws_genrsa_ctx *ctx, const uint8_t *in,
206  enum lws_genhash_types hash_type,
207  const uint8_t *sig, size_t sig_len);
208 
225 LWS_VISIBLE LWS_EXTERN int
226 lws_genrsa_hash_sign(struct lws_genrsa_ctx *ctx, const uint8_t *in,
227  enum lws_genhash_types hash_type,
228  uint8_t *sig, size_t sig_len);
229 
238 LWS_VISIBLE LWS_EXTERN void
240 
250 LWS_VISIBLE LWS_EXTERN int
251 lws_genrsa_render_pkey_asn1(struct lws_genrsa_ctx *ctx, int _private,
252  uint8_t *pkey_asn1, size_t pkey_asn1_len);
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_VISIBLE LWS_EXTERN int lws_genrsa_new_keypair(struct lws_context *context, struct lws_genrsa_ctx *ctx, enum enum_genrsa_mode mode, struct lws_gencrypto_keyelem *el, int bits)
LWS_VISIBLE LWS_EXTERN int lws_genrsa_create(struct lws_genrsa_ctx *ctx, struct lws_gencrypto_keyelem *el, struct lws_context *context, enum enum_genrsa_mode mode, enum lws_genhash_types oaep_hashid)
LWS_VISIBLE LWS_EXTERN void lws_genrsa_destroy_elements(struct lws_gencrypto_keyelem *el)
LWS_VISIBLE LWS_EXTERN int lws_genrsa_private_decrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in, size_t in_len, uint8_t *out, size_t out_max)
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_VISIBLE LWS_EXTERN void lws_genrsa_destroy(struct lws_genrsa_ctx *ctx)
LWS_VISIBLE LWS_EXTERN int lws_genrsa_public_encrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in, size_t in_len, uint8_t *out)
LWS_VISIBLE LWS_EXTERN int lws_genrsa_private_encrypt(struct lws_genrsa_ctx *ctx, const uint8_t *in, size_t in_len, uint8_t *out)
LWS_VISIBLE LWS_EXTERN int lws_genrsa_hash_sig_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_VISIBLE LWS_EXTERN int lws_genrsa_hash_sign(struct lws_genrsa_ctx *ctx, const uint8_t *in, enum lws_genhash_types hash_type, uint8_t *sig, size_t sig_len)
Definition: lws-gencrypto.h:91
Definition: lws-genrsa.h:44