diff --git a/handler/generate_certificate.go b/handler/generate_certificate.go index 54364e9f767976ba703820da6e2125662cfaf566..c14ac82013ef126eb4ecdcf3bbcf1bf07f09a8f9 100644 --- a/handler/generate_certificate.go +++ b/handler/generate_certificate.go @@ -75,7 +75,9 @@ func (s *KeyStorageServerImpl) GenerateCertificate(ctx context.Context, in *api. func generateCertificate(publicKeyBytes []byte, caCertFilePath string, caPrivateKeyFilePath string, certificateData *api.GenerateCertificateRequest_CertificateData) ([]byte, error) { - publicKey, err := x509.ParsePKIXPublicKey(publicKeyBytes) + publicKeyPemBlock, _ := pem.Decode(publicKeyBytes) + + publicKey, err := x509.ParsePKIXPublicKey(publicKeyPemBlock.Bytes) if err != nil { return nil, err } diff --git a/handler/generate_keypair.go b/handler/generate_keypair.go index 65a26562768a1422f3c4c70af7d6617db09d5993..febe5ab1d1b1f124b7630d9b7aff16a7d0c170f9 100644 --- a/handler/generate_keypair.go +++ b/handler/generate_keypair.go @@ -24,6 +24,7 @@ import ( "crypto/rsa" "crypto/sha256" "crypto/x509" + "encoding/pem" "code.vereign.com/code/viam-apis/data-storage-agent/client" "code.vereign.com/code/viam-apis/key-storage-agent/api" @@ -129,15 +130,30 @@ func generateKeyPair(keySize int) ([]byte, []byte, error) { publicKey := &privateKey.PublicKey - privateKeyBytes, err := x509.MarshalPKCS8PrivateKey(privateKey) + pkcs8PrivateKeyBytes, err := x509.MarshalPKCS8PrivateKey(privateKey) if err != nil { return nil, nil, err } - publicKeyBytes, err := x509.MarshalPKIXPublicKey(publicKey) + + privateKeyPemBlock := &pem.Block{ + Type: "RSA PRIVATE KEY", + Bytes: pkcs8PrivateKeyBytes, + } + + privateKeyBytes := pem.EncodeToMemory(privateKeyPemBlock) + + pkixPublicKeyBytes, err := x509.MarshalPKIXPublicKey(publicKey) if err != nil { return nil, nil, err } + publicKeyPemBlock := &pem.Block{ + Type: "RSA PRIVATE KEY", + Bytes: pkixPublicKeyBytes, + } + + publicKeyBytes := pem.EncodeToMemory(publicKeyPemBlock) + return privateKeyBytes, publicKeyBytes, nil }