openssl_rsa_pss_verify 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +35 -0
- data/README +1 -0
- data/Rakefile +4 -0
- data/ext/openssl_rsa_pss_verify/extconf.rb +15 -0
- data/ext/openssl_rsa_pss_verify/openssl_rsa_pss_verify_ext.c +56 -0
- data/lib/openssl_rsa_pss_verify/version.rb +3 -0
- data/lib/openssl_rsa_pss_verify.rb +2 -0
- data/openssl_rsa_pss_verify.gemspec +26 -0
- data/tasks/compile.rake +12 -0
- data/tasks/rspec.rake +12 -0
- data/vendor/openssl/include/openssl/aes.h +147 -0
- data/vendor/openssl/include/openssl/asn1.h +1404 -0
- data/vendor/openssl/include/openssl/asn1_mac.h +578 -0
- data/vendor/openssl/include/openssl/asn1t.h +960 -0
- data/vendor/openssl/include/openssl/bio.h +847 -0
- data/vendor/openssl/include/openssl/blowfish.h +129 -0
- data/vendor/openssl/include/openssl/bn.h +891 -0
- data/vendor/openssl/include/openssl/buffer.h +119 -0
- data/vendor/openssl/include/openssl/camellia.h +130 -0
- data/vendor/openssl/include/openssl/cast.h +107 -0
- data/vendor/openssl/include/openssl/cmac.h +82 -0
- data/vendor/openssl/include/openssl/cms.h +501 -0
- data/vendor/openssl/include/openssl/comp.h +80 -0
- data/vendor/openssl/include/openssl/conf.h +263 -0
- data/vendor/openssl/include/openssl/conf_api.h +89 -0
- data/vendor/openssl/include/openssl/crypto.h +611 -0
- data/vendor/openssl/include/openssl/des.h +248 -0
- data/vendor/openssl/include/openssl/des_old.h +446 -0
- data/vendor/openssl/include/openssl/dh.h +280 -0
- data/vendor/openssl/include/openssl/dsa.h +327 -0
- data/vendor/openssl/include/openssl/dso.h +409 -0
- data/vendor/openssl/include/openssl/dtls1.h +287 -0
- data/vendor/openssl/include/openssl/e_os2.h +315 -0
- data/vendor/openssl/include/openssl/ebcdic.h +19 -0
- data/vendor/openssl/include/openssl/ec.h +1167 -0
- data/vendor/openssl/include/openssl/ecdh.h +125 -0
- data/vendor/openssl/include/openssl/ecdsa.h +260 -0
- data/vendor/openssl/include/openssl/engine.h +842 -0
- data/vendor/openssl/include/openssl/err.h +386 -0
- data/vendor/openssl/include/openssl/evp.h +1409 -0
- data/vendor/openssl/include/openssl/hmac.h +110 -0
- data/vendor/openssl/include/openssl/idea.h +103 -0
- data/vendor/openssl/include/openssl/krb5_asn.h +256 -0
- data/vendor/openssl/include/openssl/kssl.h +183 -0
- data/vendor/openssl/include/openssl/lhash.h +241 -0
- data/vendor/openssl/include/openssl/md4.h +120 -0
- data/vendor/openssl/include/openssl/md5.h +120 -0
- data/vendor/openssl/include/openssl/mdc2.h +98 -0
- data/vendor/openssl/include/openssl/modes.h +135 -0
- data/vendor/openssl/include/openssl/obj_mac.h +4032 -0
- data/vendor/openssl/include/openssl/objects.h +1138 -0
- data/vendor/openssl/include/openssl/ocsp.h +623 -0
- data/vendor/openssl/include/openssl/opensslconf.h +234 -0
- data/vendor/openssl/include/openssl/opensslv.h +89 -0
- data/vendor/openssl/include/openssl/ossl_typ.h +202 -0
- data/vendor/openssl/include/openssl/pem.h +641 -0
- data/vendor/openssl/include/openssl/pem2.h +70 -0
- data/vendor/openssl/include/openssl/pkcs12.h +331 -0
- data/vendor/openssl/include/openssl/pkcs7.h +499 -0
- data/vendor/openssl/include/openssl/pqueue.h +94 -0
- data/vendor/openssl/include/openssl/rand.h +149 -0
- data/vendor/openssl/include/openssl/rc2.h +103 -0
- data/vendor/openssl/include/openssl/rc4.h +90 -0
- data/vendor/openssl/include/openssl/ripemd.h +107 -0
- data/vendor/openssl/include/openssl/rsa.h +582 -0
- data/vendor/openssl/include/openssl/safestack.h +2663 -0
- data/vendor/openssl/include/openssl/seed.h +139 -0
- data/vendor/openssl/include/openssl/sha.h +214 -0
- data/vendor/openssl/include/openssl/srp.h +172 -0
- data/vendor/openssl/include/openssl/srtp.h +145 -0
- data/vendor/openssl/include/openssl/ssl.h +2579 -0
- data/vendor/openssl/include/openssl/ssl2.h +272 -0
- data/vendor/openssl/include/openssl/ssl23.h +83 -0
- data/vendor/openssl/include/openssl/ssl3.h +684 -0
- data/vendor/openssl/include/openssl/stack.h +108 -0
- data/vendor/openssl/include/openssl/symhacks.h +475 -0
- data/vendor/openssl/include/openssl/tls1.h +735 -0
- data/vendor/openssl/include/openssl/ts.h +858 -0
- data/vendor/openssl/include/openssl/txt_db.h +112 -0
- data/vendor/openssl/include/openssl/ui.h +383 -0
- data/vendor/openssl/include/openssl/ui_compat.h +83 -0
- data/vendor/openssl/include/openssl/whrlpool.h +41 -0
- data/vendor/openssl/include/openssl/x509.h +1297 -0
- data/vendor/openssl/include/openssl/x509_vfy.h +567 -0
- data/vendor/openssl/include/openssl/x509v3.h +1007 -0
- data/vendor/openssl/lib/engines/lib4758cca.so +0 -0
- data/vendor/openssl/lib/engines/libaep.so +0 -0
- data/vendor/openssl/lib/engines/libatalla.so +0 -0
- data/vendor/openssl/lib/engines/libcapi.so +0 -0
- data/vendor/openssl/lib/engines/libchil.so +0 -0
- data/vendor/openssl/lib/engines/libcswift.so +0 -0
- data/vendor/openssl/lib/engines/libgmp.so +0 -0
- data/vendor/openssl/lib/engines/libgost.so +0 -0
- data/vendor/openssl/lib/engines/libnuron.so +0 -0
- data/vendor/openssl/lib/engines/libpadlock.so +0 -0
- data/vendor/openssl/lib/engines/libsureware.so +0 -0
- data/vendor/openssl/lib/engines/libubsec.so +0 -0
- data/vendor/openssl/lib/libcrypto.a +0 -0
- data/vendor/openssl/lib/libcrypto.so +0 -0
- data/vendor/openssl/lib/libcrypto.so.1.0.0 +0 -0
- data/vendor/openssl/lib/libssl.a +0 -0
- data/vendor/openssl/lib/libssl.so +0 -0
- data/vendor/openssl/lib/libssl.so.1.0.0 +0 -0
- data/vendor/openssl/lib/pkgconfig/libcrypto.pc +12 -0
- data/vendor/openssl/lib/pkgconfig/libssl.pc +12 -0
- data/vendor/openssl/lib/pkgconfig/openssl.pc +12 -0
- metadata +208 -0
@@ -0,0 +1,125 @@
|
|
1
|
+
/* crypto/ecdh/ecdh.h */
|
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 software is originally written by Douglas Stebila of
|
13
|
+
* 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
|
+
* licensing@OpenSSL.org.
|
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
|
+
* (eay@cryptsoft.com). This product includes software written by Tim
|
66
|
+
* Hudson (tjh@cryptsoft.com).
|
67
|
+
*
|
68
|
+
*/
|
69
|
+
#ifndef HEADER_ECDH_H
|
70
|
+
#define HEADER_ECDH_H
|
71
|
+
|
72
|
+
#include <openssl/opensslconf.h>
|
73
|
+
|
74
|
+
#ifdef OPENSSL_NO_ECDH
|
75
|
+
#error ECDH is disabled.
|
76
|
+
#endif
|
77
|
+
|
78
|
+
#include <openssl/ec.h>
|
79
|
+
#include <openssl/ossl_typ.h>
|
80
|
+
#ifndef OPENSSL_NO_DEPRECATED
|
81
|
+
#include <openssl/bn.h>
|
82
|
+
#endif
|
83
|
+
|
84
|
+
#ifdef __cplusplus
|
85
|
+
extern "C" {
|
86
|
+
#endif
|
87
|
+
|
88
|
+
const ECDH_METHOD *ECDH_OpenSSL(void);
|
89
|
+
|
90
|
+
void ECDH_set_default_method(const ECDH_METHOD *);
|
91
|
+
const ECDH_METHOD *ECDH_get_default_method(void);
|
92
|
+
int ECDH_set_method(EC_KEY *, const ECDH_METHOD *);
|
93
|
+
|
94
|
+
int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, EC_KEY *ecdh,
|
95
|
+
void *(*KDF)(const void *in, size_t inlen, void *out, size_t *outlen));
|
96
|
+
|
97
|
+
int ECDH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new
|
98
|
+
*new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
|
99
|
+
int ECDH_set_ex_data(EC_KEY *d, int idx, void *arg);
|
100
|
+
void *ECDH_get_ex_data(EC_KEY *d, int idx);
|
101
|
+
|
102
|
+
|
103
|
+
/* BEGIN ERROR CODES */
|
104
|
+
/* The following lines are auto generated by the script mkerr.pl. Any changes
|
105
|
+
* made after this point may be overwritten when the script is next run.
|
106
|
+
*/
|
107
|
+
void ERR_load_ECDH_strings(void);
|
108
|
+
|
109
|
+
/* Error codes for the ECDH functions. */
|
110
|
+
|
111
|
+
/* Function codes. */
|
112
|
+
#define ECDH_F_ECDH_CHECK 102
|
113
|
+
#define ECDH_F_ECDH_COMPUTE_KEY 100
|
114
|
+
#define ECDH_F_ECDH_DATA_NEW_METHOD 101
|
115
|
+
|
116
|
+
/* Reason codes. */
|
117
|
+
#define ECDH_R_KDF_FAILED 102
|
118
|
+
#define ECDH_R_NON_FIPS_METHOD 103
|
119
|
+
#define ECDH_R_NO_PRIVATE_VALUE 100
|
120
|
+
#define ECDH_R_POINT_ARITHMETIC_FAILURE 101
|
121
|
+
|
122
|
+
#ifdef __cplusplus
|
123
|
+
}
|
124
|
+
#endif
|
125
|
+
#endif
|
@@ -0,0 +1,260 @@
|
|
1
|
+
/* crypto/ecdsa/ecdsa.h */
|
2
|
+
/**
|
3
|
+
* \file crypto/ecdsa/ecdsa.h Include file for the OpenSSL ECDSA functions
|
4
|
+
* \author Written by Nils Larsch for the OpenSSL project
|
5
|
+
*/
|
6
|
+
/* ====================================================================
|
7
|
+
* Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved.
|
8
|
+
*
|
9
|
+
* Redistribution and use in source and binary forms, with or without
|
10
|
+
* modification, are permitted provided that the following conditions
|
11
|
+
* are met:
|
12
|
+
*
|
13
|
+
* 1. Redistributions of source code must retain the above copyright
|
14
|
+
* notice, this list of conditions and the following disclaimer.
|
15
|
+
*
|
16
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
17
|
+
* notice, this list of conditions and the following disclaimer in
|
18
|
+
* the documentation and/or other materials provided with the
|
19
|
+
* distribution.
|
20
|
+
*
|
21
|
+
* 3. All advertising materials mentioning features or use of this
|
22
|
+
* software must display the following acknowledgment:
|
23
|
+
* "This product includes software developed by the OpenSSL Project
|
24
|
+
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
|
25
|
+
*
|
26
|
+
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
27
|
+
* endorse or promote products derived from this software without
|
28
|
+
* prior written permission. For written permission, please contact
|
29
|
+
* licensing@OpenSSL.org.
|
30
|
+
*
|
31
|
+
* 5. Products derived from this software may not be called "OpenSSL"
|
32
|
+
* nor may "OpenSSL" appear in their names without prior written
|
33
|
+
* permission of the OpenSSL Project.
|
34
|
+
*
|
35
|
+
* 6. Redistributions of any form whatsoever must retain the following
|
36
|
+
* acknowledgment:
|
37
|
+
* "This product includes software developed by the OpenSSL Project
|
38
|
+
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
|
39
|
+
*
|
40
|
+
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
41
|
+
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
42
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
43
|
+
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
44
|
+
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
45
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
46
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
47
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
48
|
+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
49
|
+
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
50
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
51
|
+
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
52
|
+
* ====================================================================
|
53
|
+
*
|
54
|
+
* This product includes cryptographic software written by Eric Young
|
55
|
+
* (eay@cryptsoft.com). This product includes software written by Tim
|
56
|
+
* Hudson (tjh@cryptsoft.com).
|
57
|
+
*
|
58
|
+
*/
|
59
|
+
#ifndef HEADER_ECDSA_H
|
60
|
+
#define HEADER_ECDSA_H
|
61
|
+
|
62
|
+
#include <openssl/opensslconf.h>
|
63
|
+
|
64
|
+
#ifdef OPENSSL_NO_ECDSA
|
65
|
+
#error ECDSA is disabled.
|
66
|
+
#endif
|
67
|
+
|
68
|
+
#include <openssl/ec.h>
|
69
|
+
#include <openssl/ossl_typ.h>
|
70
|
+
#ifndef OPENSSL_NO_DEPRECATED
|
71
|
+
#include <openssl/bn.h>
|
72
|
+
#endif
|
73
|
+
|
74
|
+
#ifdef __cplusplus
|
75
|
+
extern "C" {
|
76
|
+
#endif
|
77
|
+
|
78
|
+
typedef struct ECDSA_SIG_st
|
79
|
+
{
|
80
|
+
BIGNUM *r;
|
81
|
+
BIGNUM *s;
|
82
|
+
} ECDSA_SIG;
|
83
|
+
|
84
|
+
/** Allocates and initialize a ECDSA_SIG structure
|
85
|
+
* \return pointer to a ECDSA_SIG structure or NULL if an error occurred
|
86
|
+
*/
|
87
|
+
ECDSA_SIG *ECDSA_SIG_new(void);
|
88
|
+
|
89
|
+
/** frees a ECDSA_SIG structure
|
90
|
+
* \param sig pointer to the ECDSA_SIG structure
|
91
|
+
*/
|
92
|
+
void ECDSA_SIG_free(ECDSA_SIG *sig);
|
93
|
+
|
94
|
+
/** DER encode content of ECDSA_SIG object (note: this function modifies *pp
|
95
|
+
* (*pp += length of the DER encoded signature)).
|
96
|
+
* \param sig pointer to the ECDSA_SIG object
|
97
|
+
* \param pp pointer to a unsigned char pointer for the output or NULL
|
98
|
+
* \return the length of the DER encoded ECDSA_SIG object or 0
|
99
|
+
*/
|
100
|
+
int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp);
|
101
|
+
|
102
|
+
/** Decodes a DER encoded ECDSA signature (note: this function changes *pp
|
103
|
+
* (*pp += len)).
|
104
|
+
* \param sig pointer to ECDSA_SIG pointer (may be NULL)
|
105
|
+
* \param pp memory buffer with the DER encoded signature
|
106
|
+
* \param len length of the buffer
|
107
|
+
* \return pointer to the decoded ECDSA_SIG structure (or NULL)
|
108
|
+
*/
|
109
|
+
ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len);
|
110
|
+
|
111
|
+
/** Computes the ECDSA signature of the given hash value using
|
112
|
+
* the supplied private key and returns the created signature.
|
113
|
+
* \param dgst pointer to the hash value
|
114
|
+
* \param dgst_len length of the hash value
|
115
|
+
* \param eckey EC_KEY object containing a private EC key
|
116
|
+
* \return pointer to a ECDSA_SIG structure or NULL if an error occurred
|
117
|
+
*/
|
118
|
+
ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst,int dgst_len,EC_KEY *eckey);
|
119
|
+
|
120
|
+
/** Computes ECDSA signature of a given hash value using the supplied
|
121
|
+
* private key (note: sig must point to ECDSA_size(eckey) bytes of memory).
|
122
|
+
* \param dgst pointer to the hash value to sign
|
123
|
+
* \param dgstlen length of the hash value
|
124
|
+
* \param kinv BIGNUM with a pre-computed inverse k (optional)
|
125
|
+
* \param rp BIGNUM with a pre-computed rp value (optioanl),
|
126
|
+
* see ECDSA_sign_setup
|
127
|
+
* \param eckey EC_KEY object containing a private EC key
|
128
|
+
* \return pointer to a ECDSA_SIG structure or NULL if an error occurred
|
129
|
+
*/
|
130
|
+
ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen,
|
131
|
+
const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey);
|
132
|
+
|
133
|
+
/** Verifies that the supplied signature is a valid ECDSA
|
134
|
+
* signature of the supplied hash value using the supplied public key.
|
135
|
+
* \param dgst pointer to the hash value
|
136
|
+
* \param dgst_len length of the hash value
|
137
|
+
* \param sig ECDSA_SIG structure
|
138
|
+
* \param eckey EC_KEY object containing a public EC key
|
139
|
+
* \return 1 if the signature is valid, 0 if the signature is invalid
|
140
|
+
* and -1 on error
|
141
|
+
*/
|
142
|
+
int ECDSA_do_verify(const unsigned char *dgst, int dgst_len,
|
143
|
+
const ECDSA_SIG *sig, EC_KEY* eckey);
|
144
|
+
|
145
|
+
const ECDSA_METHOD *ECDSA_OpenSSL(void);
|
146
|
+
|
147
|
+
/** Sets the default ECDSA method
|
148
|
+
* \param meth new default ECDSA_METHOD
|
149
|
+
*/
|
150
|
+
void ECDSA_set_default_method(const ECDSA_METHOD *meth);
|
151
|
+
|
152
|
+
/** Returns the default ECDSA method
|
153
|
+
* \return pointer to ECDSA_METHOD structure containing the default method
|
154
|
+
*/
|
155
|
+
const ECDSA_METHOD *ECDSA_get_default_method(void);
|
156
|
+
|
157
|
+
/** Sets method to be used for the ECDSA operations
|
158
|
+
* \param eckey EC_KEY object
|
159
|
+
* \param meth new method
|
160
|
+
* \return 1 on success and 0 otherwise
|
161
|
+
*/
|
162
|
+
int ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth);
|
163
|
+
|
164
|
+
/** Returns the maximum length of the DER encoded signature
|
165
|
+
* \param eckey EC_KEY object
|
166
|
+
* \return numbers of bytes required for the DER encoded signature
|
167
|
+
*/
|
168
|
+
int ECDSA_size(const EC_KEY *eckey);
|
169
|
+
|
170
|
+
/** Precompute parts of the signing operation
|
171
|
+
* \param eckey EC_KEY object containing a private EC key
|
172
|
+
* \param ctx BN_CTX object (optional)
|
173
|
+
* \param kinv BIGNUM pointer for the inverse of k
|
174
|
+
* \param rp BIGNUM pointer for x coordinate of k * generator
|
175
|
+
* \return 1 on success and 0 otherwise
|
176
|
+
*/
|
177
|
+
int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv,
|
178
|
+
BIGNUM **rp);
|
179
|
+
|
180
|
+
/** Computes ECDSA signature of a given hash value using the supplied
|
181
|
+
* private key (note: sig must point to ECDSA_size(eckey) bytes of memory).
|
182
|
+
* \param type this parameter is ignored
|
183
|
+
* \param dgst pointer to the hash value to sign
|
184
|
+
* \param dgstlen length of the hash value
|
185
|
+
* \param sig memory for the DER encoded created signature
|
186
|
+
* \param siglen pointer to the length of the returned signature
|
187
|
+
* \param eckey EC_KEY object containing a private EC key
|
188
|
+
* \return 1 on success and 0 otherwise
|
189
|
+
*/
|
190
|
+
int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen,
|
191
|
+
unsigned char *sig, unsigned int *siglen, EC_KEY *eckey);
|
192
|
+
|
193
|
+
|
194
|
+
/** Computes ECDSA signature of a given hash value using the supplied
|
195
|
+
* private key (note: sig must point to ECDSA_size(eckey) bytes of memory).
|
196
|
+
* \param type this parameter is ignored
|
197
|
+
* \param dgst pointer to the hash value to sign
|
198
|
+
* \param dgstlen length of the hash value
|
199
|
+
* \param sig buffer to hold the DER encoded signature
|
200
|
+
* \param siglen pointer to the length of the returned signature
|
201
|
+
* \param kinv BIGNUM with a pre-computed inverse k (optional)
|
202
|
+
* \param rp BIGNUM with a pre-computed rp value (optioanl),
|
203
|
+
* see ECDSA_sign_setup
|
204
|
+
* \param eckey EC_KEY object containing a private EC key
|
205
|
+
* \return 1 on success and 0 otherwise
|
206
|
+
*/
|
207
|
+
int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen,
|
208
|
+
unsigned char *sig, unsigned int *siglen, const BIGNUM *kinv,
|
209
|
+
const BIGNUM *rp, EC_KEY *eckey);
|
210
|
+
|
211
|
+
/** Verifies that the given signature is valid ECDSA signature
|
212
|
+
* of the supplied hash value using the specified public key.
|
213
|
+
* \param type this parameter is ignored
|
214
|
+
* \param dgst pointer to the hash value
|
215
|
+
* \param dgstlen length of the hash value
|
216
|
+
* \param sig pointer to the DER encoded signature
|
217
|
+
* \param siglen length of the DER encoded signature
|
218
|
+
* \param eckey EC_KEY object containing a public EC key
|
219
|
+
* \return 1 if the signature is valid, 0 if the signature is invalid
|
220
|
+
* and -1 on error
|
221
|
+
*/
|
222
|
+
int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen,
|
223
|
+
const unsigned char *sig, int siglen, EC_KEY *eckey);
|
224
|
+
|
225
|
+
/* the standard ex_data functions */
|
226
|
+
int ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new
|
227
|
+
*new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
|
228
|
+
int ECDSA_set_ex_data(EC_KEY *d, int idx, void *arg);
|
229
|
+
void *ECDSA_get_ex_data(EC_KEY *d, int idx);
|
230
|
+
|
231
|
+
|
232
|
+
/* BEGIN ERROR CODES */
|
233
|
+
/* The following lines are auto generated by the script mkerr.pl. Any changes
|
234
|
+
* made after this point may be overwritten when the script is next run.
|
235
|
+
*/
|
236
|
+
void ERR_load_ECDSA_strings(void);
|
237
|
+
|
238
|
+
/* Error codes for the ECDSA functions. */
|
239
|
+
|
240
|
+
/* Function codes. */
|
241
|
+
#define ECDSA_F_ECDSA_CHECK 104
|
242
|
+
#define ECDSA_F_ECDSA_DATA_NEW_METHOD 100
|
243
|
+
#define ECDSA_F_ECDSA_DO_SIGN 101
|
244
|
+
#define ECDSA_F_ECDSA_DO_VERIFY 102
|
245
|
+
#define ECDSA_F_ECDSA_SIGN_SETUP 103
|
246
|
+
|
247
|
+
/* Reason codes. */
|
248
|
+
#define ECDSA_R_BAD_SIGNATURE 100
|
249
|
+
#define ECDSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 101
|
250
|
+
#define ECDSA_R_ERR_EC_LIB 102
|
251
|
+
#define ECDSA_R_MISSING_PARAMETERS 103
|
252
|
+
#define ECDSA_R_NEED_NEW_SETUP_VALUES 106
|
253
|
+
#define ECDSA_R_NON_FIPS_METHOD 107
|
254
|
+
#define ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED 104
|
255
|
+
#define ECDSA_R_SIGNATURE_MALLOC_FAILED 105
|
256
|
+
|
257
|
+
#ifdef __cplusplus
|
258
|
+
}
|
259
|
+
#endif
|
260
|
+
#endif
|