Maison >développement back-end >Golang >Comment rassembler une clé privée PKCS8 dans Go 1.5 ?

Comment rassembler une clé privée PKCS8 dans Go 1.5 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-30 03:02:02258parcourir

How to Marshal a PKCS8 Private Key in Go 1.5?

Rassemblement d'une clé privée PKCS8 dans Go

Go 1.5 ne dispose pas d'une fonction standard pour rassembler les clés privées PKCS8. Cependant, nous pouvons utiliser une solution personnalisée à la place.

Pour rassembler une clé PKCS8, nous définissons une structure personnalisée pkcs8Key qui représente le format PKCS8. Il comprend des champs pour la version, l'algorithme de clé privée et les octets réels de la clé privée.

Pour les clés RSA, nous utilisons la fonction rsa2pkcs8 pour les convertir au format PKCS8. Cette fonction définit la version sur 0, attribue l'OID de l'algorithme de clé privée approprié et rassemble la clé privée au format 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>

Cette solution personnalisée nous permet de rassembler les clés privées PKCS8 par programme, même si Go manque une fonction officielle à cet effet.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn