Replaced now removed NativeMutex with StaticMutex, and fixed Neg
implementation for BigNum.
This commit is contained in:
parent
217dad59df
commit
e2fa62e2ae
|
|
@ -2,7 +2,6 @@
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
|
||||||
extern crate libc;
|
extern crate libc;
|
||||||
extern crate rustrt;
|
|
||||||
|
|
||||||
#[cfg(feature = "libressl-pnacl-sys")]
|
#[cfg(feature = "libressl-pnacl-sys")]
|
||||||
extern crate "libressl-pnacl-sys" as _for_linkage;
|
extern crate "libressl-pnacl-sys" as _for_linkage;
|
||||||
|
|
@ -10,7 +9,7 @@ extern crate "libressl-pnacl-sys" as _for_linkage;
|
||||||
use libc::{c_void, c_int, c_char, c_ulong, c_long, c_uint, c_uchar, size_t};
|
use libc::{c_void, c_int, c_char, c_ulong, c_long, c_uint, c_uchar, size_t};
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use rustrt::mutex::NativeMutex;
|
use std::sync::{StaticMutex, StaticMutexGuard, MUTEX_INIT};
|
||||||
use std::sync::{Once, ONCE_INIT};
|
use std::sync::{Once, ONCE_INIT};
|
||||||
|
|
||||||
pub type ASN1_INTEGER = c_void;
|
pub type ASN1_INTEGER = c_void;
|
||||||
|
|
@ -192,7 +191,8 @@ pub const X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE: c_int = 45;
|
||||||
pub const X509_V_ERR_UNSUPPORTED_NAME_SYNTAX: c_int = 53;
|
pub const X509_V_ERR_UNSUPPORTED_NAME_SYNTAX: c_int = 53;
|
||||||
pub const X509_V_OK: c_int = 0;
|
pub const X509_V_OK: c_int = 0;
|
||||||
|
|
||||||
static mut MUTEXES: *mut Vec<NativeMutex> = 0 as *mut Vec<NativeMutex>;
|
static mut MUTEXES: *mut Vec<StaticMutex> = 0 as *mut Vec<StaticMutex>;
|
||||||
|
static mut GUARDS: *mut Vec<Option<StaticMutexGuard>> = 0 as *mut Vec<Option<StaticMutexGuard>>;
|
||||||
|
|
||||||
extern fn locking_function(mode: c_int, n: c_int, _file: *const c_char,
|
extern fn locking_function(mode: c_int, n: c_int, _file: *const c_char,
|
||||||
_line: c_int) {
|
_line: c_int) {
|
||||||
|
|
@ -200,9 +200,9 @@ extern fn locking_function(mode: c_int, n: c_int, _file: *const c_char,
|
||||||
let mutex = &(*MUTEXES)[n as uint];
|
let mutex = &(*MUTEXES)[n as uint];
|
||||||
|
|
||||||
if mode & CRYPTO_LOCK != 0 {
|
if mode & CRYPTO_LOCK != 0 {
|
||||||
mutex.lock_noguard();
|
(*GUARDS)[n as uint] = Some(mutex.lock());
|
||||||
} else {
|
} else {
|
||||||
mutex.unlock_noguard();
|
&(*GUARDS)[n as uint].take();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -216,8 +216,10 @@ pub fn init() {
|
||||||
SSL_load_error_strings();
|
SSL_load_error_strings();
|
||||||
|
|
||||||
let num_locks = CRYPTO_num_locks();
|
let num_locks = CRYPTO_num_locks();
|
||||||
let mutexes = box Vec::from_fn(num_locks as uint, |_| NativeMutex::new());
|
let mutexes = box Vec::from_fn(num_locks as uint, |_| MUTEX_INIT);
|
||||||
MUTEXES = mem::transmute(mutexes);
|
MUTEXES = mem::transmute(mutexes);
|
||||||
|
let guards: Box<Vec<Option<StaticMutexGuard>>> = box Vec::from_fn(num_locks as uint, |_| None);
|
||||||
|
GUARDS = mem::transmute(guards);
|
||||||
|
|
||||||
CRYPTO_set_locking_callback(locking_function);
|
CRYPTO_set_locking_callback(locking_function);
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -463,7 +463,7 @@ pub mod unchecked {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Neg<BigNum> for BigNum {
|
impl Neg<BigNum> for BigNum {
|
||||||
fn neg(&self) -> BigNum {
|
fn neg(self) -> BigNum {
|
||||||
let mut n = self.clone();
|
let mut n = self.clone();
|
||||||
n.negate();
|
n.negate();
|
||||||
n
|
n
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue