go-gemini/examples/cert.go

44 lines
779 B
Go
Raw Normal View History

2020-10-12 20:34:52 +00:00
// +build ignore
2020-09-27 17:50:48 +00:00
2020-12-18 05:47:30 +00:00
// This example illustrates a certificate generation tool.
2020-09-27 17:50:48 +00:00
package main
import (
2020-11-05 20:38:41 +00:00
"crypto/x509/pkix"
2020-10-28 17:47:52 +00:00
"fmt"
2020-09-27 17:50:48 +00:00
"log"
2020-10-13 20:50:59 +00:00
"os"
2020-09-28 03:49:41 +00:00
"time"
2020-09-27 17:50:48 +00:00
2021-01-15 02:23:13 +00:00
"git.sr.ht/~adnano/go-gemini/certificate"
2020-09-27 17:50:48 +00:00
)
func main() {
2020-10-28 17:47:52 +00:00
if len(os.Args) < 3 {
fmt.Printf("usage: %s [hostname] [duration]\n", os.Args[0])
os.Exit(1)
}
host := os.Args[1]
duration, err := time.ParseDuration(os.Args[2])
if err != nil {
log.Fatal(err)
}
2021-01-15 02:23:13 +00:00
options := certificate.CreateOptions{
2020-11-05 20:38:41 +00:00
Subject: pkix.Name{
CommonName: host,
},
2020-10-28 17:47:52 +00:00
DNSNames: []string{host},
Duration: duration,
}
2021-01-15 02:23:13 +00:00
cert, err := certificate.Create(options)
2020-09-27 17:50:48 +00:00
if err != nil {
log.Fatal(err)
}
2020-11-01 19:19:18 +00:00
certPath := host + ".crt"
keyPath := host + ".key"
2021-01-15 02:23:13 +00:00
if err := certificate.Write(cert, certPath, keyPath); err != nil {
2020-09-27 17:50:48 +00:00
log.Fatal(err)
}
}