Skip to content
This repository was archived by the owner on Feb 25, 2021. It is now read-only.
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 4f44a0f

Browse files
authoredDec 27, 2018
Merge pull request BlockstreamResearch#87 from tomaka/rm-libc
Remove dependency on libc
2 parents 7d7085c + 9c45944 commit 4f44a0f

File tree

4 files changed

+20
-27
lines changed

4 files changed

+20
-27
lines changed
 

‎Cargo.toml

-3
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@ fuzztarget = []
3434
rand = "0.4"
3535
serde_test = "1.0"
3636

37-
[dependencies]
38-
libc = "0.2"
39-
4037
[dependencies.rand]
4138
version = "0.4"
4239
optional = true

‎src/ffi.rs

+13-14
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@
1818
//! not be needed for most users.
1919
use std::mem;
2020
use std::hash;
21-
22-
use libc::{c_int, c_uchar, c_uint, c_void, size_t};
21+
use std::os::raw::{c_int, c_uchar, c_uint, c_void};
2322

2423
/// Flag for context to enable no precomputation
2524
pub const SECP256K1_START_NONE: c_uint = (1 << 0) | 0;
@@ -151,29 +150,29 @@ extern "C" {
151150

152151
// Pubkeys
153152
pub fn secp256k1_ec_pubkey_parse(cx: *const Context, pk: *mut PublicKey,
154-
input: *const c_uchar, in_len: size_t)
153+
input: *const c_uchar, in_len: usize)
155154
-> c_int;
156155

157156
pub fn secp256k1_ec_pubkey_serialize(cx: *const Context, output: *mut c_uchar,
158-
out_len: *mut size_t, pk: *const PublicKey,
157+
out_len: *mut usize, pk: *const PublicKey,
159158
compressed: c_uint)
160159
-> c_int;
161160

162161
// Signatures
163162
pub fn secp256k1_ecdsa_signature_parse_der(cx: *const Context, sig: *mut Signature,
164-
input: *const c_uchar, in_len: size_t)
163+
input: *const c_uchar, in_len: usize)
165164
-> c_int;
166165

167166
pub fn secp256k1_ecdsa_signature_parse_compact(cx: *const Context, sig: *mut Signature,
168167
input64: *const c_uchar)
169168
-> c_int;
170169

171170
pub fn ecdsa_signature_parse_der_lax(cx: *const Context, sig: *mut Signature,
172-
input: *const c_uchar, in_len: size_t)
171+
input: *const c_uchar, in_len: usize)
173172
-> c_int;
174173

175174
pub fn secp256k1_ecdsa_signature_serialize_der(cx: *const Context, output: *mut c_uchar,
176-
out_len: *mut size_t, sig: *const Signature)
175+
out_len: *mut usize, sig: *const Signature)
177176
-> c_int;
178177

