openssl_rsa_pss_verify 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. data/.gitignore +5 -0
  2. data/.rspec +2 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +35 -0
  7. data/README +1 -0
  8. data/Rakefile +4 -0
  9. data/ext/openssl_rsa_pss_verify/extconf.rb +15 -0
  10. data/ext/openssl_rsa_pss_verify/openssl_rsa_pss_verify_ext.c +56 -0
  11. data/lib/openssl_rsa_pss_verify/version.rb +3 -0
  12. data/lib/openssl_rsa_pss_verify.rb +2 -0
  13. data/openssl_rsa_pss_verify.gemspec +26 -0
  14. data/tasks/compile.rake +12 -0
  15. data/tasks/rspec.rake +12 -0
  16. data/vendor/openssl/include/openssl/aes.h +147 -0
  17. data/vendor/openssl/include/openssl/asn1.h +1404 -0
  18. data/vendor/openssl/include/openssl/asn1_mac.h +578 -0
  19. data/vendor/openssl/include/openssl/asn1t.h +960 -0
  20. data/vendor/openssl/include/openssl/bio.h +847 -0
  21. data/vendor/openssl/include/openssl/blowfish.h +129 -0
  22. data/vendor/openssl/include/openssl/bn.h +891 -0
  23. data/vendor/openssl/include/openssl/buffer.h +119 -0
  24. data/vendor/openssl/include/openssl/camellia.h +130 -0
  25. data/vendor/openssl/include/openssl/cast.h +107 -0
  26. data/vendor/openssl/include/openssl/cmac.h +82 -0
  27. data/vendor/openssl/include/openssl/cms.h +501 -0
  28. data/vendor/openssl/include/openssl/comp.h +80 -0
  29. data/vendor/openssl/include/openssl/conf.h +263 -0
  30. data/vendor/openssl/include/openssl/conf_api.h +89 -0
  31. data/vendor/openssl/include/openssl/crypto.h +611 -0
  32. data/vendor/openssl/include/openssl/des.h +248 -0
  33. data/vendor/openssl/include/openssl/des_old.h +446 -0
  34. data/vendor/openssl/include/openssl/dh.h +280 -0
  35. data/vendor/openssl/include/openssl/dsa.h +327 -0
  36. data/vendor/openssl/include/openssl/dso.h +409 -0
  37. data/vendor/openssl/include/openssl/dtls1.h +287 -0
  38. data/vendor/openssl/include/openssl/e_os2.h +315 -0
  39. data/vendor/openssl/include/openssl/ebcdic.h +19 -0
  40. data/vendor/openssl/include/openssl/ec.h +1167 -0
  41. data/vendor/openssl/include/openssl/ecdh.h +125 -0
  42. data/vendor/openssl/include/openssl/ecdsa.h +260 -0
  43. data/vendor/openssl/include/openssl/engine.h +842 -0
  44. data/vendor/openssl/include/openssl/err.h +386 -0
  45. data/vendor/openssl/include/openssl/evp.h +1409 -0
  46. data/vendor/openssl/include/openssl/hmac.h +110 -0
  47. data/vendor/openssl/include/openssl/idea.h +103 -0
  48. data/vendor/openssl/include/openssl/krb5_asn.h +256 -0
  49. data/vendor/openssl/include/openssl/kssl.h +183 -0
  50. data/vendor/openssl/include/openssl/lhash.h +241 -0
  51. data/vendor/openssl/include/openssl/md4.h +120 -0
  52. data/vendor/openssl/include/openssl/md5.h +120 -0
  53. data/vendor/openssl/include/openssl/mdc2.h +98 -0
  54. data/vendor/openssl/include/openssl/modes.h +135 -0
  55. data/vendor/openssl/include/openssl/obj_mac.h +4032 -0
  56. data/vendor/openssl/include/openssl/objects.h +1138 -0
  57. data/vendor/openssl/include/openssl/ocsp.h +623 -0
  58. data/vendor/openssl/include/openssl/opensslconf.h +234 -0
  59. data/vendor/openssl/include/openssl/opensslv.h +89 -0
  60. data/vendor/openssl/include/openssl/ossl_typ.h +202 -0
  61. data/vendor/openssl/include/openssl/pem.h +641 -0
  62. data/vendor/openssl/include/openssl/pem2.h +70 -0
  63. data/vendor/openssl/include/openssl/pkcs12.h +331 -0
  64. data/vendor/openssl/include/openssl/pkcs7.h +499 -0
  65. data/vendor/openssl/include/openssl/pqueue.h +94 -0
  66. data/vendor/openssl/include/openssl/rand.h +149 -0
  67. data/vendor/openssl/include/openssl/rc2.h +103 -0
  68. data/vendor/openssl/include/openssl/rc4.h +90 -0
  69. data/vendor/openssl/include/openssl/ripemd.h +107 -0
  70. data/vendor/openssl/include/openssl/rsa.h +582 -0
  71. data/vendor/openssl/include/openssl/safestack.h +2663 -0
  72. data/vendor/openssl/include/openssl/seed.h +139 -0
  73. data/vendor/openssl/include/openssl/sha.h +214 -0
  74. data/vendor/openssl/include/openssl/srp.h +172 -0
  75. data/vendor/openssl/include/openssl/srtp.h +145 -0
  76. data/vendor/openssl/include/openssl/ssl.h +2579 -0
  77. data/vendor/openssl/include/openssl/ssl2.h +272 -0
  78. data/vendor/openssl/include/openssl/ssl23.h +83 -0
  79. data/vendor/openssl/include/openssl/ssl3.h +684 -0
  80. data/vendor/openssl/include/openssl/stack.h +108 -0
  81. data/vendor/openssl/include/openssl/symhacks.h +475 -0
  82. data/vendor/openssl/include/openssl/tls1.h +735 -0
  83. data/vendor/openssl/include/openssl/ts.h +858 -0
  84. data/vendor/openssl/include/openssl/txt_db.h +112 -0
  85. data/vendor/openssl/include/openssl/ui.h +383 -0
  86. data/vendor/openssl/include/openssl/ui_compat.h +83 -0
  87. data/vendor/openssl/include/openssl/whrlpool.h +41 -0
  88. data/vendor/openssl/include/openssl/x509.h +1297 -0
  89. data/vendor/openssl/include/openssl/x509_vfy.h +567 -0
  90. data/vendor/openssl/include/openssl/x509v3.h +1007 -0
  91. data/vendor/openssl/lib/engines/lib4758cca.so +0 -0
  92. data/vendor/openssl/lib/engines/libaep.so +0 -0
  93. data/vendor/openssl/lib/engines/libatalla.so +0 -0
  94. data/vendor/openssl/lib/engines/libcapi.so +0 -0
  95. data/vendor/openssl/lib/engines/libchil.so +0 -0
  96. data/vendor/openssl/lib/engines/libcswift.so +0 -0
  97. data/vendor/openssl/lib/engines/libgmp.so +0 -0
  98. data/vendor/openssl/lib/engines/libgost.so +0 -0
  99. data/vendor/openssl/lib/engines/libnuron.so +0 -0
  100. data/vendor/openssl/lib/engines/libpadlock.so +0 -0
  101. data/vendor/openssl/lib/engines/libsureware.so +0 -0
  102. data/vendor/openssl/lib/engines/libubsec.so +0 -0
  103. data/vendor/openssl/lib/libcrypto.a +0 -0
  104. data/vendor/openssl/lib/libcrypto.so +0 -0
  105. data/vendor/openssl/lib/libcrypto.so.1.0.0 +0 -0
  106. data/vendor/openssl/lib/libssl.a +0 -0
  107. data/vendor/openssl/lib/libssl.so +0 -0
  108. data/vendor/openssl/lib/libssl.so.1.0.0 +0 -0
  109. data/vendor/openssl/lib/pkgconfig/libcrypto.pc +12 -0
  110. data/vendor/openssl/lib/pkgconfig/libssl.pc +12 -0
  111. data/vendor/openssl/lib/pkgconfig/openssl.pc +12 -0
  112. 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