* copy vendor drop to trunk
[lab.git] / Dev / utvpn / utvpn-unix-v101-7101-public / src / Mayaqua / openssl / ecdh.h
1 /* crypto/ecdh/ecdh.h */\r
2 /* ====================================================================\r
3  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.\r
4  *\r
5  * The Elliptic Curve Public-Key Crypto Library (ECC Code) included\r
6  * herein is developed by SUN MICROSYSTEMS, INC., and is contributed\r
7  * to the OpenSSL project.\r
8  *\r
9  * The ECC Code is licensed pursuant to the OpenSSL open source\r
10  * license provided below.\r
11  *\r
12  * The ECDH software is originally written by Douglas Stebila of\r
13  * Sun Microsystems Laboratories.\r
14  *\r
15  */\r
16 /* ====================================================================\r
17  * Copyright (c) 2000-2002 The OpenSSL Project.  All rights reserved.\r
18  *\r
19  * Redistribution and use in source and binary forms, with or without\r
20  * modification, are permitted provided that the following conditions\r
21  * are met:\r
22  *\r
23  * 1. Redistributions of source code must retain the above copyright\r
24  *    notice, this list of conditions and the following disclaimer. \r
25  *\r
26  * 2. Redistributions in binary form must reproduce the above copyright\r
27  *    notice, this list of conditions and the following disclaimer in\r
28  *    the documentation and/or other materials provided with the\r
29  *    distribution.\r
30  *\r
31  * 3. All advertising materials mentioning features or use of this\r
32  *    software must display the following acknowledgment:\r
33  *    "This product includes software developed by the OpenSSL Project\r
34  *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"\r
35  *\r
36  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to\r
37  *    endorse or promote products derived from this software without\r
38  *    prior written permission. For written permission, please contact\r
39  *    licensing@OpenSSL.org.\r
40  *\r
41  * 5. Products derived from this software may not be called "OpenSSL"\r
42  *    nor may "OpenSSL" appear in their names without prior written\r
43  *    permission of the OpenSSL Project.\r
44  *\r
45  * 6. Redistributions of any form whatsoever must retain the following\r
46  *    acknowledgment:\r
47  *    "This product includes software developed by the OpenSSL Project\r
48  *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"\r
49  *\r
50  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY\r
51  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
52  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
53  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR\r
54  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
55  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\r
56  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
57  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
58  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
59  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
60  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r
61  * OF THE POSSIBILITY OF SUCH DAMAGE.\r
62  * ====================================================================\r
63  *\r
64  * This product includes cryptographic software written by Eric Young\r
65  * (eay@cryptsoft.com).  This product includes software written by Tim\r
66  * Hudson (tjh@cryptsoft.com).\r
67  *\r
68  */\r
69 #ifndef HEADER_ECDH_H\r
70 #define HEADER_ECDH_H\r
71 \r
72 #include <openssl/opensslconf.h>\r
73 \r
74 #ifdef OPENSSL_NO_ECDH\r
75 #error ECDH is disabled.\r
76 #endif\r
77 \r
78 #include <openssl/ec.h>\r
79 #include <openssl/ossl_typ.h>\r
80 #ifndef OPENSSL_NO_DEPRECATED\r
81 #include <openssl/bn.h>\r
82 #endif\r
83 \r
84 #ifdef __cplusplus\r
85 extern "C" {\r
86 #endif\r
87 \r
88 const ECDH_METHOD *ECDH_OpenSSL(void);\r
89 \r
90 void      ECDH_set_default_method(const ECDH_METHOD *);\r
91 const ECDH_METHOD *ECDH_get_default_method(void);\r
92 int       ECDH_set_method(EC_KEY *, const ECDH_METHOD *);\r
93 \r
94 int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, EC_KEY *ecdh,\r
95                      void *(*KDF)(const void *in, size_t inlen, void *out, size_t *outlen));\r
96 \r
97 int       ECDH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new \r
98                 *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);\r
99 int       ECDH_set_ex_data(EC_KEY *d, int idx, void *arg);\r
100 void      *ECDH_get_ex_data(EC_KEY *d, int idx);\r
101 \r
102 \r
103 /* BEGIN ERROR CODES */\r
104 /* The following lines are auto generated by the script mkerr.pl. Any changes\r
105  * made after this point may be overwritten when the script is next run.\r
106  */\r
107 void ERR_load_ECDH_strings(void);\r
108 \r
109 /* Error codes for the ECDH functions. */\r
110 \r
111 /* Function codes. */\r
112 #define ECDH_F_ECDH_COMPUTE_KEY                          100\r
113 #define ECDH_F_ECDH_DATA_NEW_METHOD                      101\r
114 \r
115 /* Reason codes. */\r
116 #define ECDH_R_KDF_FAILED                                102\r
117 #define ECDH_R_NO_PRIVATE_VALUE                          100\r
118 #define ECDH_R_POINT_ARITHMETIC_FAILURE                  101\r
119 \r
120 #ifdef  __cplusplus\r
121 }\r
122 #endif\r
123 #endif\r