Csilk 0.2.1
A lightweight, high-performance C HTTP web framework
Loading...
Searching...
No Matches
cipher.h
Go to the documentation of this file.
1
20#ifndef CSILK_CIPHER_H
21#define CSILK_CIPHER_H
22
23#include <stddef.h>
24#include <stdint.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
31#define CSILK_AES256_KEY_SIZE 32
33#define CSILK_GCM_IV_SIZE 12
35#define CSILK_GCM_TAG_SIZE 16
37#define CSILK_RSA_KEY_BITS 2048
39#define CSILK_RSA_KEY_SIZE 256
41#define CSILK_RSA_SIGNATURE_SIZE 256
42
50typedef struct {
65 int (*symmetric_encrypt)(const uint8_t* key,
66 size_t key_len,
67 const uint8_t* plaintext,
68 size_t plaintext_len,
69 const uint8_t* iv,
70 size_t iv_len,
71 uint8_t* ciphertext,
72 size_t* ciphertext_len,
73 uint8_t* tag,
74 size_t tag_len);
75
88 int (*symmetric_decrypt)(const uint8_t* key,
89 size_t key_len,
90 const uint8_t* ciphertext,
91 size_t ciphertext_len,
92 const uint8_t* iv,
93 size_t iv_len,
94 const uint8_t* tag,
95 size_t tag_len,
96 uint8_t* plaintext,
97 size_t* plaintext_len);
98
105 int (*generate_keypair)(char* public_key,
106 size_t* pub_len,
107 char* private_key,
108 size_t* priv_len);
109
119 int (*asymmetric_encrypt)(const char* public_key,
120 size_t pub_len,
121 const uint8_t* plaintext,
122 size_t plaintext_len,
123 uint8_t* ciphertext,
124 size_t* ciphertext_len);
125
134 int (*asymmetric_decrypt)(const char* private_key,
135 size_t priv_len,
136 const uint8_t* ciphertext,
137 size_t ciphertext_len,
138 uint8_t* plaintext,
139 size_t* plaintext_len);
140
149 int (*sign)(const char* private_key,
150 size_t priv_len,
151 const uint8_t* data,
152 size_t data_len,
153 uint8_t* signature,
154 size_t* sig_len);
155
164 int (*verify)(const char* public_key,
165 size_t pub_len,
166 const uint8_t* data,
167 size_t data_len,
168 const uint8_t* signature,
169 size_t sig_len);
171
172#ifdef __cplusplus
173}
174#endif
175
176#endif
Virtual function table implemented by each cipher backend.
Definition cipher.h:50