px普贤教程PuXian
普贤教程 › 包参考

x509 包

X.509 证书 DER/PEM 解析与验签

项值
包名x509
版本0.2.0
可用版本0.1.0 / 0.2.0
入口x509.px
分类认证与安全
文件数 / 行数1 / 407

安装与引入

bash
pxpkg init          # 首次
pxpkg add x509@0.2.0
pxpkg install
px
import x509
所属分类教程:认证与安全

公开接口

函数参数
x509_parse_pempem
x509_parse_derder
x509_verify_derder
x509_verify_pempem
其余 21 个 def(内部与辅助,可直接调用但不属稳定接口)
函数参数
asn_lendata, ip
asn_elemdata, ip
asn_oiddata, start, end
asn_strdata, start, end
asn_namedata, start, end
x509_rsa_keyder, start, end
x509_lenl
x509_spki_pemn_hex, e_hex
x509_cncert
x509_issuer_cncert
x509_is_self_signedcert
x509_serial_intcert
x509_parse_timetime_str
x509_cmp_timet1, t2
x509_is_valid_periodcert, now_time
x509_is_expiredcert, now_time
x509_fingerprint_sha256der
x509_issuer_infocert
x509_subject_infocert
x509_pubkey_infocert
x509_chain_verifycerts

包内说明(源码头注释)

text
============================================================
普贤生态库:registry/x509 —— X.509 证书 DER/PEM 解析与验签
------------------------------------------------------------
纯函数库(无 IO、无状态,除原生验签外全为字节运算),双模式一致。
对应缺口表「证书/X.509 解析」(DER 解析纯 .px;验签走 rsa_verify_pkcs1v15_sha256):
x509_parse_pem(pem)     → Ok(der_bytes) | Err    剥离 PEM 装甲
x509_parse_der(der)     → Ok(cert dict) | Err    解析证书字段
x509_verify_der(der)    → Ok({valid: bool}) | Err 自验签名(TBS + 公钥 + 签名)
x509_verify_pem(pem)    → Ok({valid: bool}) | Err
解析字段:
version / serial(hex) / sig_alg(oid) / issuer{c,o,ou,cn,l,st} /
not_before / not_after(ASN.1 时间串, UTCTime/GeneralizedTime)/
subject{...} / pubkey{alg, n_hex, e_hex, pem} / sig_hex
验签:重建 SPKI PEM(BER/DER 编码)→ rsa_verify_pkcs1v15_sha256(pem_pub, TBS原始字节, sig)
说明:支持 RSA(1.2.840.113549.1.1.1)+ sha256WithRSAEncryption 等常见 OID;
EC 证书解析出 alg 但验签需原生差异(文档注明);未知扩展忽略。
============================================================
---- ASN.1 ----
读取长度 → [len, new_ip, err]