Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Marshal Kunci Peribadi PKCS8 dalam Go 1.5?

Bagaimana untuk Marshal Kunci Peribadi PKCS8 dalam Go 1.5?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-30 03:02:02259semak imbas

How to Marshal a PKCS8 Private Key in Go 1.5?

Mengarang Kunci Peribadi PKCS8 dalam Go

Go 1.5 tidak mempunyai fungsi standard untuk menyusun kunci persendirian PKCS8. Walau bagaimanapun, kami boleh memanfaatkan penyelesaian tersuai.

Untuk menyusun kunci PKCS8, kami mentakrifkan struktur tersuai pkcs8Key yang mewakili format PKCS8. Ia termasuk medan untuk versi, algoritma kunci peribadi dan bait kunci peribadi sebenar.

Untuk kunci RSA, kami menggunakan fungsi rsa2pkcs8 untuk menukarnya kepada format PKCS8. Fungsi ini menetapkan versi kepada 0, menetapkan OID algoritma kunci persendirian yang sesuai dan mengawal kunci persendirian berformat PKCS1.

<code class="go">type pkcs8Key struct {
    Version             int
    PrivateKeyAlgorithm []asn1.ObjectIdentifier
    PrivateKey          []byte
}


func rsa2pkcs8(key *rsa.PrivateKey) ([]byte, error) {
    var pkey pkcs8Key
    pkey.Version = 0 
    pkey.PrivateKeyAlgorithm = make([]asn1.ObjectIdentifier, 1)
    pkey.PrivateKeyAlgorithm[0] = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 1}
    pkey.PrivateKey = x509.MarshalPKCS1PrivateKey(key)

    return asn1.Marshal(pkey)
}</code>

Penyelesaian tersuai ini membolehkan kami menyusun kunci persendirian PKCS8 secara pemprograman, walaupun Go kekurangan majlis rasmi untuk tujuan ini.

Atas ialah kandungan terperinci Bagaimana untuk Marshal Kunci Peribadi PKCS8 dalam Go 1.5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn