OSDN Git Service

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