pub mod cl;
pub mod bls;
pub mod logger;
use errors::prelude::*;
use libc::c_char;
#[derive(Debug, PartialEq, Copy, Clone)]
#[repr(usize)]
pub enum ErrorCode
{
Success = 0,
CommonInvalidParam1 = 100,
CommonInvalidParam2 = 101,
CommonInvalidParam3 = 102,
CommonInvalidParam4 = 103,
CommonInvalidParam5 = 104,
CommonInvalidParam6 = 105,
CommonInvalidParam7 = 106,
CommonInvalidParam8 = 107,
CommonInvalidParam9 = 108,
CommonInvalidParam10 = 109,
CommonInvalidParam11 = 110,
CommonInvalidParam12 = 111,
CommonInvalidState = 112,
CommonInvalidStructure = 113,
CommonIOError = 114,
AnoncredsRevocationAccumulatorIsFull = 115,
AnoncredsInvalidRevocationAccumulatorIndex = 116,
AnoncredsCredentialRevoked = 117,
AnoncredsProofRejected = 118,
}
#[no_mangle]
pub extern fn indy_crypto_get_current_error(error_json_p: *mut *const c_char) {
trace!("indy_crypto_get_current_error >>> error_json_p: {:?}", error_json_p);
let error = get_current_error_c_json();
unsafe { *error_json_p = error };
trace!("indy_crypto_get_current_error: <<<");
}
#[cfg(test)]
mod tests {
use super::*;
use std::ptr;
use ffi::cl::issuer::indy_crypto_cl_credential_private_key_from_json;
use utils::ctypes::*;
#[test]
fn indy_crypto_get_current_error_works() {
indy_crypto_cl_credential_private_key_from_json(ptr::null(), &mut ptr::null());
let mut error_json_p: *const c_char = ptr::null();
indy_crypto_get_current_error(&mut error_json_p);
let error_json_1 = c_str_to_string(error_json_p).unwrap();
assert!(error_json_1.is_some());
let credential_priv_key = string_to_cstring("some wrong data".to_string());
indy_crypto_cl_credential_private_key_from_json(credential_priv_key.as_ptr(), &mut ptr::null());
indy_crypto_get_current_error(&mut error_json_p);
let error_json_2 = c_str_to_string(error_json_p).unwrap();
assert!(error_json_2.is_some());
assert_ne!(error_json_1.unwrap(), error_json_2.unwrap());
}
}