ecdsa.h

Go to the documentation of this file.
00001 /* crypto/ecdsa/ecdsa.h */
00006 /* ====================================================================
00007  * Copyright (c) 2000-2003 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    {
00080    BIGNUM *r;
00081    BIGNUM *s;
00082    } ECDSA_SIG;
00083 
00088 ECDSA_SIG *ECDSA_SIG_new(void);
00089 
00094 void    ECDSA_SIG_free(ECDSA_SIG *a);
00095 
00103 int     i2d_ECDSA_SIG(const ECDSA_SIG *a, unsigned char **pp);
00104 
00113 ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **v, const unsigned char **pp, long len);
00114 
00123 ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst,int dgst_len,EC_KEY *eckey);
00124 
00136 ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen,
00137       const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey);
00138 
00148 int     ECDSA_do_verify(const unsigned char *dgst, int dgst_len,
00149       const ECDSA_SIG *sig, EC_KEY* eckey);
00150 
00151 const ECDSA_METHOD *ECDSA_OpenSSL(void);
00152 
00157 void    ECDSA_set_default_method(const ECDSA_METHOD *meth);
00158 
00163 const ECDSA_METHOD *ECDSA_get_default_method(void);
00164 
00171 int     ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth);
00172 
00178 int     ECDSA_size(const EC_KEY *eckey);
00179 
00188 int     ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv,
00189       BIGNUM **rp);
00190 
00202 int     ECDSA_sign(int type, const unsigned char *dgst, int dgstlen,
00203       unsigned char *sig, unsigned int *siglen, EC_KEY *eckey);
00204 
00205 
00220 int     ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen,
00221       unsigned char *sig, unsigned int *siglen, const BIGNUM *kinv,
00222       const BIGNUM *rp, EC_KEY *eckey);
00223 
00235 int     ECDSA_verify(int type, const unsigned char *dgst, int dgstlen,
00236       const unsigned char *sig, int siglen, EC_KEY *eckey);
00237 
00238 /* the standard ex_data functions */
00239 int     ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new
00240       *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
00241 int     ECDSA_set_ex_data(EC_KEY *d, int idx, void *arg);
00242 void    *ECDSA_get_ex_data(EC_KEY *d, int idx);
00243 
00244 
00245 /* BEGIN ERROR CODES */
00246 /* The following lines are auto generated by the script mkerr.pl. Any changes
00247  * made after this point may be overwritten when the script is next run.
00248  */
00249 void ERR_load_ECDSA_strings(void);
00250 
00251 /* Error codes for the ECDSA functions. */
00252 
00253 /* Function codes. */
00254 #define ECDSA_F_ECDSA_DATA_NEW_METHOD         100
00255 #define ECDSA_F_ECDSA_DO_SIGN           101
00256 #define ECDSA_F_ECDSA_DO_VERIFY            102
00257 #define ECDSA_F_ECDSA_SIGN_SETUP        103
00258 
00259 /* Reason codes. */
00260 #define ECDSA_R_BAD_SIGNATURE           100
00261 #define ECDSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE      101
00262 #define ECDSA_R_ERR_EC_LIB           102
00263 #define ECDSA_R_MISSING_PARAMETERS         103
00264 #define ECDSA_R_NEED_NEW_SETUP_VALUES         106
00265 #define ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED     104
00266 #define ECDSA_R_SIGNATURE_MALLOC_FAILED          105
00267 
00268 #ifdef  __cplusplus
00269 }
00270 #endif
00271 #endif

Generated on Thu Aug 20 22:33:05 2009 for OpenXDAS by  doxygen 1.5.6