ThingWorx C SDK
modes.h
1 /* ====================================================================
2  * Copyright (c) 2008 The OpenSSL Project. All rights reserved.
3  *
4  * Rights for redistribution and usage in source and binary
5  * forms are granted according to the OpenSSL license.
6  */
7 
8 #include <stddef.h>
9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 typedef void (*block128_f) (const unsigned char in[16],
14  unsigned char out[16], const void *key);
15 
16 typedef void (*cbc128_f) (const unsigned char *in, unsigned char *out,
17  size_t len, const void *key,
18  unsigned char ivec[16], int enc);
19 
20 typedef void (*ctr128_f) (const unsigned char *in, unsigned char *out,
21  size_t blocks, const void *key,
22  const unsigned char ivec[16]);
23 
24 typedef void (*ccm128_f) (const unsigned char *in, unsigned char *out,
25  size_t blocks, const void *key,
26  const unsigned char ivec[16],
27  unsigned char cmac[16]);
28 
29 void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out,
30  size_t len, const void *key,
31  unsigned char ivec[16], block128_f block);
32 void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out,
33  size_t len, const void *key,
34  unsigned char ivec[16], block128_f block);
35 
36 void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out,
37  size_t len, const void *key,
38  unsigned char ivec[16],
39  unsigned char ecount_buf[16], unsigned int *num,
40  block128_f block);
41 
42 void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out,
43  size_t len, const void *key,
44  unsigned char ivec[16],
45  unsigned char ecount_buf[16],
46  unsigned int *num, ctr128_f ctr);
47 
48 void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out,
49  size_t len, const void *key,
50  unsigned char ivec[16], int *num,
51  block128_f block);
52 
53 void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out,
54  size_t len, const void *key,
55  unsigned char ivec[16], int *num,
56  int enc, block128_f block);
57 void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out,
58  size_t length, const void *key,
59  unsigned char ivec[16], int *num,
60  int enc, block128_f block);
61 void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out,
62  size_t bits, const void *key,
63  unsigned char ivec[16], int *num,
64  int enc, block128_f block);
65 
66 size_t CRYPTO_cts128_encrypt_block(const unsigned char *in,
67  unsigned char *out, size_t len,
68  const void *key, unsigned char ivec[16],
69  block128_f block);
70 size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out,
71  size_t len, const void *key,
72  unsigned char ivec[16], cbc128_f cbc);
73 size_t CRYPTO_cts128_decrypt_block(const unsigned char *in,
74  unsigned char *out, size_t len,
75  const void *key, unsigned char ivec[16],
76  block128_f block);
77 size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out,
78  size_t len, const void *key,
79  unsigned char ivec[16], cbc128_f cbc);
80 
81 size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in,
82  unsigned char *out, size_t len,
83  const void *key,
84  unsigned char ivec[16],
85  block128_f block);
86 size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out,
87  size_t len, const void *key,
88  unsigned char ivec[16], cbc128_f cbc);
89 size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in,
90  unsigned char *out, size_t len,
91  const void *key,
92  unsigned char ivec[16],
93  block128_f block);
94 size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out,
95  size_t len, const void *key,
96  unsigned char ivec[16], cbc128_f cbc);
97 
98 typedef struct gcm128_context GCM128_CONTEXT;
99 
100 GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block);
101 void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block);
102 void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv,
103  size_t len);
104 int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad,
105  size_t len);
106 int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx,
107  const unsigned char *in, unsigned char *out,
108  size_t len);
109 int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx,
110  const unsigned char *in, unsigned char *out,
111  size_t len);
112 int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx,
113  const unsigned char *in, unsigned char *out,
114  size_t len, ctr128_f stream);
115 int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx,
116  const unsigned char *in, unsigned char *out,
117  size_t len, ctr128_f stream);
118 int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag,
119  size_t len);
120 void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len);
121 void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx);
122 
123 typedef struct ccm128_context CCM128_CONTEXT;
124 
125 void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx,
126  unsigned int M, unsigned int L, void *key,
127  block128_f block);
128 int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce,
129  size_t nlen, size_t mlen);
130 void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad,
131  size_t alen);
132 int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp,
133  unsigned char *out, size_t len);
134 int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp,
135  unsigned char *out, size_t len);
136 int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp,
137  unsigned char *out, size_t len,
138  ccm128_f stream);
139 int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp,
140  unsigned char *out, size_t len,
141  ccm128_f stream);
142 size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len);
143 
144 typedef struct xts128_context XTS128_CONTEXT;
145 
146 int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx,
147  const unsigned char iv[16],
148  const unsigned char *inp, unsigned char *out,
149  size_t len, int enc);
150 
151 size_t CRYPTO_128_wrap(void *key, const unsigned char *iv,
152  unsigned char *out,
153  const unsigned char *in, size_t inlen,
154  block128_f block);
155 
156 size_t CRYPTO_128_unwrap(void *key, const unsigned char *iv,
157  unsigned char *out,
158  const unsigned char *in, size_t inlen,
159  block128_f block);
160 
161 #ifdef __cplusplus
162 }
163 #endif