1 /* 2 * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the OpenSSL license (the "License"). You may not use 5 * this file except in compliance with the License. You can obtain a copy 6 * in the file LICENSE in the source distribution or at 7 * https://www.openssl.org/source/license.html 8 */ 9 10 #include <openssl/ec.h> 11 #include "ec_lcl.h" 12 #include <openssl/err.h> 13 14 ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey) 15 { 16 return ECDSA_do_sign_ex(dgst, dlen, NULL, NULL, eckey); 17 } 18 19 ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dlen, 20 const BIGNUM *kinv, const BIGNUM *rp, 21 EC_KEY *eckey) 22 { 23 if (eckey->meth->sign_sig != NULL) 24 return eckey->meth->sign_sig(dgst, dlen, kinv, rp, eckey); 25 ECerr(EC_F_ECDSA_DO_SIGN_EX, EC_R_OPERATION_NOT_SUPPORTED); 26 return NULL; 27 } 28 29 int ECDSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char 30 *sig, unsigned int *siglen, EC_KEY *eckey) 31 { 32 return ECDSA_sign_ex(type, dgst, dlen, sig, siglen, NULL, NULL, eckey); 33 } 34 35 int ECDSA_sign_ex(int type, const unsigned char *dgst, int dlen, 36 unsigned char *sig, unsigned int *siglen, const BIGNUM *kinv, 37 const BIGNUM *r, EC_KEY *eckey) 38 { 39 if (eckey->meth->sign != NULL) 40 return eckey->meth->sign(type, dgst, dlen, sig, siglen, kinv, r, eckey); 41 ECerr(EC_F_ECDSA_SIGN_EX, EC_R_OPERATION_NOT_SUPPORTED); 42 return 0; 43 } 44 45 int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, 46 BIGNUM **rp) 47 { 48 if (eckey->meth->sign_setup != NULL) 49 return eckey->meth->sign_setup(eckey, ctx_in, kinvp, rp); 50 ECerr(EC_F_ECDSA_SIGN_SETUP, EC_R_OPERATION_NOT_SUPPORTED); 51 return 0; 52 } 53