pub trait SignatureVerificationAlgorithm:
Send
+ Sync
+ Debug {
// Required methods
fn verify_signature(
&self,
public_key: &[u8],
message: &[u8],
signature: &[u8],
) -> Result<(), InvalidSignature>;
fn public_key_alg_id(&self) -> AlgorithmIdentifier;
fn signature_alg_id(&self) -> AlgorithmIdentifier;
// Provided methods
fn fips_status(&self) -> FipsStatus { ... }
fn fips(&self) -> bool { ... }
}展开描述
一种抽象的签名验证算法。
对于每对所支持的公钥类型(通过 public_key_alg_id() 标识)
与 signatureAlgorithm(通过 signature_alg_id() 标识),都需要这样一个实现。
注意,这两个 AlgorithmIdentifier 都包含参数编码,
因此对于每一种可能的公钥或签名参数,都需要单独的 SignatureVerificationAlgorithm。
Debug 实现应以人类可读的形式(即不要以编码字节形式)列出公钥算法标识符与 签名算法标识符,并附上实现库的名称(以区分同一算法的不同实现)。
必需方法§
Sourcefn verify_signature(
&self,
public_key: &[u8],
message: &[u8],
signature: &[u8],
) -> Result<(), InvalidSignature>
fn verify_signature( &self, public_key: &[u8], message: &[u8], signature: &[u8], ) -> Result<(), InvalidSignature>
验证签名。
public_key 是取自某个 SubjectPublicKeyInfo 编码的 subjectPublicKey 值,
不可信。该密钥的 subjectPublicKeyInfo 与 public_key_alg_id() 所返回的 AlgorithmIdentifier 相匹配。
message 是据称用于计算签名的数据。
该数据尚未哈希;若所实现的算法要求哈希,trait 函数的实现方需自行完成哈希。
signature 是据称针对 message 计算出的签名。
仅当 signature 是 message 的合法签名时,返回 Ok(())。
若签名无效(包括 public_key 编码无效的情况),则返回 Err(InvalidSignature)。
没有必要也无法产生比这更具体的错误。
Sourcefn public_key_alg_id(&self) -> AlgorithmIdentifier
fn public_key_alg_id(&self) -> AlgorithmIdentifier
返回一个 AlgorithmIdentifier:只有当某个公钥的 subjectPublicKeyInfo 值与之相等时,
本 SignatureVerificationAlgorithm 才可用于该公钥的签名验证。
Sourcefn signature_alg_id(&self) -> AlgorithmIdentifier
fn signature_alg_id(&self) -> AlgorithmIdentifier
返回一个 AlgorithmIdentifier:只有当待验证数据上的 signatureAlgorithm 值与之相等时,
本 SignatureVerificationAlgorithm 才可用于该数据的签名验证。
提供方法§
Sourcefn fips_status(&self) -> FipsStatus
fn fips_status(&self) -> FipsStatus
返回本算法或实现的 FIPS 状态。