Marshaling des clés privées PKCS8 dans Go
Dans Go, la question de savoir s'il existe un moyen pratique de rassembler les clés privées PKCS8 dans la version 1.5 se pose . Semblable à la fonction x509.MarshalPKCS1PrivateKey, les développeurs recherchent un mécanisme efficace pour convertir les clés privées en données sérialisées.
Bien que Go ne fournisse pas de fonction intégrée à cet effet spécifique, il existe une solution personnalisée qui résout ce problème. exigence :
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) }
Cette fonction personnalisée, rsa2pkcs8, vous permet de convertir un objet rsa.PrivateKey en un tableau d'octets codé PKCS8. Il définit la version sur 0, spécifie l'OID de l'algorithme de chiffrement RSA et intègre la clé privée PKCS1 marshalée dans le champ PrivateKey de la structure pkcs8Key. En appelant asn1.Marshal sur cette structure, vous obtenez les données sérialisées représentant la clé privée PKCS8.
L'utilisation de cette solution donne aux développeurs Go la possibilité de rassembler les clés privées PKCS8, leur fournissant ainsi un utilitaire pratique pour diverses opérations cryptographiques. scénarios d'opérations et d'échange de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!