MCPcopy Create free account
hub / github.com/MertJSX/folderhost / GenerateSelfSignedCert

Function GenerateSelfSignedCert

utils/cert.go:15–61  ·  view source on GitHub ↗
(certPath, keyPath string)

Source from the content-addressed store, hash-verified

13)
14
15func GenerateSelfSignedCert(certPath, keyPath string) error {
16 priv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
17 if err != nil {
18 return err
19 }
20
21 template := x509.Certificate{
22 SerialNumber: big.NewInt(1),
23 Subject: pkix.Name{
24 Organization: []string{"FolderHost Self-Signed"},
25 },
26 NotBefore: time.Now(),
27 NotAfter: time.Now().Add(365 * 24 * time.Hour * 10), // 10 years
28 KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
29 ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
30 BasicConstraintsValid: true,
31 }
32
33 derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, &priv.PublicKey, priv)
34 if err != nil {
35 return err
36 }
37
38 certOut, err := os.Create(certPath)
39 if err != nil {
40 return err
41 }
42 defer certOut.Close()
43 if err := pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}); err != nil {
44 return err
45 }
46
47 keyOut, err := os.OpenFile(keyPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
48 if err != nil {
49 return err
50 }
51 defer keyOut.Close()
52 privBytes, err := x509.MarshalPKCS8PrivateKey(priv)
53 if err != nil {
54 return err
55 }
56 if err := pem.Encode(keyOut, &pem.Block{Type: "PRIVATE KEY", Bytes: privBytes}); err != nil {
57 return err
58 }
59
60 return nil
61}

Callers 1

mainFunction · 0.92

Calls

no outgoing calls

Tested by

no test coverage detected