#[repr(C)]pub struct OQS_SIG {
pub method_name: *const c_char,
pub alg_version: *const c_char,
pub claimed_nist_level: u8,
pub euf_cma: bool,
pub length_public_key: usize,
pub length_secret_key: usize,
pub length_signature: usize,
pub keypair: Option<unsafe extern "C" fn(public_key: *mut u8, secret_key: *mut u8) -> OQS_STATUS>,
pub sign: Option<unsafe extern "C" fn(signature: *mut u8, signature_len: *mut usize, message: *const u8, message_len: usize, secret_key: *const u8) -> OQS_STATUS>,
pub verify: Option<unsafe extern "C" fn(message: *const u8, message_len: usize, signature: *const u8, signature_len: usize, public_key: *const u8) -> OQS_STATUS>,
}
Expand description
Signature schemes object
Fields§
§method_name: *const c_char
Printable string representing the name of the signature scheme.
alg_version: *const c_char
Printable string representing the version of the cryptographic algorithm.
Implementations with the same method_name and same alg_version will be interoperable. See README.md for information about algorithm compatibility.
claimed_nist_level: u8
The NIST security level (1, 2, 3, 4, 5) claimed in this algorithm’s original NIST submission.
euf_cma: bool
Whether the signature offers EUF-CMA security (TRUE) or not (FALSE).
length_public_key: usize
The (maximum) length, in bytes, of public keys for this signature scheme.
length_secret_key: usize
The (maximum) length, in bytes, of secret keys for this signature scheme.
length_signature: usize
The (maximum) length, in bytes, of signatures for this signature scheme.
keypair: Option<unsafe extern "C" fn(public_key: *mut u8, secret_key: *mut u8) -> OQS_STATUS>
Keypair generation algorithm.
Caller is responsible for allocating sufficient memory for public_key
and
secret_key
, based on the length_*
members in this object or the per-scheme
compile-time macros OQS_SIG_*_length_*
.
@param[out] public_key The public key represented as a byte string. @param[out] secret_key The secret key represented as a byte string. @return OQS_SUCCESS or OQS_ERROR
sign: Option<unsafe extern "C" fn(signature: *mut u8, signature_len: *mut usize, message: *const u8, message_len: usize, secret_key: *const u8) -> OQS_STATUS>
Signature generation algorithm.
Caller is responsible for allocating sufficient memory for signature
,
based on the length_*
members in this object or the per-scheme
compile-time macros OQS_SIG_*_length_*
.
@param[out] signature The signature on the message represented as a byte string.
@param[out] signature_len The actual length of the signature. May be smaller than length_signature
for some algorithms since some algorithms have variable length signatures.
@param[in] message The message to sign represented as a byte string.
@param[in] message_len The length of the message to sign.
@param[in] secret_key The secret key represented as a byte string.
@return OQS_SUCCESS or OQS_ERROR
verify: Option<unsafe extern "C" fn(message: *const u8, message_len: usize, signature: *const u8, signature_len: usize, public_key: *const u8) -> OQS_STATUS>
Signature verification algorithm.
@param[in] message The message represented as a byte string. @param[in] message_len The length of the message. @param[in] signature The signature on the message represented as a byte string. @param[in] signature_len The length of the signature. @param[in] public_key The public key represented as a byte string. @return OQS_SUCCESS or OQS_ERROR