From 2d6cd9eb1633ad80636d273f823b64d723a4be76 Mon Sep 17 00:00:00 2001 From: Rohit Aggarwal Date: Thu, 8 Mar 2018 09:44:05 +0000 Subject: Exposed some of ECDSA functions --- openssl-sys/src/ossl10x.rs | 26 ++++++++++++++++++++++++++ openssl-sys/src/ossl110.rs | 23 +++++++++++++++++++++++ 2 files changed, 49 insertions(+) (limited to 'openssl-sys') diff --git a/openssl-sys/src/ossl10x.rs b/openssl-sys/src/ossl10x.rs index f8ff7193..78c76b6e 100644 --- a/openssl-sys/src/ossl10x.rs +++ b/openssl-sys/src/ossl10x.rs @@ -128,6 +128,12 @@ pub struct DSA { pub engine: *mut ::ENGINE, } +#[repr(C)] +pub struct ECDSA_SIG { + pub r: *mut BIGNUM, + pub s: *mut BIGNUM +} + #[repr(C)] pub struct EVP_PKEY { pub type_: c_int, @@ -823,6 +829,26 @@ extern "C" { ); pub fn CRYPTO_set_id_callback(func: unsafe extern "C" fn() -> c_ulong); + pub fn ECDSA_SIG_new() -> *mut ECDSA_SIG; + pub fn ECDSA_SIG_free(sig: *mut ECDSA_SIG); + pub fn i2d_ECDSA_SIG(sig: *const ECDSA_SIG, pp: *mut *mut c_uchar) -> c_int; + pub fn d2i_ECDSA_SIG(sig: *mut *mut ECDSA_SIG, pp: *mut *const c_uchar, len: c_long) -> *mut ECDSA_SIG; + pub fn ECDSA_size(eckey: *const ::EC_KEY) -> c_int; + pub fn ECDSA_sign(_type: c_int, dgst: *const c_uchar, dgstlen: c_int, + sig: *mut c_uchar, siglen: *mut c_uint, eckey: *mut ::EC_KEY) -> c_int; + pub fn ECDSA_do_sign(dgst: *const c_uchar, dgst_len: c_int, eckey: *mut ::EC_KEY) -> *mut ECDSA_SIG; + pub fn ECDSA_verify(_type: c_int, dgst: *const c_uchar, dgstlen: c_int, + sig: *const c_uchar, siglen: c_int, eckey: *mut ::EC_KEY) -> c_int; + pub fn ECDSA_do_verify(dgst: *const c_uchar, dgst_len: c_int, + sig: *const ECDSA_SIG, eckey: *mut ::EC_KEY) -> c_int; + pub fn ECDSA_do_sign_ex(dgst: *const c_uchar, dgstlen: c_int, + kinv: *const BIGNUM, rp: *const BIGNUM, + eckey: *mut ::EC_KEY) -> *mut ECDSA_SIG; + pub fn ECDSA_sign_setup(eckey: *mut ::EC_KEY, ctx: *mut ::BN_CTX, kinv: *mut *mut BIGNUM, rp: *mut *mut BIGNUM) -> c_int; + pub fn ECDSA_sign_ex(_type: c_int, dgst: *const c_uchar, dgstlen: c_int, + sig: *mut c_uchar, siglen: *mut c_uint, + kinv: *const BIGNUM, rp: *const BIGNUM, eckey: *mut ::EC_KEY) -> c_int; + pub fn ERR_load_crypto_strings(); pub fn RSA_generate_key( diff --git a/openssl-sys/src/ossl110.rs b/openssl-sys/src/ossl110.rs index b02c296d..d6f4eb99 100644 --- a/openssl-sys/src/ossl110.rs +++ b/openssl-sys/src/ossl110.rs @@ -8,6 +8,7 @@ pub enum BIO_METHOD {} pub enum CRYPTO_EX_DATA {} pub enum DH {} pub enum DSA {} +pub enum ECDSA_SIG {} pub enum EVP_CIPHER {} pub enum EVP_MD_CTX {} pub enum EVP_PKEY {} @@ -363,4 +364,26 @@ extern "C" { ) -> *mut PKCS12; pub fn X509_REQ_get_version(req: *const X509_REQ) -> c_long; pub fn X509_REQ_get_subject_name(req: *const X509_REQ) -> *mut ::X509_NAME; + + pub fn ECDSA_SIG_new() -> *mut ECDSA_SIG; + pub fn ECDSA_SIG_free(sig: *mut ECDSA_SIG); + pub fn ECDSA_SIG_get0(sig: *const ECDSA_SIG, pr: *mut *const BIGNUM, ps: *mut *const BIGNUM); + pub fn ECDSA_SIG_set0(sig: *mut ECDSA_SIG, pr: *mut BIGNUM, ps: *mut BIGNUM) -> c_int; + pub fn i2d_ECDSA_SIG(sig: *const ECDSA_SIG, pp: *mut *mut c_uchar) -> c_int; + pub fn d2i_ECDSA_SIG(sig: *mut *mut ECDSA_SIG, pp: *mut *const c_uchar, len: c_long) -> *mut ECDSA_SIG; + pub fn ECDSA_size(eckey: *const ::EC_KEY) -> c_int; + pub fn ECDSA_sign(_type: c_int, dgst: *const c_uchar, dgstlen: c_int, + sig: *mut c_uchar, siglen: *mut c_uint, eckey: *mut ::EC_KEY) -> c_int; + pub fn ECDSA_do_sign(dgst: *const c_uchar, dgst_len: c_int, eckey: *mut ::EC_KEY) -> *mut ECDSA_SIG; + pub fn ECDSA_verify(_type: c_int, dgst: *const c_uchar, dgstlen: c_int, + sig: *const c_uchar, siglen: c_int, eckey: *mut ::EC_KEY) -> c_int; + pub fn ECDSA_do_verify(dgst: *const c_uchar, dgst_len: c_int, + sig: *const ECDSA_SIG, eckey: *mut ::EC_KEY) -> c_int; + pub fn ECDSA_do_sign_ex(dgst: *const c_uchar, dgstlen: c_int, + kinv: *const BIGNUM, rp: *const BIGNUM, + eckey: *mut ::EC_KEY) -> *mut ECDSA_SIG; + pub fn ECDSA_sign_setup(eckey: *mut ::EC_KEY, ctx: *mut ::BN_CTX, kinv: *mut *mut BIGNUM, rp: *mut *mut BIGNUM) -> c_int; + pub fn ECDSA_sign_ex(_type: c_int, dgst: *const c_uchar, dgstlen: c_int, + sig: *mut c_uchar, siglen: *mut c_uint, + kinv: *const BIGNUM, rp: *const BIGNUM, eckey: *mut ::EC_KEY) -> c_int; } -- cgit v1.2.3 From 55ffc9b2e415c3286c8d903b7c0284c834e4a13d Mon Sep 17 00:00:00 2001 From: Rohit Aggarwal Date: Thu, 8 Mar 2018 11:54:19 +0000 Subject: Add support LibreSSL and remove OpenSSL binding which we aren't using --- openssl-sys/src/lib.rs | 6 ++++++ openssl-sys/src/libressl/mod.rs | 6 ++++++ openssl-sys/src/ossl10x.rs | 20 -------------------- openssl-sys/src/ossl110.rs | 19 ------------------- 4 files changed, 12 insertions(+), 39 deletions(-) (limited to 'openssl-sys') diff --git a/openssl-sys/src/lib.rs b/openssl-sys/src/lib.rs index 77f69188..4a73ff7f 100644 --- a/openssl-sys/src/lib.rs +++ b/openssl-sys/src/lib.rs @@ -1876,6 +1876,12 @@ extern "C" { ctx: *mut BN_CTX, ) -> c_int; + pub fn ECDSA_SIG_new() -> *mut ECDSA_SIG; + pub fn ECDSA_SIG_free(sig: *mut ECDSA_SIG); + pub fn ECDSA_do_verify(dgst: *const c_uchar, dgst_len: c_int, + sig: *const ECDSA_SIG, eckey: *mut ::EC_KEY) -> c_int; + pub fn ECDSA_do_sign(dgst: *const c_uchar, dgst_len: c_int, eckey: *mut ::EC_KEY) -> *mut ECDSA_SIG; + pub fn ERR_peek_last_error() -> c_ulong; pub fn ERR_get_error() -> c_ulong; pub fn ERR_get_error_line_data( diff --git a/openssl-sys/src/libressl/mod.rs b/openssl-sys/src/libressl/mod.rs index 8454a78a..c47363ca 100644 --- a/openssl-sys/src/libressl/mod.rs +++ b/openssl-sys/src/libressl/mod.rs @@ -133,6 +133,12 @@ pub struct DSA { pub engine: *mut ::ENGINE, } +#[repr(C)] +pub struct ECDSA_SIG { + pub r: *mut ::BIGNUM, + pub s: *mut ::BIGNUM +} + #[repr(C)] pub struct EVP_PKEY { pub type_: c_int, diff --git a/openssl-sys/src/ossl10x.rs b/openssl-sys/src/ossl10x.rs index 78c76b6e..09185160 100644 --- a/openssl-sys/src/ossl10x.rs +++ b/openssl-sys/src/ossl10x.rs @@ -829,26 +829,6 @@ extern "C" { ); pub fn CRYPTO_set_id_callback(func: unsafe extern "C" fn() -> c_ulong); - pub fn ECDSA_SIG_new() -> *mut ECDSA_SIG; - pub fn ECDSA_SIG_free(sig: *mut ECDSA_SIG); - pub fn i2d_ECDSA_SIG(sig: *const ECDSA_SIG, pp: *mut *mut c_uchar) -> c_int; - pub fn d2i_ECDSA_SIG(sig: *mut *mut ECDSA_SIG, pp: *mut *const c_uchar, len: c_long) -> *mut ECDSA_SIG; - pub fn ECDSA_size(eckey: *const ::EC_KEY) -> c_int; - pub fn ECDSA_sign(_type: c_int, dgst: *const c_uchar, dgstlen: c_int, - sig: *mut c_uchar, siglen: *mut c_uint, eckey: *mut ::EC_KEY) -> c_int; - pub fn ECDSA_do_sign(dgst: *const c_uchar, dgst_len: c_int, eckey: *mut ::EC_KEY) -> *mut ECDSA_SIG; - pub fn ECDSA_verify(_type: c_int, dgst: *const c_uchar, dgstlen: c_int, - sig: *const c_uchar, siglen: c_int, eckey: *mut ::EC_KEY) -> c_int; - pub fn ECDSA_do_verify(dgst: *const c_uchar, dgst_len: c_int, - sig: *const ECDSA_SIG, eckey: *mut ::EC_KEY) -> c_int; - pub fn ECDSA_do_sign_ex(dgst: *const c_uchar, dgstlen: c_int, - kinv: *const BIGNUM, rp: *const BIGNUM, - eckey: *mut ::EC_KEY) -> *mut ECDSA_SIG; - pub fn ECDSA_sign_setup(eckey: *mut ::EC_KEY, ctx: *mut ::BN_CTX, kinv: *mut *mut BIGNUM, rp: *mut *mut BIGNUM) -> c_int; - pub fn ECDSA_sign_ex(_type: c_int, dgst: *const c_uchar, dgstlen: c_int, - sig: *mut c_uchar, siglen: *mut c_uint, - kinv: *const BIGNUM, rp: *const BIGNUM, eckey: *mut ::EC_KEY) -> c_int; - pub fn ERR_load_crypto_strings(); pub fn RSA_generate_key( diff --git a/openssl-sys/src/ossl110.rs b/openssl-sys/src/ossl110.rs index d6f4eb99..1902af75 100644 --- a/openssl-sys/src/ossl110.rs +++ b/openssl-sys/src/ossl110.rs @@ -365,25 +365,6 @@ extern "C" { pub fn X509_REQ_get_version(req: *const X509_REQ) -> c_long; pub fn X509_REQ_get_subject_name(req: *const X509_REQ) -> *mut ::X509_NAME; - pub fn ECDSA_SIG_new() -> *mut ECDSA_SIG; - pub fn ECDSA_SIG_free(sig: *mut ECDSA_SIG); pub fn ECDSA_SIG_get0(sig: *const ECDSA_SIG, pr: *mut *const BIGNUM, ps: *mut *const BIGNUM); pub fn ECDSA_SIG_set0(sig: *mut ECDSA_SIG, pr: *mut BIGNUM, ps: *mut BIGNUM) -> c_int; - pub fn i2d_ECDSA_SIG(sig: *const ECDSA_SIG, pp: *mut *mut c_uchar) -> c_int; - pub fn d2i_ECDSA_SIG(sig: *mut *mut ECDSA_SIG, pp: *mut *const c_uchar, len: c_long) -> *mut ECDSA_SIG; - pub fn ECDSA_size(eckey: *const ::EC_KEY) -> c_int; - pub fn ECDSA_sign(_type: c_int, dgst: *const c_uchar, dgstlen: c_int, - sig: *mut c_uchar, siglen: *mut c_uint, eckey: *mut ::EC_KEY) -> c_int; - pub fn ECDSA_do_sign(dgst: *const c_uchar, dgst_len: c_int, eckey: *mut ::EC_KEY) -> *mut ECDSA_SIG; - pub fn ECDSA_verify(_type: c_int, dgst: *const c_uchar, dgstlen: c_int, - sig: *const c_uchar, siglen: c_int, eckey: *mut ::EC_KEY) -> c_int; - pub fn ECDSA_do_verify(dgst: *const c_uchar, dgst_len: c_int, - sig: *const ECDSA_SIG, eckey: *mut ::EC_KEY) -> c_int; - pub fn ECDSA_do_sign_ex(dgst: *const c_uchar, dgstlen: c_int, - kinv: *const BIGNUM, rp: *const BIGNUM, - eckey: *mut ::EC_KEY) -> *mut ECDSA_SIG; - pub fn ECDSA_sign_setup(eckey: *mut ::EC_KEY, ctx: *mut ::BN_CTX, kinv: *mut *mut BIGNUM, rp: *mut *mut BIGNUM) -> c_int; - pub fn ECDSA_sign_ex(_type: c_int, dgst: *const c_uchar, dgstlen: c_int, - sig: *mut c_uchar, siglen: *mut c_uint, - kinv: *const BIGNUM, rp: *const BIGNUM, eckey: *mut ::EC_KEY) -> c_int; } -- cgit v1.2.3 From d4de2a408f578e6f974468dc448c0c63030087e0 Mon Sep 17 00:00:00 2001 From: Rohit Aggarwal Date: Thu, 8 Mar 2018 16:12:35 +0000 Subject: Use examples listed in OpenSSL docs for testing --- openssl-sys/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'openssl-sys') diff --git a/openssl-sys/src/lib.rs b/openssl-sys/src/lib.rs index 4a73ff7f..564c7eae 100644 --- a/openssl-sys/src/lib.rs +++ b/openssl-sys/src/lib.rs @@ -1879,8 +1879,8 @@ extern "C" { pub fn ECDSA_SIG_new() -> *mut ECDSA_SIG; pub fn ECDSA_SIG_free(sig: *mut ECDSA_SIG); pub fn ECDSA_do_verify(dgst: *const c_uchar, dgst_len: c_int, - sig: *const ECDSA_SIG, eckey: *mut ::EC_KEY) -> c_int; - pub fn ECDSA_do_sign(dgst: *const c_uchar, dgst_len: c_int, eckey: *mut ::EC_KEY) -> *mut ECDSA_SIG; + sig: *const ECDSA_SIG, eckey: *mut EC_KEY) -> c_int; + pub fn ECDSA_do_sign(dgst: *const c_uchar, dgst_len: c_int, eckey: *mut EC_KEY) -> *mut ECDSA_SIG; pub fn ERR_peek_last_error() -> c_ulong; pub fn ERR_get_error() -> c_ulong; -- cgit v1.2.3