1/* $Id: crypto_openssl.h,v 1.11 2004/11/13 11:28:01 manubsd Exp $ */ 2 3/* 4 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 3. Neither the name of the project nor the names of its contributors 16 * may be used to endorse or promote products derived from this software 17 * without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE 23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29 * SUCH DAMAGE. 30 */ 31 32#ifndef _CRYPTO_OPENSSL_H 33#define _CRYPTO_OPENSSL_H 34 35#include "vmbuf.h" 36#include "crypto_openssl.h" 37#ifdef HAVE_OPENSSL 38#include <openssl/x509v3.h> 39#include <openssl/rsa.h> 40 41#define GENT_OTHERNAME GEN_OTHERNAME 42#define GENT_EMAIL GEN_EMAIL 43#define GENT_DNS GEN_DNS 44#define GENT_IPADD GEN_IPADD 45 46extern int eay_cmp_asn1dn (vchar_t *, vchar_t *); 47extern int eay_get_x509subjectaltname (vchar_t *, char **, int *, int, int*); 48extern vchar_t *eay_get_x509_common_name (vchar_t *); 49 50/* string error */ 51extern char *eay_strerror (void); 52 53/* OpenSSL initialization */ 54extern void eay_init (void); 55#endif /* HAVE_OPENSSL */ 56 57/* DES */ 58extern vchar_t *eay_des_encrypt (vchar_t *, vchar_t *, vchar_t *); 59extern vchar_t *eay_des_decrypt (vchar_t *, vchar_t *, vchar_t *); 60extern int eay_des_weakkey (vchar_t *); 61extern int eay_des_keylen (int); 62 63/* 3DES */ 64extern vchar_t *eay_3des_encrypt (vchar_t *, vchar_t *, vchar_t *); 65extern vchar_t *eay_3des_decrypt (vchar_t *, vchar_t *, vchar_t *); 66extern int eay_3des_weakkey (vchar_t *); 67extern int eay_3des_keylen (int); 68 69/* AES(RIJNDAEL) */ 70extern vchar_t *eay_aes_encrypt (vchar_t *, vchar_t *, vchar_t *); 71extern vchar_t *eay_aes_decrypt (vchar_t *, vchar_t *, vchar_t *); 72extern int eay_aes_weakkey (vchar_t *); 73extern int eay_aes_keylen (int); 74 75/* misc */ 76extern int eay_null_keylen (int); 77extern int eay_null_hashlen (void); 78 79/* hash */ 80#if defined(WITH_SHA2) 81/* HMAC SHA2 */ 82extern vchar_t *eay_hmacsha2_512_one (vchar_t *, vchar_t *); 83extern caddr_t eay_hmacsha2_512_init (vchar_t *); 84extern void eay_hmacsha2_512_update (caddr_t, vchar_t *); 85extern vchar_t *eay_hmacsha2_512_final (caddr_t); 86extern vchar_t *eay_hmacsha2_384_one (vchar_t *, vchar_t *); 87extern caddr_t eay_hmacsha2_384_init (vchar_t *); 88extern void eay_hmacsha2_384_update (caddr_t, vchar_t *); 89extern vchar_t *eay_hmacsha2_384_final (caddr_t); 90extern vchar_t *eay_hmacsha2_256_one (vchar_t *, vchar_t *); 91extern caddr_t eay_hmacsha2_256_init (vchar_t *); 92extern void eay_hmacsha2_256_update (caddr_t, vchar_t *); 93extern vchar_t *eay_hmacsha2_256_final (caddr_t); 94#endif 95/* HMAC SHA1 */ 96extern vchar_t *eay_hmacsha1_one (vchar_t *, vchar_t *); 97extern caddr_t eay_hmacsha1_init (vchar_t *); 98extern void eay_hmacsha1_update (caddr_t, vchar_t *); 99extern vchar_t *eay_hmacsha1_final (caddr_t); 100/* HMAC MD5 */ 101extern vchar_t *eay_hmacmd5_one (vchar_t *, vchar_t *); 102extern caddr_t eay_hmacmd5_init (vchar_t *); 103extern void eay_hmacmd5_update (caddr_t, vchar_t *); 104extern vchar_t *eay_hmacmd5_final (caddr_t); 105 106 107#if defined(WITH_SHA2) 108/* SHA2 functions */ 109extern caddr_t eay_sha2_512_init (void); 110extern void eay_sha2_512_update (caddr_t, vchar_t *); 111extern vchar_t *eay_sha2_512_final (caddr_t); 112extern vchar_t *eay_sha2_512_one (vchar_t *); 113#endif 114extern int eay_sha2_512_hashlen (void); 115 116#if defined(WITH_SHA2) 117extern caddr_t eay_sha2_384_init (void); 118extern void eay_sha2_384_update (caddr_t, vchar_t *); 119extern vchar_t *eay_sha2_384_final (caddr_t); 120extern vchar_t *eay_sha2_384_one (vchar_t *); 121#endif 122extern int eay_sha2_384_hashlen (void); 123 124#if defined(WITH_SHA2) 125extern caddr_t eay_sha2_256_init (void); 126extern void eay_sha2_256_update (caddr_t, vchar_t *); 127extern vchar_t *eay_sha2_256_final (caddr_t); 128extern vchar_t *eay_sha2_256_one (vchar_t *); 129#endif 130extern int eay_sha2_256_hashlen (void); 131 132/* SHA functions */ 133extern caddr_t eay_sha1_init (void); 134extern void eay_sha1_update (caddr_t, vchar_t *); 135extern vchar_t *eay_sha1_final (caddr_t); 136extern vchar_t *eay_sha1_one (vchar_t *); 137extern int eay_sha1_hashlen (void); 138 139/* MD5 functions */ 140extern caddr_t eay_md5_init (void); 141extern void eay_md5_update (caddr_t, vchar_t *); 142extern vchar_t *eay_md5_final (caddr_t); 143extern vchar_t *eay_md5_one (vchar_t *); 144extern int eay_md5_hashlen (void); 145 146/* RNG */ 147extern vchar_t *eay_set_random (u_int32_t); 148extern u_int32_t eay_random (void); 149 150/* DH */ 151extern int eay_dh_generate (vchar_t *, u_int32_t, u_int, vchar_t **, vchar_t **); 152extern int eay_dh_compute (vchar_t *, u_int32_t, vchar_t *, vchar_t *, vchar_t *, vchar_t **); 153 154/* misc */ 155#ifdef HAVE_OPENSSL 156#include <openssl/bn.h> 157extern int eay_v2bn (BIGNUM **, vchar_t *); 158extern int eay_bn2v (vchar_t **, BIGNUM *); 159 160extern const char *eay_version (void); 161#endif 162 163#define CBC_BLOCKLEN 8 164#define IPSEC_ENCRYPTKEYLEN 8 165 166#endif /* _CRYPTO_OPENSSL_H */ 167