Skip to main content

Module verify

Module verify 

Source
Expand description

证书/握手签名验证算法(rustls-webpki 经由 rustls::crypto::WebPkiSupportedAlgorithms 消费)。

注意:TLS 1.3 对每个 scheme 只取 mapping第一个算法, TLS 1.2 会尝试全部——当前映射 1:1;若 M8 需要跨曲线容错 (同 scheme 兼容 P-256/P-384 验证器,rustls-rustcrypto 的做法), 在此扩展即可。

public_key_alg_id() / signature_alg_id() 的字节语义(pki-types 1.15 实测,以 src/data/alg-*.der 与 rustls-webpki 的比对逻辑为准): 返回 AlgorithmIdentifier 的 SEQUENCE 内容(即内层 TLV 序列,不带 外层 30 xx 头)——webpki 用 der::expect_tag 剥掉外层后逐字节比对。 注意与 RSA 相关的 NULL 参数是内容的一部分,必须保留:

  • EC:公钥 = ecPublicKey OID + 命名曲线 OID;签名 = ecdsa-with-SHA* (RFC 5758:不带 NULL 参数);
  • Ed25519:公钥/签名同 OID(1.3.101.112,无参数);
  • RSA PKCS#1:公钥 = rsaEncryption + NULL;签名 = sha*WithRSA + NULL;
  • RSA-PSS:公钥同 RSA;签名 = RSASSA-PSS OID + PSS 参数 (RFC 4055:hash/MGF1-SHA*/salt=哈希长)。

verify_signaturepublic_key 参数语义(rustls-webpki 0.103.x signed_data.rs 实测):webpki 传入的是 subjectPublicKey 的 BIT STRING 内容(key_value)——即裸密钥本体(RSA = 裸 RSAPublicKey DER;EC = 未压缩 SEC1 点;Ed25519 = 32 字节裸 公钥),不含 SPKI/AlgorithmIdentifier 包装。ferritls-core 的 VerifyKey 构造器即按该裸格式定义,此处直接透传。

Structs§

EcdsaP256Sha256
ECDSA P-256/SHA-256(批准)。
EcdsaP384Sha384
ECDSA P-384/SHA-384(批准)。
Ed25519
Ed25519(非批准)。
RsaPkcs1Sha256
RSA PKCS#1 v1.5/SHA-256(批准;仅证书链验证遗留用途)。
RsaPkcs1Sha384
RSA PKCS#1 v1.5/SHA-384(批准;遗留用途)。
RsaPkcs1Sha512
RSA PKCS#1 v1.5/SHA-512(批准;遗留用途)。
RsaPssSha256
RSA-PSS/SHA-256(批准)。
RsaPssSha384
RSA-PSS/SHA-384(批准)。
RsaPssSha512
RSA-PSS/SHA-512(批准)。

Statics§

ALL_VERIFIERS
WebPkiSupportedAlgorithms::all 使用的完整清单。
FIPS_SUPPORTED_ALGORITHMS
批准模式的 webpki 验证算法集(无 Ed25519)。
SCHEME_MAP
scheme → 验证算法映射(TLS 1.3 只取各组首项)。
SUPPORTED_ALGORITHMS
默认(非批准模式)的 webpki 验证算法集。