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_signature 的 public_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§
- Ecdsa
P256 Sha256 - ECDSA P-256/SHA-256(批准)。
- Ecdsa
P384 Sha384 - ECDSA P-384/SHA-384(批准)。
- Ed25519
- Ed25519(非批准)。
- RsaPkcs1
Sha256 - RSA PKCS#1 v1.5/SHA-256(批准;仅证书链验证遗留用途)。
- RsaPkcs1
Sha384 - RSA PKCS#1 v1.5/SHA-384(批准;遗留用途)。
- RsaPkcs1
Sha512 - RSA PKCS#1 v1.5/SHA-512(批准;遗留用途)。
- RsaPss
Sha256 - RSA-PSS/SHA-256(批准)。
- RsaPss
Sha384 - RSA-PSS/SHA-384(批准)。
- RsaPss
Sha512 - RSA-PSS/SHA-512(批准)。
Statics§
- ALL_
VERIFIERS - 供
WebPkiSupportedAlgorithms::all使用的完整清单。 - FIPS_
SUPPORTED_ ALGORITHMS - 批准模式的 webpki 验证算法集(无 Ed25519)。
- SCHEME_
MAP - scheme → 验证算法映射(TLS 1.3 只取各组首项)。
- SUPPORTED_
ALGORITHMS - 默认(非批准模式)的 webpki 验证算法集。