Multiple updates
Some checks failed
rolling-release / build (push) Has been cancelled
rolling-release / rolling-release (push) Has been cancelled

This commit is contained in:
Dmitrii Okunev
2025-07-12 22:21:28 +01:00
parent 2ae50b98db
commit 1004082fe4
48 changed files with 1930 additions and 659 deletions

View File

@@ -0,0 +1,44 @@
package cert
import (
"crypto/ed25519"
"crypto/rand"
"crypto/tls"
"crypto/x509"
"crypto/x509/pkix"
"encoding/pem"
"math/big"
"time"
)
func GenerateSelfSignedForServer() (tls.Certificate, error) {
pub, priv, err := ed25519.GenerateKey(rand.Reader)
if err != nil {
return tls.Certificate{}, err
}
tmpl := x509.Certificate{
SerialNumber: big.NewInt(1),
Subject: pkix.Name{
Organization: []string{"DX.center"},
},
NotBefore: time.Now(),
NotAfter: time.Now().Add(10 * 365 * 24 * time.Hour),
KeyUsage: x509.KeyUsageDigitalSignature,
ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
DNSNames: []string{"wingout.dx.center"},
}
certDER, err := x509.CreateCertificate(rand.Reader, &tmpl, &tmpl, pub, priv)
if err != nil {
return tls.Certificate{}, err
}
keyBytes, err := x509.MarshalPKCS8PrivateKey(priv)
certPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certDER})
keyPEM := pem.EncodeToMemory(&pem.Block{Type: "PRIVATE KEY", Bytes: keyBytes})
return tls.X509KeyPair(certPEM, keyPEM)
}