179178
pub fn secp256k1_ecdsa_signature_serialize_compact(cx: *const Context, output64: *const c_uchar,
@@ -273,7 +272,7 @@ extern "C" {
273272

274273
#[cfg(feature = "fuzztarget")]
275274
mod fuzz_dummy {
276-
use libc::{c_int, c_uchar, c_uint, c_void, size_t};
275+
use std::os::raw::{c_int, c_uchar, c_uint, c_void};
277276
use ffi::*;
278277
use std::ptr;
279278

@@ -319,7 +318,7 @@ mod fuzz_dummy {
319318
// Pubkeys
320319
/// Parse 33/65 byte pubkey into PublicKey, losing compressed information
321320
pub unsafe fn secp256k1_ec_pubkey_parse(cx: *const Context, pk: *mut PublicKey,
322-
input: *const c_uchar, in_len: size_t)
321+
input: *const c_uchar, in_len: usize)
323322
-> c_int {
324323
assert!(!cx.is_null() && (*cx).0 as u32 & !(SECP256K1_START_NONE | SECP256K1_START_VERIFY | SECP256K1_START_SIGN) == 0);
325324
match in_len {
@@ -346,7 +345,7 @@ mod fuzz_dummy {
346345

347346
/// Serialize PublicKey back to 33/65 byte pubkey
348347
pub unsafe fn secp256k1_ec_pubkey_serialize(cx: *const Context, output: *mut c_uchar,
349-
out_len: *mut size_t, pk: *const PublicKey,
348+
out_len: *mut usize, pk: *const PublicKey,
350349
compressed: c_uint)
351350
-> c_int {
352351
assert!(!cx.is_null() && (*cx).0 as u32 & !(SECP256K1_START_NONE | SECP256K1_START_VERIFY | SECP256K1_START_SIGN) == 0);
@@ -371,7 +370,7 @@ mod fuzz_dummy {
371370

372371
// Signatures
373372
pub unsafe fn secp256k1_ecdsa_signature_parse_der(cx: *const Context, sig: *mut Signature,
374-
input: *const c_uchar, in_len: size_t)
373+
input: *const c_uchar, in_len: usize)
375374
-> c_int {
376375
unimplemented!();
377376
}
@@ -387,14 +386,14 @@ mod fuzz_dummy {
387386
}
388387

389388
pub unsafe fn ecdsa_signature_parse_der_lax(cx: *const Context, sig: *mut Signature,
390-
input: *const c_uchar, in_len: size_t)
389+
input: *const c_uchar, in_len: usize)
391390
-> c_int {
392391
unimplemented!();
393392
}
394393

395394
/// Copies up to 72 bytes into output from sig
396395
pub unsafe fn secp256k1_ecdsa_signature_serialize_der(cx: *const Context, output: *mut c_uchar,
397-
out_len: *mut size_t, sig: *const Signature)
396+
out_len: *mut usize, sig: *const Signature)
398397
-> c_int {
399398
assert!(!cx.is_null() && (*cx).0 as u32 & !(SECP256K1_START_NONE | SECP256K1_START_VERIFY | SECP256K1_START_SIGN) == 0);
400399

@@ -407,7 +406,7 @@ mod fuzz_dummy {
407406
len_s -= 1;
408407
}
409408

410-
assert!(*out_len >= (6 + len_s + len_r) as size_t);
409+
assert!(*out_len >= (6 + len_s + len_r) as usize);
411410

412411
*output.offset(0) = 0x30;
413412
*output.offset(1) = 4 + len_r + len_s;

‎src/key.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ impl PublicKey {
243243
ffi::secp256k1_context_no_precomp,
244244
&mut pk,
245245
data.as_ptr(),
246-
data.len() as ::libc::size_t,
246+
data.len() as usize,
247247
) == 1
248248
{
249249
Ok(PublicKey(pk))
@@ -261,7 +261,7 @@ impl PublicKey {
261261
let mut ret = [0; constants::PUBLIC_KEY_SIZE];
262262

263263
unsafe {
264-
let mut ret_len = constants::PUBLIC_KEY_SIZE as ::libc::size_t;
264+
let mut ret_len = constants::PUBLIC_KEY_SIZE as usize;
265265
let err = ffi::secp256k1_ec_pubkey_serialize(
266266
ffi::secp256k1_context_no_precomp,
267267
ret.as_mut_ptr(),
@@ -280,7 +280,7 @@ impl PublicKey {
280280
let mut ret = [0; constants::UNCOMPRESSED_PUBLIC_KEY_SIZE];
281281

282282
unsafe {
283-
let mut ret_len = constants::UNCOMPRESSED_PUBLIC_KEY_SIZE as ::libc::size_t;
283+
let mut ret_len = constants::UNCOMPRESSED_PUBLIC_KEY_SIZE as usize;
284284
let err = ffi::secp256k1_ec_pubkey_serialize(
285285
ffi::secp256k1_context_no_precomp,
286286
ret.as_mut_ptr(),

‎src/lib.rs

+4-7
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,6 @@
139139
#[cfg(feature = "serde")] pub extern crate serde;
140140
#[cfg(all(test, feature = "serde"))] extern crate serde_test;
141141

142-
pub extern crate libc;
143-
144-
use libc::size_t;
145142
use std::{error, fmt, ptr, str};
146143
#[cfg(any(test, feature = "rand"))] use rand::Rng;
147144

@@ -173,7 +170,7 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
173170
impl fmt::Display for Signature {
174171
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
175172
let mut v = [0; 72];
176-
let mut len = v.len() as size_t;
173+
let mut len = v.len() as usize;
177174
unsafe {
178175
let err = ffi::secp256k1_ecdsa_signature_serialize_der(
179176
ffi::secp256k1_context_no_precomp,
@@ -241,7 +238,7 @@ impl Signature {
241238
ffi::secp256k1_context_no_precomp,
242239
&mut ret,
243240
data.as_ptr(),
244-
data.len() as libc::size_t,
241+
data.len() as usize,
245242
) == 1
246243
{
247244
Ok(Signature(ret))
@@ -283,7 +280,7 @@ impl Signature {
283280
ffi::secp256k1_context_no_precomp,
284281
&mut ret,
285282
data.as_ptr(),
286-
data.len() as libc::size_t,
283+
data.len() as usize,
287284
) == 1
288285
{
289286
Ok(Signature(ret))
@@ -338,7 +335,7 @@ impl Signature {
338335
/// Serializes the signature in DER format
339336
pub fn serialize_der(&self) -> Vec<u8> {
340337
let mut ret = Vec::with_capacity(72);
341-
let mut len: size_t = ret.capacity() as size_t;
338+
let mut len: usize = ret.capacity() as usize;
342339
unsafe {
343340
let err = ffi::secp256k1_ecdsa_signature_serialize_der(
344341
ffi::secp256k1_context_no_precomp,

0 commit comments

Comments
 (0)
This repository has been archived.