github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/cry/rsa_test.go (about)

     1  package cry_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	cry "github.com/bingoohuang/gg/pkg/cry"
     7  )
     8  
     9  // https://golang.org/src/crypto/tls/generate_cert.go
    10  
    11  func TestRSAPemTools(t *testing.T) {
    12  	// Create the key pair.
    13  	privateKey, publicKey := cry.GenerateKeyPair(2048)
    14  
    15  	// Export the keys as PEM.
    16  	privateKeyAsPEM := cry.ExportPrivateKey(privateKey)
    17  	publicKeyAsPEM := cry.ExportPublicKey(publicKey)
    18  
    19  	// Import the keys from PEM.
    20  	privateKeyFromPEM, _ := cry.ParsePrivateKey(privateKeyAsPEM)
    21  	publicKeyFromPEM, _ := cry.ParsePublicKey(publicKeyAsPEM)
    22  
    23  	// Export the imported keys as PEM.
    24  	privateKeyParsedAsPEM := cry.ExportPrivateKey(privateKeyFromPEM)
    25  	publicKeyParsedAsPEM := cry.ExportPublicKey(publicKeyFromPEM)
    26  
    27  	// Test if the exported/imported keys match the original keys.
    28  	if string(privateKeyAsPEM) != string(privateKeyParsedAsPEM) ||
    29  		string(publicKeyAsPEM) != string(publicKeyParsedAsPEM) {
    30  		t.Error("Export and Import did not result in same Keys")
    31  	}
    32  }