package fasthttp
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"crypto/x509/pkix"
"encoding/pem"
"math/big"
"time"
)
func GenerateTestCertificate (host string ) ([]byte , []byte , error ) {
priv , err := rsa .GenerateKey (rand .Reader , 2048 )
if err != nil {
return nil , nil , err
}
serialNumberLimit := new (big .Int ).Lsh (big .NewInt (1 ), 128 )
serialNumber , err := rand .Int (rand .Reader , serialNumberLimit )
if err != nil {
return nil , nil , err
}
cert := &x509 .Certificate {
SerialNumber : serialNumber ,
Subject : pkix .Name {
Organization : []string {"fasthttp test" },
},
NotBefore : time .Now (),
NotAfter : time .Now ().Add (365 * 24 * time .Hour ),
KeyUsage : x509 .KeyUsageCertSign | x509 .KeyUsageDigitalSignature ,
ExtKeyUsage : []x509 .ExtKeyUsage {x509 .ExtKeyUsageServerAuth , x509 .ExtKeyUsageClientAuth },
SignatureAlgorithm : x509 .SHA256WithRSA ,
DNSNames : []string {host },
BasicConstraintsValid : true ,
IsCA : true ,
}
certBytes , err := x509 .CreateCertificate (
rand .Reader , cert , cert , &priv .PublicKey , priv ,
)
p := pem .EncodeToMemory (
&pem .Block {
Type : "PRIVATE KEY" ,
Bytes : x509 .MarshalPKCS1PrivateKey (priv ),
},
)
b := pem .EncodeToMemory (
&pem .Block {
Type : "CERTIFICATE" ,
Bytes : certBytes ,
},
)
return b , p , err
}
The pages are generated with Golds v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .