libwebsockets
Lightweight C library for HTML5 websockets
Loading...
Searching...
No Matches
lws-gencrypto.h File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  lws_gencrypto_keyelem
 

Macros

#define LWS_GENCRYPTO_MAX_KEYEL_COUNT   LWS_GENCRYPTO_RSA_KEYEL_COUNT
 

Typedefs

typedef struct lws_gencrypto_keyelem lws_gc_elem_t
 

Enumerations

enum  lws_gencrypto_kty {
  LWS_GENCRYPTO_KTY_UNKNOWN , LWS_GENCRYPTO_KTY_OCT , LWS_GENCRYPTO_KTY_RSA , LWS_GENCRYPTO_KTY_EC ,
  LWS_GENCRYPTO_KTY_OKP
}
 
enum  lws_gencrypto_oct_tok { LWS_GENCRYPTO_OCT_KEYEL_K , LWS_GENCRYPTO_OCT_KEYEL_COUNT }
 
enum  lws_gencrypto_rsa_tok {
  LWS_GENCRYPTO_RSA_KEYEL_E , LWS_GENCRYPTO_RSA_KEYEL_N , LWS_GENCRYPTO_RSA_KEYEL_D , LWS_GENCRYPTO_RSA_KEYEL_P ,
  LWS_GENCRYPTO_RSA_KEYEL_Q , LWS_GENCRYPTO_RSA_KEYEL_DP , LWS_GENCRYPTO_RSA_KEYEL_DQ , LWS_GENCRYPTO_RSA_KEYEL_QI ,
  LWS_GENCRYPTO_RSA_KEYEL_OTHER , LWS_GENCRYPTO_RSA_KEYEL_RI , LWS_GENCRYPTO_RSA_KEYEL_DI , LWS_GENCRYPTO_RSA_KEYEL_TI ,
  LWS_GENCRYPTO_RSA_KEYEL_COUNT
}
 
enum  lws_gencrypto_ec_tok {
  LWS_GENCRYPTO_EC_KEYEL_CRV , LWS_GENCRYPTO_EC_KEYEL_X , LWS_GENCRYPTO_EC_KEYEL_D = LWS_GENCRYPTO_RSA_KEYEL_D , LWS_GENCRYPTO_EC_KEYEL_Y ,
  LWS_GENCRYPTO_EC_KEYEL_COUNT
}
 
enum  lws_gencrypto_aes_tok { LWS_GENCRYPTO_AES_KEYEL_K = LWS_GENCRYPTO_OCT_KEYEL_K , LWS_GENCRYPTO_AES_KEYEL_COUNT }
 
enum  lws_gencrypto_okp_tok { LWS_GENCRYPTO_OKP_KEYEL_CRV , LWS_GENCRYPTO_OKP_KEYEL_X , LWS_GENCRYPTO_OKP_KEYEL_D = LWS_GENCRYPTO_RSA_KEYEL_D , LWS_GENCRYPTO_OKP_KEYEL_COUNT }
 

Functions

LWS_VISIBLE LWS_EXTERN int lws_gencrypto_bits_to_bytes (int bits)
 
LWS_VISIBLE LWS_EXTERN int lws_base64_size (int bytes)
 
LWS_VISIBLE LWS_EXTERN size_t lws_gencrypto_padded_length (size_t block_size, size_t len)
 

Data Structure Documentation

◆ lws_gencrypto_keyelem

struct lws_gencrypto_keyelem

Definition at line 109 of file lws-gencrypto.h.

+ Collaboration diagram for lws_gencrypto_keyelem:
Data Fields
uint8_t * buf
uint32_t len

Macro Definition Documentation

◆ LWS_GENCRYPTO_MAX_KEYEL_COUNT

#define LWS_GENCRYPTO_MAX_KEYEL_COUNT   LWS_GENCRYPTO_RSA_KEYEL_COUNT

Definition at line 100 of file lws-gencrypto.h.

Typedef Documentation

◆ lws_gc_elem_t

Enumeration Type Documentation

◆ lws_gencrypto_kty

Enumerator
LWS_GENCRYPTO_KTY_UNKNOWN 
LWS_GENCRYPTO_KTY_OCT 
LWS_GENCRYPTO_KTY_RSA 
LWS_GENCRYPTO_KTY_EC 
LWS_GENCRYPTO_KTY_OKP 

Definition at line 31 of file lws-gencrypto.h.

31 {
33
38};
@ LWS_GENCRYPTO_KTY_EC
@ LWS_GENCRYPTO_KTY_RSA
@ LWS_GENCRYPTO_KTY_OKP
@ LWS_GENCRYPTO_KTY_UNKNOWN
@ LWS_GENCRYPTO_KTY_OCT

◆ lws_gencrypto_oct_tok

Enumerator
LWS_GENCRYPTO_OCT_KEYEL_K 
LWS_GENCRYPTO_OCT_KEYEL_COUNT 

Definition at line 47 of file lws-gencrypto.h.

47 {
48 LWS_GENCRYPTO_OCT_KEYEL_K, /* note... same offset as AES K */
49
51};
@ LWS_GENCRYPTO_OCT_KEYEL_COUNT
@ LWS_GENCRYPTO_OCT_KEYEL_K

◆ lws_gencrypto_rsa_tok

Enumerator
LWS_GENCRYPTO_RSA_KEYEL_E 
LWS_GENCRYPTO_RSA_KEYEL_N 
LWS_GENCRYPTO_RSA_KEYEL_D 
LWS_GENCRYPTO_RSA_KEYEL_P 
LWS_GENCRYPTO_RSA_KEYEL_Q 
LWS_GENCRYPTO_RSA_KEYEL_DP 
LWS_GENCRYPTO_RSA_KEYEL_DQ 
LWS_GENCRYPTO_RSA_KEYEL_QI 
LWS_GENCRYPTO_RSA_KEYEL_OTHER 
LWS_GENCRYPTO_RSA_KEYEL_RI 
LWS_GENCRYPTO_RSA_KEYEL_DI 
LWS_GENCRYPTO_RSA_KEYEL_TI 
LWS_GENCRYPTO_RSA_KEYEL_COUNT 

Definition at line 53 of file lws-gencrypto.h.

53 {
56 LWS_GENCRYPTO_RSA_KEYEL_D, /* note... same offset as EC D */
62
63 /* we don't actively use these if given, but may come from COSE */
64
69
71};
@ LWS_GENCRYPTO_RSA_KEYEL_D
@ LWS_GENCRYPTO_RSA_KEYEL_DP
@ LWS_GENCRYPTO_RSA_KEYEL_QI
@ LWS_GENCRYPTO_RSA_KEYEL_COUNT
@ LWS_GENCRYPTO_RSA_KEYEL_OTHER
@ LWS_GENCRYPTO_RSA_KEYEL_RI
@ LWS_GENCRYPTO_RSA_KEYEL_TI
@ LWS_GENCRYPTO_RSA_KEYEL_E
@ LWS_GENCRYPTO_RSA_KEYEL_DQ
@ LWS_GENCRYPTO_RSA_KEYEL_N
@ LWS_GENCRYPTO_RSA_KEYEL_Q
@ LWS_GENCRYPTO_RSA_KEYEL_P
@ LWS_GENCRYPTO_RSA_KEYEL_DI

◆ lws_gencrypto_ec_tok

Enumerator
LWS_GENCRYPTO_EC_KEYEL_CRV 
LWS_GENCRYPTO_EC_KEYEL_X 
LWS_GENCRYPTO_EC_KEYEL_D 
LWS_GENCRYPTO_EC_KEYEL_Y 
LWS_GENCRYPTO_EC_KEYEL_COUNT 

Definition at line 73 of file lws-gencrypto.h.

73 {
76 /* note... same offset as RSA D */
79
81};
@ LWS_GENCRYPTO_EC_KEYEL_X
@ LWS_GENCRYPTO_EC_KEYEL_COUNT
@ LWS_GENCRYPTO_EC_KEYEL_D
@ LWS_GENCRYPTO_EC_KEYEL_CRV
@ LWS_GENCRYPTO_EC_KEYEL_Y

◆ lws_gencrypto_aes_tok

Enumerator
LWS_GENCRYPTO_AES_KEYEL_K 
LWS_GENCRYPTO_AES_KEYEL_COUNT 

Definition at line 83 of file lws-gencrypto.h.

83 {
84 /* note... same offset as OCT K */
86
88};
@ LWS_GENCRYPTO_AES_KEYEL_K
@ LWS_GENCRYPTO_AES_KEYEL_COUNT

◆ lws_gencrypto_okp_tok

Enumerator
LWS_GENCRYPTO_OKP_KEYEL_CRV 
LWS_GENCRYPTO_OKP_KEYEL_X 
LWS_GENCRYPTO_OKP_KEYEL_D 
LWS_GENCRYPTO_OKP_KEYEL_COUNT 

Definition at line 90 of file lws-gencrypto.h.

90 {
93 /* note... same offset as RSA D */
95
97};
@ LWS_GENCRYPTO_OKP_KEYEL_CRV
@ LWS_GENCRYPTO_OKP_KEYEL_D
@ LWS_GENCRYPTO_OKP_KEYEL_COUNT
@ LWS_GENCRYPTO_OKP_KEYEL_X

Function Documentation

◆ lws_gencrypto_bits_to_bytes()

LWS_VISIBLE LWS_EXTERN int lws_gencrypto_bits_to_bytes ( int bits)

lws_gencrypto_bits_to_bytes() - returns rounded up bytes needed for bits

Parameters
bits

Returns the number of bytes needed to store the given number of bits. If a byte is partially used, the byte count is rounded up.

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_base64_size()

LWS_VISIBLE LWS_EXTERN int lws_base64_size ( int bytes)

lws_base64_size() - returns estimated size of base64 encoding

Parameters
bytes

Returns a slightly oversize estimate of the size of a base64 encoded version of the given amount of unencoded data.

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_gencrypto_padded_length()

LWS_VISIBLE LWS_EXTERN size_t lws_gencrypto_padded_length ( size_t block_size,
size_t len )

lws_gencrypto_padded_length() - returns PKCS#5/#7 padded length

Parameters
blocksize- blocksize to pad to
len- Length of input to pad

Returns the length of a buffer originally of size len after PKCS#5 or PKCS#7 padding has been applied to it.