Heim > Backend-Entwicklung > Golang > Wie marshaliere ich einen privaten PKCS8-Schlüssel in Go 1.5?

Wie marshaliere ich einen privaten PKCS8-Schlüssel in Go 1.5?

Mary-Kate Olsen
Freigeben: 2024-10-30 03:02:02
Original
258 Leute haben es durchsucht

How to Marshal a PKCS8 Private Key in Go 1.5?

Marshalling eines privaten PKCS8-Schlüssels in Go

Go 1.5 fehlt eine Standardfunktion zum Marshallen privater PKCS8-Schlüssel. Wir können jedoch stattdessen eine benutzerdefinierte Lösung nutzen.

Um einen PKCS8-Schlüssel zu marshalieren, definieren wir eine benutzerdefinierte Struktur pkcs8Key, die das PKCS8-Format darstellt. Es enthält Felder für die Version, den Algorithmus des privaten Schlüssels und die tatsächlichen Bytes des privaten Schlüssels.

Für RSA-Schlüssel verwenden wir die Funktion rsa2pkcs8, um sie in das PKCS8-Format zu konvertieren. Diese Funktion setzt die Version auf 0, weist die entsprechende OID des privaten Schlüsselalgorithmus zu und marshallt den PKCS1-formatierten privaten Schlüssel.

<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>
Nach dem Login kopieren

Diese benutzerdefinierte Lösung ermöglicht es uns, private PKCS8-Schlüssel programmgesteuert zu marshalieren, auch wenn Go fehlt eine offizielle Funktion zu diesem Zweck.

Das obige ist der detaillierte Inhalt vonWie marshaliere ich einen privaten PKCS8-Schlüssel in Go 1.5?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage