OSDN Git Service

Update OpenSSL to 1.0.1b.
[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 typedef void (*block128_f)(const unsigned char in[16],\r
11                         unsigned char out[16],\r
12                         const void *key);\r
13 \r
14 typedef void (*cbc128_f)(const unsigned char *in, unsigned char *out,\r
15                         size_t len, const void *key,\r
16                         unsigned char ivec[16], int enc);\r
17 \r
18 typedef void (*ctr128_f)(const unsigned char *in, unsigned char *out,\r
19                         size_t blocks, const void *key,\r
20                         const unsigned char ivec[16]);\r
21 \r
22 typedef void (*ccm128_f)(const unsigned char *in, unsigned char *out,\r
23                         size_t blocks, const void *key,\r
24                         const unsigned char ivec[16],unsigned char cmac[16]);\r
25 \r
26 void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out,\r
27                         size_t len, const void *key,\r
28                         unsigned char ivec[16], block128_f block);\r
29 void CRYPTO_cbc128_decrypt(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 \r
33 void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out,\r
34                         size_t len, const void *key,\r
35                         unsigned char ivec[16], unsigned char ecount_buf[16],\r
36                         unsigned int *num, block128_f block);\r
37 \r
38 void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out,\r
39                         size_t len, const void *key,\r
40                         unsigned char ivec[16], unsigned char ecount_buf[16],\r
41                         unsigned int *num, ctr128_f ctr);\r
42 \r
43 void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out,\r
44                         size_t len, const void *key,\r
45                         unsigned char ivec[16], int *num,\r
46                         block128_f block);\r
47 \r
48 void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out,\r
49                         size_t len, const void *key,\r
50                         unsigned char ivec[16], int *num,\r
51                         int enc, block128_f block);\r
52 void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out,\r
53                         size_t length, const void *key,\r
54                         unsigned char ivec[16], int *num,\r
55                         int enc, block128_f block);\r
56 void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out,\r
57                         size_t bits, const void *key,\r
58                         unsigned char ivec[16], int *num,\r
59                         int enc, block128_f block);\r
60 \r
61 size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, unsigned char *out,\r
62                         size_t len, const void *key,\r
63                         unsigned char ivec[16], block128_f block);\r
64 size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out,\r
65                         size_t len, const void *key,\r
66                         unsigned char ivec[16], cbc128_f cbc);\r
67 size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, unsigned char *out,\r
68                         size_t len, const void *key,\r
69                         unsigned char ivec[16], block128_f block);\r
70 size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out,\r
71                         size_t len, const void *key,\r
72                         unsigned char ivec[16], cbc128_f cbc);\r
73 \r
74 size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, unsigned char *out,\r
75                         size_t len, const void *key,\r
76                         unsigned char ivec[16], block128_f block);\r
77 size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out,\r
78                         size_t len, const void *key,\r
79                         unsigned char ivec[16], cbc128_f cbc);\r
80 size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, unsigned char *out,\r
81                         size_t len, const void *key,\r
82                         unsigned char ivec[16], block128_f block);\r
83 size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out,\r
84                         size_t len, const void *key,\r
85                         unsigned char ivec[16], cbc128_f cbc);\r
86 \r
87 typedef struct gcm128_context GCM128_CONTEXT;\r
88 \r
89 GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block);\r
90 void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx,void *key,block128_f block);\r
91 void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv,\r
92                         size_t len);\r
93 int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad,\r
94                         size_t len);\r
95 int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx,\r
96                         const unsigned char *in, unsigned char *out,\r
97                         size_t len);\r
98 int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx,\r
99                         const unsigned char *in, unsigned char *out,\r
100                         size_t len);\r
101 int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx,\r
102                         const unsigned char *in, unsigned char *out,\r
103                         size_t len, ctr128_f stream);\r
104 int CRYPTO_gcm128_decrypt_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_finish(GCM128_CONTEXT *ctx,const unsigned char *tag,\r
108                         size_t len);\r
109 void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len);\r
110 void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx);\r
111 \r
112 typedef struct ccm128_context CCM128_CONTEXT;\r
113 \r
114 void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx,\r
115         unsigned int M, unsigned int L, void *key,block128_f block);\r
116 int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx,\r
117         const unsigned char *nonce, size_t nlen, size_t mlen);\r
118 void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx,\r
119         const unsigned char *aad, size_t alen);\r
120 int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx,\r
121         const unsigned char *inp, unsigned char *out, size_t len);\r
122 int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx,\r
123         const unsigned char *inp, unsigned char *out, size_t len);\r
124 int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx,\r
125         const unsigned char *inp, unsigned char *out, size_t len,\r
126         ccm128_f stream);\r
127 int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx,\r
128         const unsigned char *inp, unsigned char *out, size_t len,\r
129         ccm128_f stream);\r
130 size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len);\r
131 \r
132 typedef struct xts128_context XTS128_CONTEXT;\r
133 \r
134 int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16],\r
135         const unsigned char *inp, unsigned char *out, size_t len, int enc);\r