diff --git a/src/bls_api.rs b/src/bls_api.rs index c8c00bc..f251349 100644 --- a/src/bls_api.rs +++ b/src/bls_api.rs @@ -7,6 +7,7 @@ unsafe extern "C" { pub unsafe fn blsInit(curve: usize, compiledTimeVar: usize) -> i32; pub unsafe fn mclBnFr_isZero(secret_key: *const SecretKey) -> i32; + pub unsafe fn mclBnFr_isValid(secret_key: *const SecretKey) -> i32; pub unsafe fn mclBn_getFrByteSize() -> usize; pub unsafe fn mclBn_getFpByteSize() -> usize; pub unsafe fn mclBnG2_setStr(x: *mut G2, buf: *const u8, buf_size: usize, io_mode: i32) -> i32; diff --git a/src/secret_key.rs b/src/secret_key.rs index b1ee341..233491f 100644 --- a/src/secret_key.rs +++ b/src/secret_key.rs @@ -100,4 +100,14 @@ impl SecretKey { Ok(buf) } + + pub fn is_zero(&self) -> bool { + INIT.call_once(init_library); + unsafe { mclBnFr_isZero(self) == 1 } + } + + pub fn is_valid(&self) -> bool { + INIT.call_once(init_library); + unsafe { mclBnFr_isValid(self) == 1 } + } }