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