Apache Portable Runtime Utility Library
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
25extern "C" {
26#endif
27
28#if APU_HAVE_CRYPTO
29
30struct 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
286 apr_status_t (*key)(apr_crypto_key_t **key, const apr_crypto_key_rec_t *rec,
287 const apr_crypto_t *f, apr_pool_t *p);
288
289};
290
291#endif
292
293#ifdef __cplusplus
294}
295#endif
296
297#endif
APR-UTIL Crypto library.
Definition: apu_errno.h:161