mirror of
https://github.com/khairul169/vaulterm.git
synced 2025-04-28 16:49:39 +07:00
38 lines
816 B
Go
38 lines
816 B
Go
package lib
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"crypto/x509"
|
|
"encoding/pem"
|
|
"fmt"
|
|
)
|
|
|
|
func LoadClientCertificate(clientCert string, clientKey string) (*tls.Certificate, error) {
|
|
// Client certificate
|
|
ccb, _ := pem.Decode([]byte(clientCert))
|
|
if ccb == nil {
|
|
return nil, fmt.Errorf("failed to parse client certificate")
|
|
}
|
|
|
|
cert, err := x509.ParseCertificate(ccb.Bytes)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to parse client certificate: %v", err)
|
|
}
|
|
|
|
// Client key
|
|
ckb, _ := pem.Decode([]byte(clientKey))
|
|
if ckb == nil {
|
|
return nil, fmt.Errorf("failed to parse client key")
|
|
}
|
|
|
|
key, err := x509.ParsePKCS8PrivateKey(ckb.Bytes)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to parse client key: %v", err)
|
|
}
|
|
|
|
return &tls.Certificate{
|
|
Certificate: [][]byte{cert.Raw},
|
|
PrivateKey: key,
|
|
}, nil
|
|
}
|