ecdh.h

Go to the documentation of this file.
00001 /* crypto/ecdh/ecdh.h */
00002 /* ====================================================================
00003  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
00004  *
00005  * The Elliptic Curve Public-Key Crypto Library (ECC Code) included
00006  * herein is developed by SUN MICROSYSTEMS, INC., and is contributed
00007  * to the OpenSSL project.
00008  *
00009  * The ECC Code is licensed pursuant to the OpenSSL open source
00010  * license provided below.
00011  *
00012  * The ECDH software is originally written by Douglas Stebila of
00013  * Sun Microsystems Laboratories.
00014  *
00015  */
00016 /* ====================================================================
00017  * Copyright (c) 2000-2002 The OpenSSL Project.  All rights reserved.
00018  *
00019  * Redistribution and use in source and binary forms, with or without
00020  * modification, are permitted provided that the following conditions
00021  * are met:
00022  *
00023  * 1. Redistributions of source code must retain the above copyright
00024  *    notice, this list of conditions and the following disclaimer.
00025  *
00026  * 2. Redistributions in binary form must reproduce the above copyright
00027  *    notice, this list of conditions and the following disclaimer in
00028  *    the documentation and/or other materials provided with the
00029  *    distribution.
00030  *
00031  * 3. All advertising materials mentioning features or use of this
00032  *    software must display the following acknowledgment:
00033  *    "This product includes software developed by the OpenSSL Project
00034  *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
00035  *
00036  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
00037  *    endorse or promote products derived from this software without
00038  *    prior written permission. For written permission, please contact
00039  *    licensing@OpenSSL.org.
00040  *
00041  * 5. Products derived from this software may not be called "OpenSSL"
00042  *    nor may "OpenSSL" appear in their names without prior written
00043  *    permission of the OpenSSL Project.
00044  *
00045  * 6. Redistributions of any form whatsoever must retain the following
00046  *    acknowledgment:
00047  *    "This product includes software developed by the OpenSSL Project
00048  *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
00049  *
00050  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
00051  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00052  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00053  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
00054  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00055  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
00056  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00057  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
00058  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
00059  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00060  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
00061  * OF THE POSSIBILITY OF SUCH DAMAGE.
00062  * ====================================================================
00063  *
00064  * This product includes cryptographic software written by Eric Young
00065  * (eay@cryptsoft.com).  This product includes software written by Tim
00066  * Hudson (tjh@cryptsoft.com).
00067  *
00068  */
00069 #ifndef HEADER_ECDH_H
00070 #define HEADER_ECDH_H
00071 
00072 #include <openssl/opensslconf.h>
00073 
00074 #ifdef OPENSSL_NO_ECDH
00075 #error ECDH is disabled.
00076 #endif
00077 
00078 #include <openssl/ec.h>
00079 #include <openssl/ossl_typ.h>
00080 #ifndef OPENSSL_NO_DEPRECATED
00081 #include <openssl/bn.h>
00082 #endif
00083 
00084 #ifdef __cplusplus
00085 extern "C" {
00086 #endif
00087 
00088 const ECDH_METHOD *ECDH_OpenSSL(void);
00089 
00090 void    ECDH_set_default_method(const ECDH_METHOD *);
00091 const ECDH_METHOD *ECDH_get_default_method(void);
00092 int     ECDH_set_method(EC_KEY *, const ECDH_METHOD *);
00093 
00094 int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, EC_KEY *ecdh,
00095                      void *(*KDF)(const void *in, size_t inlen, void *out, size_t *outlen));
00096 
00097 int     ECDH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new
00098       *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
00099 int     ECDH_set_ex_data(EC_KEY *d, int idx, void *arg);
00100 void    *ECDH_get_ex_data(EC_KEY *d, int idx);
00101 
00102 
00103 /* BEGIN ERROR CODES */
00104 /* The following lines are auto generated by the script mkerr.pl. Any changes
00105  * made after this point may be overwritten when the script is next run.
00106  */
00107 void ERR_load_ECDH_strings(void);
00108 
00109 /* Error codes for the ECDH functions. */
00110 
00111 /* Function codes. */
00112 #define ECDH_F_ECDH_COMPUTE_KEY            100
00113 #define ECDH_F_ECDH_DATA_NEW_METHOD        101
00114 
00115 /* Reason codes. */
00116 #define ECDH_R_KDF_FAILED            102
00117 #define ECDH_R_NO_PRIVATE_VALUE            100
00118 #define ECDH_R_POINT_ARITHMETIC_FAILURE          101
00119 
00120 #ifdef  __cplusplus
00121 }
00122 #endif
00123 #endif

Generated on Thu Aug 20 22:33:05 2009 for OpenXDAS by  doxygen 1.5.6