/*
-tofuproxy -- HTTP proxy with TLS certificates management
-Copyright (C) 2021 Sergey Matveev <stargrave@stargrave.org>
+tofuproxy -- flexible HTTP/HTTPS proxy, TLS terminator, X.509 TOFU
+ manager, WARC/geminispace browser
+Copyright (C) 2021-2023 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
package main
import (
- "crypto/ecdsa"
- "crypto/elliptic"
+ "crypto/ed25519"
"crypto/rand"
"crypto/x509"
"crypto/x509/pkix"
func main() {
cn := flag.String("cn", "tofuproxy.localhost", "CommonName")
- crtPath := flag.String("cert", "cert.pem", "Path to server X.509 certificate")
- prvPath := flag.String("key", "prv.pem", "Path to server PKCS#8 private key")
flag.Parse()
log.SetFlags(log.Lshortfile)
- prv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
+ pub, prv, err := ed25519.GenerateKey(rand.Reader)
if err != nil {
log.Fatalln(err)
}
- pub := prv.Public()
notBefore := time.Now()
notAfter := notBefore.Add(365 * 24 * time.Hour)
log.Fatalln(err)
}
- fd, err := os.OpenFile(*prvPath, os.O_WRONLY|os.O_CREATE, 0600)
+ err = pem.Encode(os.Stdout, &pem.Block{Type: "PRIVATE KEY", Bytes: pkcs8})
if err != nil {
log.Fatalln(err)
}
- err = pem.Encode(fd, &pem.Block{Type: "PRIVATE KEY", Bytes: pkcs8})
- if err != nil {
- log.Fatalln(err)
- }
- fd.Close()
-
- fd, err = os.OpenFile(*crtPath, os.O_WRONLY|os.O_CREATE, 0600)
- err = pem.Encode(fd, &pem.Block{Type: "CERTIFICATE", Bytes: certRaw})
+ err = pem.Encode(os.Stdout, &pem.Block{Type: "CERTIFICATE", Bytes: certRaw})
if err != nil {
log.Fatalln(err)
}