diff options
Diffstat (limited to 'crypto/x509/csr.go')
-rw-r--r-- | crypto/x509/csr.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/crypto/x509/csr.go b/crypto/x509/csr.go new file mode 100644 index 0000000..76ea809 --- /dev/null +++ b/crypto/x509/csr.go | |||
@@ -0,0 +1,28 @@ | |||
1 | package x509 | ||
2 | |||
3 | import ( | ||
4 | "crypto/rand" | ||
5 | "crypto/rsa" | ||
6 | "crypto/x509" | ||
7 | "crypto/x509/pkix" | ||
8 | ) | ||
9 | |||
10 | const defaultRSAKeyStrength = 4096 | ||
11 | |||
12 | func GenerateRSAKeyCSR(domains ...string) ([]byte, *rsa.PrivateKey, error) { | ||
13 | ckey, err := rsa.GenerateKey(rand.Reader, defaultRSAKeyStrength) | ||
14 | if err != nil { | ||
15 | return nil, nil, err | ||
16 | } | ||
17 | |||
18 | csr, err := x509.CreateCertificateRequest(rand.Reader, &x509.CertificateRequest{ | ||
19 | Subject: pkix.Name{CommonName: domains[0]}, | ||
20 | DNSNames: domains, | ||
21 | ExtraExtensions: []pkix.Extension{}, | ||
22 | }, ckey) | ||
23 | if err != nil { | ||
24 | return nil, nil, err | ||
25 | } | ||
26 | |||
27 | return csr, ckey, nil | ||
28 | } | ||