OpenSSL
1.0.1c
Main Page
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
crypto
engine
tb_ecdh.c
Go to the documentation of this file.
1
/* crypto/engine/tb_ecdh.c */
2
/* ====================================================================
3
* Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
4
*
5
* The Elliptic Curve Public-Key Crypto Library (ECC Code) included
6
* herein is developed by SUN MICROSYSTEMS, INC., and is contributed
7
* to the OpenSSL project.
8
*
9
* The ECC Code is licensed pursuant to the OpenSSL open source
10
* license provided below.
11
*
12
* The ECDH engine software is originally written by Nils Gura and
13
* Douglas Stebila of Sun Microsystems Laboratories.
14
*
15
*/
16
/* ====================================================================
17
* Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved.
18
*
19
* Redistribution and use in source and binary forms, with or without
20
* modification, are permitted provided that the following conditions
21
* are met:
22
*
23
* 1. Redistributions of source code must retain the above copyright
24
* notice, this list of conditions and the following disclaimer.
25
*
26
* 2. Redistributions in binary form must reproduce the above copyright
27
* notice, this list of conditions and the following disclaimer in
28
* the documentation and/or other materials provided with the
29
* distribution.
30
*
31
* 3. All advertising materials mentioning features or use of this
32
* software must display the following acknowledgment:
33
* "This product includes software developed by the OpenSSL Project
34
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
35
*
36
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
37
* endorse or promote products derived from this software without
38
* prior written permission. For written permission, please contact
39
*
[email protected]
.
40
*
41
* 5. Products derived from this software may not be called "OpenSSL"
42
* nor may "OpenSSL" appear in their names without prior written
43
* permission of the OpenSSL Project.
44
*
45
* 6. Redistributions of any form whatsoever must retain the following
46
* acknowledgment:
47
* "This product includes software developed by the OpenSSL Project
48
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
49
*
50
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
51
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
52
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
53
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
54
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
55
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
56
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
57
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
58
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
59
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
60
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
61
* OF THE POSSIBILITY OF SUCH DAMAGE.
62
* ====================================================================
63
*
64
* This product includes cryptographic software written by Eric Young
65
* (
[email protected]
). This product includes software written by Tim
66
* Hudson (
[email protected]
).
67
*
68
*/
69
70
#include "
eng_int.h
"
71
72
/* If this symbol is defined then ENGINE_get_default_ECDH(), the function that is
73
* used by ECDH to hook in implementation code and cache defaults (etc), will
74
* display brief debugging summaries to stderr with the 'nid'. */
75
/* #define ENGINE_ECDH_DEBUG */
76
77
static
ENGINE_TABLE
*ecdh_table = NULL;
78
static
const
int
dummy_nid = 1;
79
80
void
ENGINE_unregister_ECDH
(
ENGINE
*
e
)
81
{
82
engine_table_unregister
(&ecdh_table, e);
83
}
84
85
static
void
engine_unregister_all_ECDH(
void
)
86
{
87
engine_table_cleanup
(&ecdh_table);
88
}
89
90
int
ENGINE_register_ECDH
(
ENGINE
*
e
)
91
{
92
if
(e->
ecdh_meth
)
93
return
engine_table_register
(&ecdh_table,
94
engine_unregister_all_ECDH, e, &dummy_nid, 1, 0);
95
return
1;
96
}
97
98
void
ENGINE_register_all_ECDH
()
99
{
100
ENGINE
*
e
;
101
102
for
(e=
ENGINE_get_first
() ;
e
; e=
ENGINE_get_next
(e))
103
ENGINE_register_ECDH
(e);
104
}
105
106
int
ENGINE_set_default_ECDH
(
ENGINE
*
e
)
107
{
108
if
(e->
ecdh_meth
)
109
return
engine_table_register
(&ecdh_table,
110
engine_unregister_all_ECDH, e, &dummy_nid, 1, 1);
111
return
1;
112
}
113
114
/* Exposed API function to get a functional reference from the implementation
115
* table (ie. try to get a functional reference from the tabled structural
116
* references). */
117
ENGINE
*
ENGINE_get_default_ECDH
(
void
)
118
{
119
return
engine_table_select
(&ecdh_table, dummy_nid);
120
}
121
122
/* Obtains an ECDH implementation from an ENGINE functional reference */
123
const
ECDH_METHOD
*
ENGINE_get_ECDH
(
const
ENGINE
*
e
)
124
{
125
return
e->
ecdh_meth
;
126
}
127
128
/* Sets an ECDH implementation in an ENGINE structure */
129
int
ENGINE_set_ECDH
(
ENGINE
*
e
,
const
ECDH_METHOD
*ecdh_meth)
130
{
131
e->
ecdh_meth
= ecdh_meth;
132
return
1;
133
}
Generated on Thu Jan 10 2013 09:53:36 for OpenSSL by
1.8.2