PHP PKCS12 文件解析到 Go 语言实现
是的,您可以将这段 PHP 代码转换成 Go 语言。以下是一个可能的 Go 语言代码实现:\n\ngo\nimport (\n "io/ioutil"\n "crypto/x509"\n "crypto/rsa"\n "crypto/rand"\n "encoding/pem"\n "errors"\n)\n\nfunc loadPk12Cert(path string, pwd []byte) (*rsa.PrivateKey, error) {\n file, err := ioutil.ReadFile(path)\n if err != nil {\n return nil, errors.New("loadPk12Cert::ioutil.ReadFile ERROR")\n }\n\n blocks, err := pkcs12.ToPEM(file, string(pwd))\n if err != nil {\n return nil, errors.New("loadPk12Cert::pkcs12.ToPEM ERROR")\n }\n\n var privateKey *rsa.PrivateKey\n for _, block := range blocks {\n if block.Type == "RSA PRIVATE KEY" {\n parsedKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)\n if err != nil {\n return nil, errors.New("loadPk12Cert::x509.ParsePKCS1PrivateKey ERROR")\n }\n privateKey = parsedKey\n break\n }\n }\n\n if privateKey == nil {\n return nil, errors.New("loadPk12Cert::Private key not found")\n }\n\n return privateKey, nil\n}\n\nfunc main() {\n privateKey, err := loadPk12Cert("path/to/cert.p12", []byte("password"))\n if err != nil {\n panic(err)\n }\n // 使用 privateKey 进行后续操作\n}\n\n\n请注意,此代码使用github.com/pavel-v-chernykh/keystore-go/v4/pkcs12包来处理PKCS12文件。您需要先安装该包,您可以使用以下命令:\n\nbash\ngo get github.com/pavel-v-chernykh/keystore-go/v4/pkcs12\n\n\n此外,由于Go语言没有直接的等效函数来解析PKCS12文件,因此我们需要使用第三方包来处理此操作。上述代码使用了github.com/pavel-v-chernykh/keystore-go/v4/pkcs12包进行PKCS12解析。
原文地址: https://www.cveoy.top/t/topic/pNc9 著作权归作者所有。请勿转载和采集!