]> git.ipfire.org Git - thirdparty/openssl.git/blame - include/openssl/modes.h
Rename OPENSSL_CTX prefix to OSSL_LIB_CTX
[thirdparty/openssl.git] / include / openssl / modes.h
CommitLineData
21dcbebc
RS
1/*
2 * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
63fc7f84 3 *
48f4ad77 4 * Licensed under the Apache License 2.0 (the "License"). You may not use
21dcbebc
RS
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
63fc7f84
AP
8 */
9
ae4186b0
DMSP
10#ifndef OPENSSL_MODES_H
11# define OPENSSL_MODES_H
d86167ec
DMSP
12# pragma once
13
14# include <openssl/macros.h>
936c2b9e 15# ifndef OPENSSL_NO_DEPRECATED_3_0
d86167ec
DMSP
16# define HEADER_MODES_H
17# endif
63fc7f84 18
7dc60ba7 19# include <stddef.h>
50cd4768 20# include <openssl/types.h>
7dc60ba7
RL
21
22# ifdef __cplusplus
17e80c6b 23extern "C" {
7dc60ba7 24# endif
0f113f3e
MC
25typedef void (*block128_f) (const unsigned char in[16],
26 unsigned char out[16], const void *key);
85b2c0ce 27
0f113f3e
MC
28typedef void (*cbc128_f) (const unsigned char *in, unsigned char *out,
29 size_t len, const void *key,
30 unsigned char ivec[16], int enc);
fe150ac2 31
2ff16afc
X
32typedef void (*ecb128_f) (const unsigned char *in, unsigned char *out,
33 size_t len, const void *key,
34 int enc);
35
0f113f3e
MC
36typedef void (*ctr128_f) (const unsigned char *in, unsigned char *out,
37 size_t blocks, const void *key,
38 const unsigned char ivec[16]);
f472ec8c 39
0f113f3e
MC
40typedef void (*ccm128_f) (const unsigned char *in, unsigned char *out,
41 size_t blocks, const void *key,
42 const unsigned char ivec[16],
43 unsigned char cmac[16]);
f855b9d7 44
85b2c0ce 45void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out,
0f113f3e
MC
46 size_t len, const void *key,
47 unsigned char ivec[16], block128_f block);
85b2c0ce 48void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out,
0f113f3e
MC
49 size_t len, const void *key,
50 unsigned char ivec[16], block128_f block);
85b2c0ce
AP
51
52void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out,
0f113f3e
MC
53 size_t len, const void *key,
54 unsigned char ivec[16],
55 unsigned char ecount_buf[16], unsigned int *num,
56 block128_f block);
85b2c0ce 57
f472ec8c 58void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out,
0f113f3e
MC
59 size_t len, const void *key,
60 unsigned char ivec[16],
61 unsigned char ecount_buf[16],
62 unsigned int *num, ctr128_f ctr);
f472ec8c 63
85b2c0ce 64void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out,
0f113f3e
MC
65 size_t len, const void *key,
66 unsigned char ivec[16], int *num,
67 block128_f block);
85b2c0ce
AP
68
69void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out,
0f113f3e
MC
70 size_t len, const void *key,
71 unsigned char ivec[16], int *num,
72 int enc, block128_f block);
85b2c0ce 73void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out,
0f113f3e
MC
74 size_t length, const void *key,
75 unsigned char ivec[16], int *num,
76 int enc, block128_f block);
85b2c0ce 77void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out,
0f113f3e
MC
78 size_t bits, const void *key,
79 unsigned char ivec[16], int *num,
80 int enc, block128_f block);
81
82size_t CRYPTO_cts128_encrypt_block(const unsigned char *in,
83 unsigned char *out, size_t len,
84 const void *key, unsigned char ivec[16],
85 block128_f block);
fe150ac2 86size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out,
0f113f3e
MC
87 size_t len, const void *key,
88 unsigned char ivec[16], cbc128_f cbc);
89size_t CRYPTO_cts128_decrypt_block(const unsigned char *in,
90 unsigned char *out, size_t len,
91 const void *key, unsigned char ivec[16],
92 block128_f block);
fe150ac2 93size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out,
0f113f3e
MC
94 size_t len, const void *key,
95 unsigned char ivec[16], cbc128_f cbc);
96
97size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in,
98 unsigned char *out, size_t len,
99 const void *key,
100 unsigned char ivec[16],
101 block128_f block);
67a315b6 102size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out,
0f113f3e
MC
103 size_t len, const void *key,
104 unsigned char ivec[16], cbc128_f cbc);
105size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in,
106 unsigned char *out, size_t len,
107 const void *key,
108 unsigned char ivec[16],
109 block128_f block);
67a315b6 110size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out,
0f113f3e
MC
111 size_t len, const void *key,
112 unsigned char ivec[16], cbc128_f cbc);
19f7e5e2
BL
113
114typedef struct gcm128_context GCM128_CONTEXT;
115
6acb4ff3 116GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block);
0f113f3e 117void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block);
19f7e5e2 118void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv,
0f113f3e 119 size_t len);
1f2502eb 120int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad,
0f113f3e 121 size_t len);
1f2502eb 122int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx,
0f113f3e
MC
123 const unsigned char *in, unsigned char *out,
124 size_t len);
1f2502eb 125int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx,
0f113f3e
MC
126 const unsigned char *in, unsigned char *out,
127 size_t len);
1f2502eb 128int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx,
0f113f3e
MC
129 const unsigned char *in, unsigned char *out,
130 size_t len, ctr128_f stream);
1f2502eb 131int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx,
0f113f3e
MC
132 const unsigned char *in, unsigned char *out,
133 size_t len, ctr128_f stream);
134int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag,
135 size_t len);
f855b9d7 136void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len);
6acb4ff3 137void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx);
32a2d8dd 138
6386b1b3
DSH
139typedef struct ccm128_context CCM128_CONTEXT;
140
141void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx,
0f113f3e
MC
142 unsigned int M, unsigned int L, void *key,
143 block128_f block);
144int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce,
145 size_t nlen, size_t mlen);
146void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad,
147 size_t alen);
148int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp,
149 unsigned char *out, size_t len);
150int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp,
151 unsigned char *out, size_t len);
152int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp,
153 unsigned char *out, size_t len,
154 ccm128_f stream);
155int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp,
156 unsigned char *out, size_t len,
157 ccm128_f stream);
23916810 158size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len);
6386b1b3 159
32a2d8dd
DSH
160typedef struct xts128_context XTS128_CONTEXT;
161
0f113f3e
MC
162int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx,
163 const unsigned char iv[16],
164 const unsigned char *inp, unsigned char *out,
165 size_t len, int enc);
c857a80c 166
97cf1f6c 167size_t CRYPTO_128_wrap(void *key, const unsigned char *iv,
0f113f3e
MC
168 unsigned char *out,
169 const unsigned char *in, size_t inlen,
170 block128_f block);
97cf1f6c
DSH
171
172size_t CRYPTO_128_unwrap(void *key, const unsigned char *iv,
0f113f3e
MC
173 unsigned char *out,
174 const unsigned char *in, size_t inlen,
175 block128_f block);
d31fed73 176size_t CRYPTO_128_wrap_pad(void *key, const unsigned char *icv,
0f113f3e
MC
177 unsigned char *out, const unsigned char *in,
178 size_t inlen, block128_f block);
d31fed73 179size_t CRYPTO_128_unwrap_pad(void *key, const unsigned char *icv,
0f113f3e
MC
180 unsigned char *out, const unsigned char *in,
181 size_t inlen, block128_f block);
c857a80c 182
7dc60ba7 183# ifndef OPENSSL_NO_OCB
c857a80c
MC
184typedef struct ocb128_context OCB128_CONTEXT;
185
bd30091c
AP
186typedef void (*ocb128_f) (const unsigned char *in, unsigned char *out,
187 size_t blocks, const void *key,
188 size_t start_block_num,
189 unsigned char offset_i[16],
190 const unsigned char L_[][16],
191 unsigned char checksum[16]);
192
0f113f3e 193OCB128_CONTEXT *CRYPTO_ocb128_new(void *keyenc, void *keydec,
bd30091c
AP
194 block128_f encrypt, block128_f decrypt,
195 ocb128_f stream);
0f113f3e 196int CRYPTO_ocb128_init(OCB128_CONTEXT *ctx, void *keyenc, void *keydec,
bd30091c
AP
197 block128_f encrypt, block128_f decrypt,
198 ocb128_f stream);
c857a80c 199int CRYPTO_ocb128_copy_ctx(OCB128_CONTEXT *dest, OCB128_CONTEXT *src,
0f113f3e 200 void *keyenc, void *keydec);
c857a80c 201int CRYPTO_ocb128_setiv(OCB128_CONTEXT *ctx, const unsigned char *iv,
0f113f3e 202 size_t len, size_t taglen);
c857a80c 203int CRYPTO_ocb128_aad(OCB128_CONTEXT *ctx, const unsigned char *aad,
0f113f3e
MC
204 size_t len);
205int CRYPTO_ocb128_encrypt(OCB128_CONTEXT *ctx, const unsigned char *in,
206 unsigned char *out, size_t len);
207int CRYPTO_ocb128_decrypt(OCB128_CONTEXT *ctx, const unsigned char *in,
208 unsigned char *out, size_t len);
209int CRYPTO_ocb128_finish(OCB128_CONTEXT *ctx, const unsigned char *tag,
210 size_t len);
c857a80c
MC
211int CRYPTO_ocb128_tag(OCB128_CONTEXT *ctx, unsigned char *tag, size_t len);
212void CRYPTO_ocb128_cleanup(OCB128_CONTEXT *ctx);
7dc60ba7 213# endif /* OPENSSL_NO_OCB */
c857a80c 214
7dc60ba7 215# ifdef __cplusplus
17e80c6b 216}
7dc60ba7
RL
217# endif
218
17e80c6b 219#endif