Line data Source code
1 : /* crypto/evp/m_ecdsa.c */
2 : /* ====================================================================
3 : * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
4 : *
5 : * Redistribution and use in source and binary forms, with or without
6 : * modification, are permitted provided that the following conditions
7 : * are met:
8 : *
9 : * 1. Redistributions of source code must retain the above copyright
10 : * notice, this list of conditions and the following disclaimer.
11 : *
12 : * 2. Redistributions in binary form must reproduce the above copyright
13 : * notice, this list of conditions and the following disclaimer in
14 : * the documentation and/or other materials provided with the
15 : * distribution.
16 : *
17 : * 3. All advertising materials mentioning features or use of this
18 : * software must display the following acknowledgment:
19 : * "This product includes software developed by the OpenSSL Project
20 : * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
21 : *
22 : * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23 : * endorse or promote products derived from this software without
24 : * prior written permission. For written permission, please contact
25 : * openssl-core@openssl.org.
26 : *
27 : * 5. Products derived from this software may not be called "OpenSSL"
28 : * nor may "OpenSSL" appear in their names without prior written
29 : * permission of the OpenSSL Project.
30 : *
31 : * 6. Redistributions of any form whatsoever must retain the following
32 : * acknowledgment:
33 : * "This product includes software developed by the OpenSSL Project
34 : * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
35 : *
36 : * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37 : * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38 : * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39 : * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
40 : * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 : * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42 : * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43 : * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 : * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45 : * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46 : * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47 : * OF THE POSSIBILITY OF SUCH DAMAGE.
48 : * ====================================================================
49 : *
50 : * This product includes cryptographic software written by Eric Young
51 : * (eay@cryptsoft.com). This product includes software written by Tim
52 : * Hudson (tjh@cryptsoft.com).
53 : *
54 : */
55 : /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
56 : * All rights reserved.
57 : *
58 : * This package is an SSL implementation written
59 : * by Eric Young (eay@cryptsoft.com).
60 : * The implementation was written so as to conform with Netscapes SSL.
61 : *
62 : * This library is free for commercial and non-commercial use as long as
63 : * the following conditions are aheared to. The following conditions
64 : * apply to all code found in this distribution, be it the RC4, RSA,
65 : * lhash, DES, etc., code; not just the SSL code. The SSL documentation
66 : * included with this distribution is covered by the same copyright terms
67 : * except that the holder is Tim Hudson (tjh@cryptsoft.com).
68 : *
69 : * Copyright remains Eric Young's, and as such any Copyright notices in
70 : * the code are not to be removed.
71 : * If this package is used in a product, Eric Young should be given attribution
72 : * as the author of the parts of the library used.
73 : * This can be in the form of a textual message at program startup or
74 : * in documentation (online or textual) provided with the package.
75 : *
76 : * Redistribution and use in source and binary forms, with or without
77 : * modification, are permitted provided that the following conditions
78 : * are met:
79 : * 1. Redistributions of source code must retain the copyright
80 : * notice, this list of conditions and the following disclaimer.
81 : * 2. Redistributions in binary form must reproduce the above copyright
82 : * notice, this list of conditions and the following disclaimer in the
83 : * documentation and/or other materials provided with the distribution.
84 : * 3. All advertising materials mentioning features or use of this software
85 : * must display the following acknowledgement:
86 : * "This product includes cryptographic software written by
87 : * Eric Young (eay@cryptsoft.com)"
88 : * The word 'cryptographic' can be left out if the rouines from the library
89 : * being used are not cryptographic related :-).
90 : * 4. If you include any Windows specific code (or a derivative thereof) from
91 : * the apps directory (application code) you must include an acknowledgement:
92 : * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
93 : *
94 : * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
95 : * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
96 : * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
97 : * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
98 : * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
99 : * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
100 : * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
101 : * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
102 : * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
103 : * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
104 : * SUCH DAMAGE.
105 : *
106 : * The licence and distribution terms for any publically available version or
107 : * derivative of this code cannot be changed. i.e. this code cannot simply be
108 : * copied and put under another distribution licence
109 : * [including the GNU Public Licence.]
110 : */
111 :
112 : #include <stdio.h>
113 : #include "cryptlib.h"
114 : #include <openssl/evp.h>
115 : #include <openssl/objects.h>
116 : #include <openssl/x509.h>
117 :
118 : #ifndef OPENSSL_NO_SHA
119 :
120 0 : static int init(EVP_MD_CTX *ctx)
121 : {
122 0 : return SHA1_Init(ctx->md_data);
123 : }
124 :
125 0 : static int update(EVP_MD_CTX *ctx, const void *data, size_t count)
126 : {
127 0 : return SHA1_Update(ctx->md_data, data, count);
128 : }
129 :
130 0 : static int final(EVP_MD_CTX *ctx, unsigned char *md)
131 : {
132 0 : return SHA1_Final(md, ctx->md_data);
133 : }
134 :
135 : static const EVP_MD ecdsa_md = {
136 : NID_ecdsa_with_SHA1,
137 : NID_ecdsa_with_SHA1,
138 : SHA_DIGEST_LENGTH,
139 : EVP_MD_FLAG_PKEY_DIGEST,
140 : init,
141 : update,
142 : final,
143 : NULL,
144 : NULL,
145 : EVP_PKEY_ECDSA_method,
146 : SHA_CBLOCK,
147 : sizeof(EVP_MD *) + sizeof(SHA_CTX),
148 : };
149 :
150 242 : const EVP_MD *EVP_ecdsa(void)
151 : {
152 242 : return (&ecdsa_md);
153 : }
154 : #endif
|