Apache Portable Runtime Utility Library
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
apr_crypto_internal.h
1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2  * contributor license agreements. See the NOTICE file distributed with
3  * this work for additional information regarding copyright ownership.
4  * The ASF licenses this file to You under the Apache License, Version 2.0
5  * (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef APR_CRYPTO_INTERNAL_H
18 #define APR_CRYPTO_INTERNAL_H
19 
20 #include <stdarg.h>
21 
22 #include "apr_crypto.h"
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 #if APU_HAVE_CRYPTO
29 
30 struct apr_crypto_driver_t {
31 
33  const char *name;
34 
42  apr_status_t (*init)(apr_pool_t *pool, const char *params,
43  const apu_err_t **result);
44 
57  apr_status_t (*make)(apr_crypto_t **f, const apr_crypto_driver_t *provider,
58  const char *params, apr_pool_t *pool);
59 
68  apr_status_t (*get_block_key_types)(apr_hash_t **types,
69  const apr_crypto_t *f);
70 
79  apr_status_t (*get_block_key_modes)(apr_hash_t **modes,
80  const apr_crypto_t *f);
81 
110  apr_status_t (*passphrase)(apr_crypto_key_t **key, apr_size_t *ivSize,
111  const char *pass, apr_size_t passLen, const unsigned char * salt,
112  apr_size_t saltLen, const apr_crypto_block_key_type_e type,
113  const apr_crypto_block_key_mode_e mode, const int doPad,
114  const int iterations, const apr_crypto_t *f, apr_pool_t *p);
115 
132  apr_status_t (*block_encrypt_init)(apr_crypto_block_t **ctx,
133  const unsigned char **iv, const apr_crypto_key_t *key,
134  apr_size_t *blockSize, apr_pool_t *p);
135 
154  apr_status_t (*block_encrypt)(unsigned char **out, apr_size_t *outlen,
155  const unsigned char *in, apr_size_t inlen, apr_crypto_block_t *ctx);
156 
175  apr_status_t (*block_encrypt_finish)(unsigned char *out,
176  apr_size_t *outlen, apr_crypto_block_t *ctx);
177 
193  apr_status_t (*block_decrypt_init)(apr_crypto_block_t **ctx,
194  apr_size_t *blockSize, const unsigned char *iv,
195  const apr_crypto_key_t *key, apr_pool_t *p);
196 
215  apr_status_t (*block_decrypt)(unsigned char **out, apr_size_t *outlen,
216  const unsigned char *in, apr_size_t inlen, apr_crypto_block_t *ctx);
217 
236  apr_status_t (*block_decrypt_finish)(unsigned char *out,
237  apr_size_t *outlen, apr_crypto_block_t *ctx);
238 
245  apr_status_t (*block_cleanup)(apr_crypto_block_t *ctx);
246 
253  apr_status_t (*cleanup)(apr_crypto_t *f);
254 
260  apr_status_t (*shutdown)(void);
261 
268  apr_status_t (*error)(const apu_err_t **result, const apr_crypto_t *f);
269 
270 };
271 
272 #endif
273 
274 #ifdef __cplusplus
275 }
276 #endif
277 
278 #endif