按规范「注释只讲解作用,不掺杂历史原因,尽量英文」:把 includes 下 75 个 .vp 的中文 # 注释与三引号 docstring 改写为英文,每个注释块压到 2 行以内。 保留要点:作用、约束、危险警告(不得/必须/注意)、ABI 与类型约定(如 BYTEPTR | t.CPtr = i8** 的跨模块坍缩坑)、位宽/长度约定、fail-fast 要求、内存与句柄所有权。 未动:文件头注释(规范豁免,仍是中文)、运行时中文字符串常量(printf / fatal_error / MlirFail 等用户可见消息,属代码字面量)。 验证:独立脚本比对 HEAD 与工作区的代码骨架(剥离 # 注释与三引号 docstring 后的非空行)——75 个文件逐字节一致;行尾 CRLF/LF 未被改动;全文剩余中文仅 547 行头注释、0 条行尾注释。bootstrap 三重重编 SUCCESS;全量 77/77 顺序回归通过。
59 lines
3.1 KiB
Plaintext
59 lines
3.1 KiB
Plaintext
import t, c
|
||
from openssl.types import *
|
||
|
||
# ============================================================
|
||
# openssl/pem.vp — PEM 编解码
|
||
# 对应头文件: pem.h
|
||
#
|
||
# 全部走 BIO 输入(PEM_read_bio_*);证书/密钥的 x 出参可为 NULL
|
||
# (函数返回新对象)。回调 cb 用 bytes(Viper 传 t.CPtr(0))。
|
||
# ============================================================
|
||
|
||
# ---- X509 certificate ----
|
||
# X509 *PEM_read_bio_X509(BIO *bp, X509 **x, pem_password_cb *cb, void *u)
|
||
extern def PEM_read_bio_X509(bp: BioPtr, x: bytes, cb: bytes, u: bytes) -> X509Ptr
|
||
# int PEM_write_bio_X509(BIO *bp, X509 *x)
|
||
extern def PEM_write_bio_X509(bp: BioPtr, x: X509Ptr) -> int
|
||
# X509 *PEM_read_bio_X509_AUX(BIO *bp, X509 **x, pem_password_cb *cb, void *u)
|
||
extern def PEM_read_bio_X509_AUX(bp: BioPtr, x: bytes, cb: bytes, u: bytes) -> X509Ptr
|
||
# int PEM_write_bio_X509_AUX(BIO *bp, X509 *x)
|
||
extern def PEM_write_bio_X509_AUX(bp: BioPtr, x: X509Ptr) -> int
|
||
|
||
# ---- Private / public key (generic EVP_PKEY container) ----
|
||
# EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u)
|
||
extern def PEM_read_bio_PrivateKey(bp: BioPtr, x: bytes, cb: bytes, u: bytes) -> EvpPkeyPtr
|
||
# int PEM_write_bio_PrivateKey(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
|
||
# const unsigned char *kstr, int klen, pem_password_cb *cb, void *u)
|
||
extern def PEM_write_bio_PrivateKey(bp: BioPtr, x: EvpPkeyPtr, enc: EvpCipherPtr,
|
||
kstr: bytes, klen: int, cb: bytes, u: bytes) -> int
|
||
# EVP_PKEY *PEM_read_bio_PUBKEY(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u)
|
||
extern def PEM_read_bio_PUBKEY(bp: BioPtr, x: bytes, cb: bytes, u: bytes) -> EvpPkeyPtr
|
||
# int PEM_write_bio_PUBKEY(BIO *bp, EVP_PKEY *x)
|
||
extern def PEM_write_bio_PUBKEY(bp: BioPtr, x: EvpPkeyPtr) -> int
|
||
|
||
# ---- Legacy RSA private key (still exported in OpenSSL 3.x, for old files) ----
|
||
# RSA *PEM_read_bio_RSAPrivateKey(BIO *bp, RSA **x, pem_password_cb *cb, void *u)
|
||
extern def PEM_read_bio_RSAPrivateKey(bp: BioPtr, x: bytes, cb: bytes, u: bytes) -> bytes
|
||
# int PEM_write_bio_RSAPrivateKey(BIO *bp, RSA *x, const EVP_CIPHER *enc,
|
||
# const unsigned char *kstr, int klen, pem_password_cb *cb, void *u)
|
||
extern def PEM_write_bio_RSAPrivateKey(bp: BioPtr, x: bytes, enc: EvpCipherPtr,
|
||
kstr: bytes, klen: int, cb: bytes, u: bytes) -> int
|
||
|
||
# ---- Certificate request / CRL ----
|
||
# X509_REQ *PEM_read_bio_X509_REQ(BIO *bp, X509_REQ **x, pem_password_cb *cb, void *u)
|
||
extern def PEM_read_bio_X509_REQ(bp: BioPtr, x: bytes, cb: bytes, u: bytes) -> X509ReqPtr
|
||
# X509_CRL *PEM_read_bio_X509_CRL(BIO *bp, X509_CRL **x, pem_password_cb *cb, void *u)
|
||
extern def PEM_read_bio_X509_CRL(bp: BioPtr, x: bytes, cb: bytes, u: bytes) -> X509CrlPtr
|
||
|
||
# ---- Convenience readers (caller passes no x out-param / cb) ----
|
||
def pem_read_bio_x509_simple(bp: BioPtr) -> X509Ptr:
|
||
return PEM_read_bio_X509(bp, None, None, None)
|
||
|
||
|
||
def pem_read_bio_privkey_simple(bp: BioPtr) -> EvpPkeyPtr:
|
||
return PEM_read_bio_PrivateKey(bp, None, None, None)
|
||
|
||
|
||
def pem_read_bio_pubkey_simple(bp: BioPtr) -> EvpPkeyPtr:
|
||
return PEM_read_bio_PUBKEY(bp, None, None, None)
|