File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ipsec-tools / src / racoon / crypto_openssl.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:39:10 2012 UTC (12 years, 4 months ago) by misho
Branches: ipsec-tools, MAIN
CVS tags: v0_8_2p2, v0_8_1p0, v0_8_1, v0_8_0p0, v0_8_0, HEAD
ipsec-tools

    1: /*	$NetBSD: crypto_openssl.h,v 1.7 2009/08/17 11:59:10 vanhu Exp $	*/
    2: 
    3: /* Id: crypto_openssl.h,v 1.11 2004/11/13 11:28:01 manubsd Exp */
    4: 
    5: /*
    6:  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
    7:  * All rights reserved.
    8:  * 
    9:  * Redistribution and use in source and binary forms, with or without
   10:  * modification, are permitted provided that the following conditions
   11:  * are met:
   12:  * 1. Redistributions of source code must retain the above copyright
   13:  *    notice, this list of conditions and the following disclaimer.
   14:  * 2. Redistributions in binary form must reproduce the above copyright
   15:  *    notice, this list of conditions and the following disclaimer in the
   16:  *    documentation and/or other materials provided with the distribution.
   17:  * 3. Neither the name of the project nor the names of its contributors
   18:  *    may be used to endorse or promote products derived from this software
   19:  *    without specific prior written permission.
   20:  * 
   21:  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
   22:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   23:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   24:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
   25:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   26:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   27:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   28:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   29:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   30:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   31:  * SUCH DAMAGE.
   32:  */
   33: 
   34: #ifndef _CRYPTO_OPENSSL_H
   35: #define _CRYPTO_OPENSSL_H
   36: 
   37: #include <openssl/x509v3.h>
   38: #include <openssl/rsa.h>
   39: 
   40: #define GENT_OTHERNAME	GEN_OTHERNAME
   41: #define GENT_EMAIL	GEN_EMAIL
   42: #define GENT_DNS	GEN_DNS
   43: #define GENT_X400	GEN_X400
   44: #define GENT_DIRNAME	GEN_DIRNAME
   45: #define GENT_EDIPARTY	GEN_EDIPARTY
   46: #define GENT_URI	GEN_URI
   47: #define GENT_IPADD	GEN_IPADD
   48: #define GENT_RID	GEN_RID
   49: 
   50: extern vchar_t *eay_str2asn1dn __P((const char *, int));
   51: extern vchar_t *eay_hex2asn1dn __P((const char *, int));
   52: extern int eay_cmp_asn1dn __P((vchar_t *, vchar_t *));
   53: extern int eay_check_x509cert __P((vchar_t *, char *, char *, int));
   54: extern vchar_t *eay_get_x509asn1subjectname __P((vchar_t *));
   55: extern int eay_get_x509subjectaltname __P((vchar_t *, char **, int *, int));
   56: extern vchar_t * eay_get_x509asn1issuername __P((vchar_t *));
   57: extern char *eay_get_x509text __P((vchar_t *));
   58: extern vchar_t *eay_get_x509cert __P((char *));
   59: extern vchar_t *eay_get_x509sign __P((vchar_t *, vchar_t *));
   60: extern int eay_check_x509sign __P((vchar_t *, vchar_t *, vchar_t *));
   61: 
   62: extern int eay_check_rsasign __P((vchar_t *, vchar_t *, RSA *));
   63: extern vchar_t *eay_get_rsasign __P((vchar_t *, RSA *));
   64: 
   65: /* RSA */
   66: extern vchar_t *eay_rsa_sign __P((vchar_t *, RSA *));
   67: extern int eay_rsa_verify __P((vchar_t *, vchar_t *, RSA *));
   68: 
   69: /* ASN.1 */
   70: extern vchar_t *eay_get_pkcs1privkey __P((char *));
   71: extern vchar_t *eay_get_pkcs1pubkey __P((char *));
   72: 
   73: /* string error */
   74: extern char *eay_strerror __P((void));
   75: 
   76: /* OpenSSL initialization */
   77: extern void eay_init __P((void));
   78: 
   79: /* Generic EVP */
   80: extern vchar_t *evp_crypt __P((vchar_t *data, vchar_t *key, vchar_t *iv,
   81: 			       const EVP_CIPHER *e, int enc));
   82: extern int evp_weakkey __P((vchar_t *key, const EVP_CIPHER *e));
   83: extern int evp_keylen __P((int len, const EVP_CIPHER *e));
   84: 
   85: /* DES */
   86: extern vchar_t *eay_des_encrypt __P((vchar_t *, vchar_t *, vchar_t *));
   87: extern vchar_t *eay_des_decrypt __P((vchar_t *, vchar_t *, vchar_t *));
   88: extern int eay_des_weakkey __P((vchar_t *));
   89: extern int eay_des_keylen __P((int));
   90: 
   91: /* IDEA */
   92: extern vchar_t *eay_idea_encrypt __P((vchar_t *, vchar_t *, vchar_t *));
   93: extern vchar_t *eay_idea_decrypt __P((vchar_t *, vchar_t *, vchar_t *));
   94: extern int eay_idea_weakkey __P((vchar_t *));
   95: extern int eay_idea_keylen __P((int));
   96: 
   97: /* blowfish */
   98: extern vchar_t *eay_bf_encrypt __P((vchar_t *, vchar_t *, vchar_t *));
   99: extern vchar_t *eay_bf_decrypt __P((vchar_t *, vchar_t *, vchar_t *));
  100: extern int eay_bf_weakkey __P((vchar_t *));
  101: extern int eay_bf_keylen __P((int));
  102: 
  103: /* RC5 */
  104: extern vchar_t *eay_rc5_encrypt __P((vchar_t *, vchar_t *, vchar_t *));
  105: extern vchar_t *eay_rc5_decrypt __P((vchar_t *, vchar_t *, vchar_t *));
  106: extern int eay_rc5_weakkey __P((vchar_t *));
  107: extern int eay_rc5_keylen __P((int));
  108: 
  109: /* 3DES */
  110: extern vchar_t *eay_3des_encrypt __P((vchar_t *, vchar_t *, vchar_t *));
  111: extern vchar_t *eay_3des_decrypt __P((vchar_t *, vchar_t *, vchar_t *));
  112: extern int eay_3des_weakkey __P((vchar_t *));
  113: extern int eay_3des_keylen __P((int));
  114: 
  115: /* CAST */
  116: extern vchar_t *eay_cast_encrypt __P((vchar_t *, vchar_t *, vchar_t *));
  117: extern vchar_t *eay_cast_decrypt __P((vchar_t *, vchar_t *, vchar_t *));
  118: extern int eay_cast_weakkey __P((vchar_t *));
  119: extern int eay_cast_keylen __P((int));
  120: 
  121: /* AES(RIJNDAEL) */
  122: extern vchar_t *eay_aes_encrypt __P((vchar_t *, vchar_t *, vchar_t *));
  123: extern vchar_t *eay_aes_decrypt __P((vchar_t *, vchar_t *, vchar_t *));
  124: extern int eay_aes_weakkey __P((vchar_t *));
  125: extern int eay_aes_keylen __P((int));
  126: 
  127: #if defined(HAVE_OPENSSL_CAMELLIA_H)
  128: /* Camellia */
  129: extern vchar_t *eay_camellia_encrypt __P((vchar_t *, vchar_t *, vchar_t *));
  130: extern vchar_t *eay_camellia_decrypt __P((vchar_t *, vchar_t *, vchar_t *));
  131: extern int eay_camellia_weakkey __P((vchar_t *));
  132: extern int eay_camellia_keylen __P((int));
  133: #endif
  134: 
  135: /* misc */
  136: extern int eay_null_keylen __P((int));
  137: extern int eay_null_hashlen __P((void));
  138: extern int eay_kpdk_hashlen __P((void));
  139: extern int eay_twofish_keylen __P((int));
  140: 
  141: /* hash */
  142: #if defined(WITH_SHA2)
  143: /* HMAC SHA2 */
  144: extern vchar_t *eay_hmacsha2_512_one __P((vchar_t *, vchar_t *));
  145: extern caddr_t eay_hmacsha2_512_init __P((vchar_t *));
  146: extern void eay_hmacsha2_512_update __P((caddr_t, vchar_t *));
  147: extern vchar_t *eay_hmacsha2_512_final __P((caddr_t));
  148: extern vchar_t *eay_hmacsha2_384_one __P((vchar_t *, vchar_t *));
  149: extern caddr_t eay_hmacsha2_384_init __P((vchar_t *));
  150: extern void eay_hmacsha2_384_update __P((caddr_t, vchar_t *));
  151: extern vchar_t *eay_hmacsha2_384_final __P((caddr_t));
  152: extern vchar_t *eay_hmacsha2_256_one __P((vchar_t *, vchar_t *));
  153: extern caddr_t eay_hmacsha2_256_init __P((vchar_t *));
  154: extern void eay_hmacsha2_256_update __P((caddr_t, vchar_t *));
  155: extern vchar_t *eay_hmacsha2_256_final __P((caddr_t));
  156: #endif
  157: /* HMAC SHA1 */
  158: extern vchar_t *eay_hmacsha1_one __P((vchar_t *, vchar_t *));
  159: extern caddr_t eay_hmacsha1_init __P((vchar_t *));
  160: extern void eay_hmacsha1_update __P((caddr_t, vchar_t *));
  161: extern vchar_t *eay_hmacsha1_final __P((caddr_t));
  162: /* HMAC MD5 */
  163: extern vchar_t *eay_hmacmd5_one __P((vchar_t *, vchar_t *));
  164: extern caddr_t eay_hmacmd5_init __P((vchar_t *));
  165: extern void eay_hmacmd5_update __P((caddr_t, vchar_t *));
  166: extern vchar_t *eay_hmacmd5_final __P((caddr_t));
  167: 
  168: #if defined(WITH_SHA2)
  169: /* SHA2 functions */
  170: extern caddr_t eay_sha2_512_init __P((void));
  171: extern void eay_sha2_512_update __P((caddr_t, vchar_t *));
  172: extern vchar_t *eay_sha2_512_final __P((caddr_t));
  173: extern vchar_t *eay_sha2_512_one __P((vchar_t *));
  174: #endif
  175: extern int eay_sha2_512_hashlen __P((void));
  176: 
  177: #if defined(WITH_SHA2)
  178: extern caddr_t eay_sha2_384_init __P((void));
  179: extern void eay_sha2_384_update __P((caddr_t, vchar_t *));
  180: extern vchar_t *eay_sha2_384_final __P((caddr_t));
  181: extern vchar_t *eay_sha2_384_one __P((vchar_t *));
  182: #endif
  183: extern int eay_sha2_384_hashlen __P((void));
  184: 
  185: #if defined(WITH_SHA2)
  186: extern caddr_t eay_sha2_256_init __P((void));
  187: extern void eay_sha2_256_update __P((caddr_t, vchar_t *));
  188: extern vchar_t *eay_sha2_256_final __P((caddr_t));
  189: extern vchar_t *eay_sha2_256_one __P((vchar_t *));
  190: #endif
  191: extern int eay_sha2_256_hashlen __P((void));
  192: 
  193: /* SHA functions */
  194: extern caddr_t eay_sha1_init __P((void));
  195: extern void eay_sha1_update __P((caddr_t, vchar_t *));
  196: extern vchar_t *eay_sha1_final __P((caddr_t));
  197: extern vchar_t *eay_sha1_one __P((vchar_t *));
  198: extern int eay_sha1_hashlen __P((void));
  199: 
  200: /* MD5 functions */
  201: extern caddr_t eay_md5_init __P((void));
  202: extern void eay_md5_update __P((caddr_t, vchar_t *));
  203: extern vchar_t *eay_md5_final __P((caddr_t));
  204: extern vchar_t *eay_md5_one __P((vchar_t *));
  205: extern int eay_md5_hashlen __P((void));
  206: 
  207: /* RNG */
  208: extern vchar_t *eay_set_random __P((u_int32_t));
  209: extern u_int32_t eay_random __P((void));
  210: 
  211: /* DH */
  212: extern int eay_dh_generate __P((vchar_t *, u_int32_t, u_int, vchar_t **, vchar_t **));
  213: extern int eay_dh_compute __P((vchar_t *, u_int32_t, vchar_t *, vchar_t *, vchar_t *, vchar_t **));
  214: 
  215: /* Base 64 */
  216: vchar_t *base64_encode(char *in, long inlen);
  217: vchar_t *base64_decode(char *in, long inlen);
  218: 
  219: RSA *base64_pubkey2rsa(char *in);
  220: RSA *bignum_pubkey2rsa(BIGNUM *in);
  221: 
  222: /* misc */
  223: extern int eay_revbnl __P((vchar_t *));
  224: #include <openssl/bn.h>
  225: extern int eay_v2bn __P((BIGNUM **, vchar_t *));
  226: extern int eay_bn2v __P((vchar_t **, BIGNUM *));
  227: 
  228: extern const char *eay_version __P((void));
  229: 
  230: #define CBC_BLOCKLEN 8
  231: #define IPSEC_ENCRYPTKEYLEN 8
  232: 
  233: #endif /* _CRYPTO_OPENSSL_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>