motion-openssl 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +53 -0
- data/lib/OpenSSL/aes.h +149 -0
- data/lib/OpenSSL/asn1.h +1419 -0
- data/lib/OpenSSL/asn1_mac.h +579 -0
- data/lib/OpenSSL/asn1t.h +973 -0
- data/lib/OpenSSL/bio.h +879 -0
- data/lib/OpenSSL/blowfish.h +130 -0
- data/lib/OpenSSL/bn.h +939 -0
- data/lib/OpenSSL/buffer.h +125 -0
- data/lib/OpenSSL/camellia.h +132 -0
- data/lib/OpenSSL/cast.h +107 -0
- data/lib/OpenSSL/cmac.h +82 -0
- data/lib/OpenSSL/cms.h +555 -0
- data/lib/OpenSSL/comp.h +79 -0
- data/lib/OpenSSL/conf.h +267 -0
- data/lib/OpenSSL/conf_api.h +89 -0
- data/lib/OpenSSL/crypto.h +661 -0
- data/lib/OpenSSL/des.h +257 -0
- data/lib/OpenSSL/des_old.h +497 -0
- data/lib/OpenSSL/dh.h +392 -0
- data/lib/OpenSSL/dsa.h +332 -0
- data/lib/OpenSSL/dso.h +451 -0
- data/lib/OpenSSL/dtls1.h +272 -0
- data/lib/OpenSSL/e_os2.h +328 -0
- data/lib/OpenSSL/ebcdic.h +26 -0
- data/lib/OpenSSL/ec.h +1282 -0
- data/lib/OpenSSL/ecdh.h +134 -0
- data/lib/OpenSSL/ecdsa.h +335 -0
- data/lib/OpenSSL/engine.h +960 -0
- data/lib/OpenSSL/err.h +389 -0
- data/lib/OpenSSL/evp.h +1534 -0
- data/lib/OpenSSL/hmac.h +109 -0
- data/lib/OpenSSL/idea.h +105 -0
- data/lib/OpenSSL/krb5_asn.h +240 -0
- data/lib/OpenSSL/kssl.h +197 -0
- data/lib/OpenSSL/lhash.h +240 -0
- data/lib/OpenSSL/libcrypto-tvOS.a +0 -0
- data/lib/OpenSSL/libcrypto.a +0 -0
- data/lib/OpenSSL/libssl-tvOS.a +0 -0
- data/lib/OpenSSL/libssl.a +0 -0
- data/lib/OpenSSL/md4.h +119 -0
- data/lib/OpenSSL/md5.h +119 -0
- data/lib/OpenSSL/mdc2.h +94 -0
- data/lib/OpenSSL/modes.h +163 -0
- data/lib/OpenSSL/obj_mac.h +4194 -0
- data/lib/OpenSSL/objects.h +1143 -0
- data/lib/OpenSSL/ocsp.h +637 -0
- data/lib/OpenSSL/opensslconf.h +262 -0
- data/lib/OpenSSL/opensslv.h +97 -0
- data/lib/OpenSSL/ossl_typ.h +211 -0
- data/lib/OpenSSL/pem.h +615 -0
- data/lib/OpenSSL/pem2.h +70 -0
- data/lib/OpenSSL/pkcs12.h +342 -0
- data/lib/OpenSSL/pkcs7.h +481 -0
- data/lib/OpenSSL/pqueue.h +99 -0
- data/lib/OpenSSL/rand.h +150 -0
- data/lib/OpenSSL/rc2.h +103 -0
- data/lib/OpenSSL/rc4.h +88 -0
- data/lib/OpenSSL/ripemd.h +105 -0
- data/lib/OpenSSL/rsa.h +664 -0
- data/lib/OpenSSL/safestack.h +2672 -0
- data/lib/OpenSSL/seed.h +149 -0
- data/lib/OpenSSL/sha.h +214 -0
- data/lib/OpenSSL/srp.h +169 -0
- data/lib/OpenSSL/srtp.h +147 -0
- data/lib/OpenSSL/ssl.h +3168 -0
- data/lib/OpenSSL/ssl2.h +265 -0
- data/lib/OpenSSL/ssl23.h +84 -0
- data/lib/OpenSSL/ssl3.h +774 -0
- data/lib/OpenSSL/stack.h +107 -0
- data/lib/OpenSSL/symhacks.h +516 -0
- data/lib/OpenSSL/tls1.h +810 -0
- data/lib/OpenSSL/ts.h +862 -0
- data/lib/OpenSSL/txt_db.h +112 -0
- data/lib/OpenSSL/ui.h +415 -0
- data/lib/OpenSSL/ui_compat.h +88 -0
- data/lib/OpenSSL/whrlpool.h +41 -0
- data/lib/OpenSSL/x509.h +1327 -0
- data/lib/OpenSSL/x509_vfy.h +647 -0
- data/lib/OpenSSL/x509v3.h +1055 -0
- data/lib/motion-openssl.rb +8 -0
- data/lib/motion-openssl/hooks.rb +8 -0
- data/lib/motion-openssl/hooks/openssl.rb +20 -0
- data/lib/motion-openssl/version.rb +5 -0
- data/motion/openssl.rb +1 -0
- data/motion/openssl/random.rb +18 -0
- metadata +229 -0
data/lib/OpenSSL/ecdh.h
ADDED
@@ -0,0 +1,134 @@
|
|
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
|
+
# define EC_FLAG_COFACTOR_ECDH 0x1000
|
89
|
+
|
90
|
+
const ECDH_METHOD *ECDH_OpenSSL(void);
|
91
|
+
|
92
|
+
void ECDH_set_default_method(const ECDH_METHOD *);
|
93
|
+
const ECDH_METHOD *ECDH_get_default_method(void);
|
94
|
+
int ECDH_set_method(EC_KEY *, const ECDH_METHOD *);
|
95
|
+
|
96
|
+
int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
|
97
|
+
EC_KEY *ecdh, void *(*KDF) (const void *in, size_t inlen,
|
98
|
+
void *out, size_t *outlen));
|
99
|
+
|
100
|
+
int ECDH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new
|
101
|
+
*new_func, CRYPTO_EX_dup *dup_func,
|
102
|
+
CRYPTO_EX_free *free_func);
|
103
|
+
int ECDH_set_ex_data(EC_KEY *d, int idx, void *arg);
|
104
|
+
void *ECDH_get_ex_data(EC_KEY *d, int idx);
|
105
|
+
|
106
|
+
int ECDH_KDF_X9_62(unsigned char *out, size_t outlen,
|
107
|
+
const unsigned char *Z, size_t Zlen,
|
108
|
+
const unsigned char *sinfo, size_t sinfolen,
|
109
|
+
const EVP_MD *md);
|
110
|
+
|
111
|
+
/* BEGIN ERROR CODES */
|
112
|
+
/*
|
113
|
+
* The following lines are auto generated by the script mkerr.pl. Any changes
|
114
|
+
* made after this point may be overwritten when the script is next run.
|
115
|
+
*/
|
116
|
+
void ERR_load_ECDH_strings(void);
|
117
|
+
|
118
|
+
/* Error codes for the ECDH functions. */
|
119
|
+
|
120
|
+
/* Function codes. */
|
121
|
+
# define ECDH_F_ECDH_CHECK 102
|
122
|
+
# define ECDH_F_ECDH_COMPUTE_KEY 100
|
123
|
+
# define ECDH_F_ECDH_DATA_NEW_METHOD 101
|
124
|
+
|
125
|
+
/* Reason codes. */
|
126
|
+
# define ECDH_R_KDF_FAILED 102
|
127
|
+
# define ECDH_R_NON_FIPS_METHOD 103
|
128
|
+
# define ECDH_R_NO_PRIVATE_VALUE 100
|
129
|
+
# define ECDH_R_POINT_ARITHMETIC_FAILURE 101
|
130
|
+
|
131
|
+
#ifdef __cplusplus
|
132
|
+
}
|
133
|
+
#endif
|
134
|
+
#endif
|
data/lib/OpenSSL/ecdsa.h
ADDED
@@ -0,0 +1,335 @@
|
|
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
|
+
BIGNUM *r;
|
80
|
+
BIGNUM *s;
|
81
|
+
} ECDSA_SIG;
|
82
|
+
|
83
|
+
/** Allocates and initialize a ECDSA_SIG structure
|
84
|
+
* \return pointer to a ECDSA_SIG structure or NULL if an error occurred
|
85
|
+
*/
|
86
|
+
ECDSA_SIG *ECDSA_SIG_new(void);
|
87
|
+
|
88
|
+
/** frees a ECDSA_SIG structure
|
89
|
+
* \param sig pointer to the ECDSA_SIG structure
|
90
|
+
*/
|
91
|
+
void ECDSA_SIG_free(ECDSA_SIG *sig);
|
92
|
+
|
93
|
+
/** DER encode content of ECDSA_SIG object (note: this function modifies *pp
|
94
|
+
* (*pp += length of the DER encoded signature)).
|
95
|
+
* \param sig pointer to the ECDSA_SIG object
|
96
|
+
* \param pp pointer to a unsigned char pointer for the output or NULL
|
97
|
+
* \return the length of the DER encoded ECDSA_SIG object or 0
|
98
|
+
*/
|
99
|
+
int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp);
|
100
|
+
|
101
|
+
/** Decodes a DER encoded ECDSA signature (note: this function changes *pp
|
102
|
+
* (*pp += len)).
|
103
|
+
* \param sig pointer to ECDSA_SIG pointer (may be NULL)
|
104
|
+
* \param pp memory buffer with the DER encoded signature
|
105
|
+
* \param len length of the buffer
|
106
|
+
* \return pointer to the decoded ECDSA_SIG structure (or NULL)
|
107
|
+
*/
|
108
|
+
ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len);
|
109
|
+
|
110
|
+
/** Computes the ECDSA signature of the given hash value using
|
111
|
+
* the supplied private key and returns the created signature.
|
112
|
+
* \param dgst pointer to the hash value
|
113
|
+
* \param dgst_len length of the hash value
|
114
|
+
* \param eckey EC_KEY object containing a private EC key
|
115
|
+
* \return pointer to a ECDSA_SIG structure or NULL if an error occurred
|
116
|
+
*/
|
117
|
+
ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len,
|
118
|
+
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,
|
132
|
+
EC_KEY *eckey);
|
133
|
+
|
134
|
+
/** Verifies that the supplied signature is a valid ECDSA
|
135
|
+
* signature of the supplied hash value using the supplied public key.
|
136
|
+
* \param dgst pointer to the hash value
|
137
|
+
* \param dgst_len length of the hash value
|
138
|
+
* \param sig ECDSA_SIG structure
|
139
|
+
* \param eckey EC_KEY object containing a public EC key
|
140
|
+
* \return 1 if the signature is valid, 0 if the signature is invalid
|
141
|
+
* and -1 on error
|
142
|
+
*/
|
143
|
+
int ECDSA_do_verify(const unsigned char *dgst, int dgst_len,
|
144
|
+
const ECDSA_SIG *sig, EC_KEY *eckey);
|
145
|
+
|
146
|
+
const ECDSA_METHOD *ECDSA_OpenSSL(void);
|
147
|
+
|
148
|
+
/** Sets the default ECDSA method
|
149
|
+
* \param meth new default ECDSA_METHOD
|
150
|
+
*/
|
151
|
+
void ECDSA_set_default_method(const ECDSA_METHOD *meth);
|
152
|
+
|
153
|
+
/** Returns the default ECDSA method
|
154
|
+
* \return pointer to ECDSA_METHOD structure containing the default method
|
155
|
+
*/
|
156
|
+
const ECDSA_METHOD *ECDSA_get_default_method(void);
|
157
|
+
|
158
|
+
/** Sets method to be used for the ECDSA operations
|
159
|
+
* \param eckey EC_KEY object
|
160
|
+
* \param meth new method
|
161
|
+
* \return 1 on success and 0 otherwise
|
162
|
+
*/
|
163
|
+
int ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth);
|
164
|
+
|
165
|
+
/** Returns the maximum length of the DER encoded signature
|
166
|
+
* \param eckey EC_KEY object
|
167
|
+
* \return numbers of bytes required for the DER encoded signature
|
168
|
+
*/
|
169
|
+
int ECDSA_size(const EC_KEY *eckey);
|
170
|
+
|
171
|
+
/** Precompute parts of the signing operation
|
172
|
+
* \param eckey EC_KEY object containing a private EC key
|
173
|
+
* \param ctx BN_CTX object (optional)
|
174
|
+
* \param kinv BIGNUM pointer for the inverse of k
|
175
|
+
* \param rp BIGNUM pointer for x coordinate of k * generator
|
176
|
+
* \return 1 on success and 0 otherwise
|
177
|
+
*/
|
178
|
+
int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, 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
|
+
/** Computes ECDSA signature of a given hash value using the supplied
|
194
|
+
* private key (note: sig must point to ECDSA_size(eckey) bytes of memory).
|
195
|
+
* \param type this parameter is ignored
|
196
|
+
* \param dgst pointer to the hash value to sign
|
197
|
+
* \param dgstlen length of the hash value
|
198
|
+
* \param sig buffer to hold the DER encoded signature
|
199
|
+
* \param siglen pointer to the length of the returned signature
|
200
|
+
* \param kinv BIGNUM with a pre-computed inverse k (optional)
|
201
|
+
* \param rp BIGNUM with a pre-computed rp value (optioanl),
|
202
|
+
* see ECDSA_sign_setup
|
203
|
+
* \param eckey EC_KEY object containing a private EC key
|
204
|
+
* \return 1 on success and 0 otherwise
|
205
|
+
*/
|
206
|
+
int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen,
|
207
|
+
unsigned char *sig, unsigned int *siglen,
|
208
|
+
const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey);
|
209
|
+
|
210
|
+
/** Verifies that the given signature is valid ECDSA signature
|
211
|
+
* of the supplied hash value using the specified public key.
|
212
|
+
* \param type this parameter is ignored
|
213
|
+
* \param dgst pointer to the hash value
|
214
|
+
* \param dgstlen length of the hash value
|
215
|
+
* \param sig pointer to the DER encoded signature
|
216
|
+
* \param siglen length of the DER encoded signature
|
217
|
+
* \param eckey EC_KEY object containing a public EC key
|
218
|
+
* \return 1 if the signature is valid, 0 if the signature is invalid
|
219
|
+
* and -1 on error
|
220
|
+
*/
|
221
|
+
int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen,
|
222
|
+
const unsigned char *sig, int siglen, EC_KEY *eckey);
|
223
|
+
|
224
|
+
/* the standard ex_data functions */
|
225
|
+
int ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new
|
226
|
+
*new_func, CRYPTO_EX_dup *dup_func,
|
227
|
+
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
|
+
/** Allocates and initialize a ECDSA_METHOD structure
|
232
|
+
* \param ecdsa_method pointer to ECDSA_METHOD to copy. (May be NULL)
|
233
|
+
* \return pointer to a ECDSA_METHOD structure or NULL if an error occurred
|
234
|
+
*/
|
235
|
+
|
236
|
+
ECDSA_METHOD *ECDSA_METHOD_new(const ECDSA_METHOD *ecdsa_method);
|
237
|
+
|
238
|
+
/** frees a ECDSA_METHOD structure
|
239
|
+
* \param ecdsa_method pointer to the ECDSA_METHOD structure
|
240
|
+
*/
|
241
|
+
void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method);
|
242
|
+
|
243
|
+
/** Sets application specific data in the ECDSA_METHOD
|
244
|
+
* \param ecdsa_method pointer to existing ECDSA_METHOD
|
245
|
+
* \param app application specific data to set
|
246
|
+
*/
|
247
|
+
|
248
|
+
void ECDSA_METHOD_set_app_data(ECDSA_METHOD *ecdsa_method, void *app);
|
249
|
+
|
250
|
+
/** Returns application specific data from a ECDSA_METHOD structure
|
251
|
+
* \param ecdsa_method pointer to ECDSA_METHOD structure
|
252
|
+
* \return pointer to application specific data.
|
253
|
+
*/
|
254
|
+
|
255
|
+
void *ECDSA_METHOD_get_app_data(ECDSA_METHOD *ecdsa_method);
|
256
|
+
|
257
|
+
/** Set the ECDSA_do_sign function in the ECDSA_METHOD
|
258
|
+
* \param ecdsa_method pointer to existing ECDSA_METHOD
|
259
|
+
* \param ecdsa_do_sign a funtion of type ECDSA_do_sign
|
260
|
+
*/
|
261
|
+
|
262
|
+
void ECDSA_METHOD_set_sign(ECDSA_METHOD *ecdsa_method,
|
263
|
+
ECDSA_SIG *(*ecdsa_do_sign) (const unsigned char
|
264
|
+
*dgst, int dgst_len,
|
265
|
+
const BIGNUM *inv,
|
266
|
+
const BIGNUM *rp,
|
267
|
+
EC_KEY *eckey));
|
268
|
+
|
269
|
+
/** Set the ECDSA_sign_setup function in the ECDSA_METHOD
|
270
|
+
* \param ecdsa_method pointer to existing ECDSA_METHOD
|
271
|
+
* \param ecdsa_sign_setup a funtion of type ECDSA_sign_setup
|
272
|
+
*/
|
273
|
+
|
274
|
+
void ECDSA_METHOD_set_sign_setup(ECDSA_METHOD *ecdsa_method,
|
275
|
+
int (*ecdsa_sign_setup) (EC_KEY *eckey,
|
276
|
+
BN_CTX *ctx,
|
277
|
+
BIGNUM **kinv,
|
278
|
+
BIGNUM **r));
|
279
|
+
|
280
|
+
/** Set the ECDSA_do_verify function in the ECDSA_METHOD
|
281
|
+
* \param ecdsa_method pointer to existing ECDSA_METHOD
|
282
|
+
* \param ecdsa_do_verify a funtion of type ECDSA_do_verify
|
283
|
+
*/
|
284
|
+
|
285
|
+
void ECDSA_METHOD_set_verify(ECDSA_METHOD *ecdsa_method,
|
286
|
+
int (*ecdsa_do_verify) (const unsigned char
|
287
|
+
*dgst, int dgst_len,
|
288
|
+
const ECDSA_SIG *sig,
|
289
|
+
EC_KEY *eckey));
|
290
|
+
|
291
|
+
void ECDSA_METHOD_set_flags(ECDSA_METHOD *ecdsa_method, int flags);
|
292
|
+
|
293
|
+
/** Set the flags field in the ECDSA_METHOD
|
294
|
+
* \param ecdsa_method pointer to existing ECDSA_METHOD
|
295
|
+
* \param flags flags value to set
|
296
|
+
*/
|
297
|
+
|
298
|
+
void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name);
|
299
|
+
|
300
|
+
/** Set the name field in the ECDSA_METHOD
|
301
|
+
* \param ecdsa_method pointer to existing ECDSA_METHOD
|
302
|
+
* \param name name to set
|
303
|
+
*/
|
304
|
+
|
305
|
+
/* BEGIN ERROR CODES */
|
306
|
+
/*
|
307
|
+
* The following lines are auto generated by the script mkerr.pl. Any changes
|
308
|
+
* made after this point may be overwritten when the script is next run.
|
309
|
+
*/
|
310
|
+
void ERR_load_ECDSA_strings(void);
|
311
|
+
|
312
|
+
/* Error codes for the ECDSA functions. */
|
313
|
+
|
314
|
+
/* Function codes. */
|
315
|
+
# define ECDSA_F_ECDSA_CHECK 104
|
316
|
+
# define ECDSA_F_ECDSA_DATA_NEW_METHOD 100
|
317
|
+
# define ECDSA_F_ECDSA_DO_SIGN 101
|
318
|
+
# define ECDSA_F_ECDSA_DO_VERIFY 102
|
319
|
+
# define ECDSA_F_ECDSA_METHOD_NEW 105
|
320
|
+
# define ECDSA_F_ECDSA_SIGN_SETUP 103
|
321
|
+
|
322
|
+
/* Reason codes. */
|
323
|
+
# define ECDSA_R_BAD_SIGNATURE 100
|
324
|
+
# define ECDSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 101
|
325
|
+
# define ECDSA_R_ERR_EC_LIB 102
|
326
|
+
# define ECDSA_R_MISSING_PARAMETERS 103
|
327
|
+
# define ECDSA_R_NEED_NEW_SETUP_VALUES 106
|
328
|
+
# define ECDSA_R_NON_FIPS_METHOD 107
|
329
|
+
# define ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED 104
|
330
|
+
# define ECDSA_R_SIGNATURE_MALLOC_FAILED 105
|
331
|
+
|
332
|
+
#ifdef __cplusplus
|
333
|
+
}
|
334
|
+
#endif
|
335
|
+
#endif
|