Marshaling von privaten PKCS8-Schlüsseln in Go
In Go stellt sich die Frage, ob es in Version 1.5 eine bequeme Möglichkeit zum Marshallen von privaten PKCS8-Schlüsseln gibt . Ähnlich wie die x509.MarshalPKCS1PrivateKey-Funktion suchen Entwickler nach einem effizienten Mechanismus zum Konvertieren privater Schlüssel in serialisierte Daten.
Obwohl Go keine integrierte Funktion für diesen speziellen Zweck bereitstellt, gibt es eine benutzerdefinierte Lösung, die dieses Problem angeht Anforderung:
type pkcs8Key struct { Version int PrivateKeyAlgorithm []asn1.ObjectIdentifier PrivateKey []byte } func rsa2pkcs8(key *rsa.PrivateKey) ([]byte, error) { var pkey pkcs8Key pkey.Version = 0 // Default version for PKCS8 pkey.PrivateKeyAlgorithm = make([]asn1.ObjectIdentifier, 1) pkey.PrivateKeyAlgorithm[0] = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 1} // RSA encryption algorithm OID pkey.PrivateKey = x509.MarshalPKCS1PrivateKey(key) return asn1.Marshal(pkey) }
Mit dieser benutzerdefinierten Funktion, rsa2pkcs8, können Sie ein rsa.PrivateKey-Objekt in ein PKCS8-codiertes Byte-Array konvertieren. Es setzt die Version auf 0, gibt die OID des RSA-Verschlüsselungsalgorithmus an und bettet den gemarshallten privaten PKCS1-Schlüssel in das PrivateKey-Feld der pkcs8Key-Struktur ein. Durch den Aufruf von asn1.Marshal für diese Struktur erhalten Sie die serialisierten Daten, die den privaten PKCS8-Schlüssel darstellen.
Durch die Verwendung dieser Lösung erhalten Go-Entwickler die Möglichkeit, private PKCS8-Schlüssel zu Marshallen, was ihnen ein praktisches Dienstprogramm für verschiedene kryptografische Funktionen bietet Operationen und Datenaustauschszenarien.
Das obige ist der detaillierte Inhalt vonWie werden private PKCS8-Schlüssel in Go gemarshallt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!