MCPcopy Create free account
hub / github.com/IceFireDB/IceFireDB / generateCA

Function generateCA

IceFireDB-SQLite/pkg/mysql/server/ssl.go:99–133  ·  view source on GitHub ↗

generate CA in PEM see: https://github.com/golang/go/blob/master/src/crypto/tls/generate_cert.go

()

Source from the content-addressed store, hash-verified

97// generate CA in PEM
98// see: https://github.com/golang/go/blob/master/src/crypto/tls/generate_cert.go
99func generateCA() ([]byte, []byte) {
100 serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)
101 serialNumber, err := rand.Int(rand.Reader, serialNumberLimit)
102 if err != nil {
103 panic(err)
104 }
105 template := &x509.Certificate{
106 SerialNumber: serialNumber,
107 Subject: pkix.Name{
108 Organization: []string{"ORGANIZATION_NAME"},
109 Country: []string{"COUNTRY_CODE"},
110 Province: []string{"PROVINCE"},
111 Locality: []string{"CITY"},
112 StreetAddress: []string{"ADDRESS"},
113 PostalCode: []string{"POSTAL_CODE"},
114 },
115 NotBefore: time.Now(),
116 NotAfter: time.Now().AddDate(10, 0, 0),
117 IsCA: true,
118 ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth, x509.ExtKeyUsageServerAuth},
119 KeyUsage: x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign | x509.KeyUsageKeyEncipherment,
120 BasicConstraintsValid: true,
121 }
122
123 priv, _ := rsa.GenerateKey(rand.Reader, 2048)
124 derBytes, err := x509.CreateCertificate(rand.Reader, template, template, &priv.PublicKey, priv)
125 if err != nil {
126 panic(err)
127 }
128
129 caPem := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: derBytes})
130 caKey := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)})
131
132 return caPem, caKey
133}

Callers 1

NewDefaultServerFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected