/
tls.go
33 lines (29 loc) · 932 Bytes
/
tls.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package cert
import (
"crypto/tls"
"io"
)
// LoadTLSCertificate parses a public/private key pair from a pair of PEM encoded data.
func LoadTLSCertificate(cert, key []byte) (*tls.Certificate, error) {
crt, err := tls.X509KeyPair(cert, key)
if err != nil {
return nil, err
}
return &crt, nil
}
// ParseTLSCertificateFromReader parses a public/private key pair from a PEM encoded data io.Reader source.
func ParseTLSCertificateFromReader(r io.Reader, opt ...Option) (*tls.Certificate, error) {
crt, key, err := LoadPEMFromReader(r, opt...)
if err != nil {
return nil, err
}
return LoadTLSCertificate(crt, key)
}
// ParseTLSCertificateFromReader parses a public/private key pair from a PEM encoded file.
func ParseTLSCertificateFromFile(path string, opt ...Option) (*tls.Certificate, error) {
crt, key, err := LoadPEMFromFile(path, opt...)
if err != nil {
return nil, err
}
return LoadTLSCertificate(crt, key)
}