/* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef _MOD_CRYPTO_H_ #define _MOD_CRYPTO_H_ /* Create a set of CRYPTO_DECLARE(type), CRYPTO_DECLARE_NONSTD(type) and * CRYPTO_DECLARE_DATA with appropriate export and import tags for the platform */ #if !defined(WIN32) #define CRYPTO_DECLARE(type) type #define CRYPTO_DECLARE_NONSTD(type) type #define CRYPTO_DECLARE_DATA #elif defined(CRYPTO_DECLARE_STATIC) #define CRYPTO_DECLARE(type) type __stdcall #define CRYPTO_DECLARE_NONSTD(type) type #define CRYPTO_DECLARE_DATA #elif defined(CRYPTO_DECLARE_EXPORT) #define CRYPTO_DECLARE(type) __declspec(dllexport) type __stdcall #define CRYPTO_DECLARE_NONSTD(type) __declspec(dllexport) type #define CRYPTO_DECLARE_DATA __declspec(dllexport) #else #define CRYPTO_DECLARE(type) __declspec(dllimport) type __stdcall #define CRYPTO_DECLARE_NONSTD(type) __declspec(dllimport) type #define CRYPTO_DECLARE_DATA __declspec(dllimport) #endif /** * @file mod_crypto.h * @brief Crypto Module for Apache * * @defgroup MOD_CRYPTO mod_crypto * @ingroup APACHE_MODS * @{ */ #include "apr.h" #include "apr_hooks.h" #include "apr_optional.h" #include "apr_tables.h" #include "apr_uuid.h" #include "apr_pools.h" #include "apr_time.h" #include "apr_crypto.h" #include "httpd.h" #include "http_config.h" #include "ap_config.h" /** * Hook to provide a key. * * @param r The request * @param cipher The cipher to use with this key * @param rec Pointer to the key record from which to derive the key */ APR_DECLARE_EXTERNAL_HOOK(ap, CRYPTO, apr_status_t, crypto_key, (request_rec *r, apr_crypto_block_key_type_t * cipher, apr_crypto_block_key_mode_t * mode, int pad, const apr_crypto_key_rec_t ** rec)); /** * Hook to provide an initialization vector (IV). * * @param r The request * @param size The block size of the expected IV. * @param iv A pointer to where the iv will be returned */ APR_DECLARE_EXTERNAL_HOOK(ap, CRYPTO, apr_status_t, crypto_iv, (request_rec *r, apr_crypto_block_key_type_t * cipher, const unsigned char **iv)); /** * The name of the module. */ extern module AP_MODULE_DECLARE_DATA crypto_module; /** @} */ #endif