LTKCPP-- LLRP Toolkit C Plus Plus Library
|
00001 /* crypto/ecdsa/ecdsa.h */ 00006 /* ==================================================================== 00007 * Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved. 00008 * 00009 * Redistribution and use in source and binary forms, with or without 00010 * modification, are permitted provided that the following conditions 00011 * are met: 00012 * 00013 * 1. Redistributions of source code must retain the above copyright 00014 * notice, this list of conditions and the following disclaimer. 00015 * 00016 * 2. Redistributions in binary form must reproduce the above copyright 00017 * notice, this list of conditions and the following disclaimer in 00018 * the documentation and/or other materials provided with the 00019 * distribution. 00020 * 00021 * 3. All advertising materials mentioning features or use of this 00022 * software must display the following acknowledgment: 00023 * "This product includes software developed by the OpenSSL Project 00024 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 00025 * 00026 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 00027 * endorse or promote products derived from this software without 00028 * prior written permission. For written permission, please contact 00029 * licensing@OpenSSL.org. 00030 * 00031 * 5. Products derived from this software may not be called "OpenSSL" 00032 * nor may "OpenSSL" appear in their names without prior written 00033 * permission of the OpenSSL Project. 00034 * 00035 * 6. Redistributions of any form whatsoever must retain the following 00036 * acknowledgment: 00037 * "This product includes software developed by the OpenSSL Project 00038 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" 00039 * 00040 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 00041 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00042 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00043 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 00044 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00045 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 00046 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00047 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 00048 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 00049 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00050 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 00051 * OF THE POSSIBILITY OF SUCH DAMAGE. 00052 * ==================================================================== 00053 * 00054 * This product includes cryptographic software written by Eric Young 00055 * (eay@cryptsoft.com). This product includes software written by Tim 00056 * Hudson (tjh@cryptsoft.com). 00057 * 00058 */ 00059 #ifndef HEADER_ECDSA_H 00060 # define HEADER_ECDSA_H 00061 00062 # include <openssl/opensslconf.h> 00063 00064 # ifdef OPENSSL_NO_ECDSA 00065 # error ECDSA is disabled. 00066 # endif 00067 00068 # include <openssl/ec.h> 00069 # include <openssl/ossl_typ.h> 00070 # ifndef OPENSSL_NO_DEPRECATED 00071 # include <openssl/bn.h> 00072 # endif 00073 00074 #ifdef __cplusplus 00075 extern "C" { 00076 #endif 00077 00078 typedef struct ECDSA_SIG_st { 00079 BIGNUM *r; 00080 BIGNUM *s; 00081 } ECDSA_SIG; 00082 00086 ECDSA_SIG *ECDSA_SIG_new(void); 00087 00091 void ECDSA_SIG_free(ECDSA_SIG *sig); 00092 00099 int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp); 00100 00108 ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len); 00109 00117 ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len, 00118 EC_KEY *eckey); 00119 00130 ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen, 00131 const BIGNUM *kinv, const BIGNUM *rp, 00132 EC_KEY *eckey); 00133 00143 int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, 00144 const ECDSA_SIG *sig, EC_KEY *eckey); 00145 00146 const ECDSA_METHOD *ECDSA_OpenSSL(void); 00147 00151 void ECDSA_set_default_method(const ECDSA_METHOD *meth); 00152 00156 const ECDSA_METHOD *ECDSA_get_default_method(void); 00157 00163 int ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth); 00164 00169 int ECDSA_size(const EC_KEY *eckey); 00170 00178 int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM **rp); 00179 00190 int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen, 00191 unsigned char *sig, unsigned int *siglen, EC_KEY *eckey); 00192 00206 int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen, 00207 unsigned char *sig, unsigned int *siglen, 00208 const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey); 00209 00221 int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen, 00222 const unsigned char *sig, int siglen, EC_KEY *eckey); 00223 00224 /* the standard ex_data functions */ 00225 int ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new 00226 *new_func, CRYPTO_EX_dup *dup_func, 00227 CRYPTO_EX_free *free_func); 00228 int ECDSA_set_ex_data(EC_KEY *d, int idx, void *arg); 00229 void *ECDSA_get_ex_data(EC_KEY *d, int idx); 00230 00236 ECDSA_METHOD *ECDSA_METHOD_new(ECDSA_METHOD *ecdsa_method); 00237 00241 void ECDSA_METHOD_free(ECDSA_METHOD *ecdsa_method); 00242 00248 void ECDSA_METHOD_set_app_data(ECDSA_METHOD *ecdsa_method, void *app); 00249 00255 void *ECDSA_METHOD_get_app_data(ECDSA_METHOD *ecdsa_method); 00256 00262 void ECDSA_METHOD_set_sign(ECDSA_METHOD *ecdsa_method, 00263 ECDSA_SIG *(*ecdsa_do_sign) (const unsigned char 00264 *dgst, int dgst_len, 00265 const BIGNUM *inv, 00266 const BIGNUM *rp, 00267 EC_KEY *eckey)); 00268 00274 void ECDSA_METHOD_set_sign_setup(ECDSA_METHOD *ecdsa_method, 00275 int (*ecdsa_sign_setup) (EC_KEY *eckey, 00276 BN_CTX *ctx, 00277 BIGNUM **kinv, 00278 BIGNUM **r)); 00279 00285 void ECDSA_METHOD_set_verify(ECDSA_METHOD *ecdsa_method, 00286 int (*ecdsa_do_verify) (const unsigned char 00287 *dgst, int dgst_len, 00288 const ECDSA_SIG *sig, 00289 EC_KEY *eckey)); 00290 00291 void ECDSA_METHOD_set_flags(ECDSA_METHOD *ecdsa_method, int flags); 00292 00298 void ECDSA_METHOD_set_name(ECDSA_METHOD *ecdsa_method, char *name); 00299 00305 /* BEGIN ERROR CODES */ 00306 /* 00307 * The following lines are auto generated by the script mkerr.pl. Any changes 00308 * made after this point may be overwritten when the script is next run. 00309 */ 00310 void ERR_load_ECDSA_strings(void); 00311 00312 /* Error codes for the ECDSA functions. */ 00313 00314 /* Function codes. */ 00315 # define ECDSA_F_ECDSA_CHECK 104 00316 # define ECDSA_F_ECDSA_DATA_NEW_METHOD 100 00317 # define ECDSA_F_ECDSA_DO_SIGN 101 00318 # define ECDSA_F_ECDSA_DO_VERIFY 102 00319 # define ECDSA_F_ECDSA_METHOD_NEW 105 00320 # define ECDSA_F_ECDSA_SIGN_SETUP 103 00321 00322 /* Reason codes. */ 00323 # define ECDSA_R_BAD_SIGNATURE 100 00324 # define ECDSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 101 00325 # define ECDSA_R_ERR_EC_LIB 102 00326 # define ECDSA_R_MISSING_PARAMETERS 103 00327 # define ECDSA_R_NEED_NEW_SETUP_VALUES 106 00328 # define ECDSA_R_NON_FIPS_METHOD 107 00329 # define ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED 104 00330 # define ECDSA_R_SIGNATURE_MALLOC_FAILED 105 00331 00332 #ifdef __cplusplus 00333 } 00334 #endif 00335 #endif