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_local.h" 12#include <openssl/err.h> 13 14ECDSA_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 19ECDSA_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 29int 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 35int 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 45int 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