aboutsummaryrefslogtreecommitdiff
path: root/solve_tls.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-01-27 14:10:56 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-01-27 14:10:56 +0100
commita34f2774f2fca54f1e23589458ad856b426dd787 (patch)
tree7dae9cecf70bd80af0cfdbc1d65fb4c9d166450d /solve_tls.go
parentc187bfb299cc0cf28237f7dbac722ae9c8fbd50b (diff)
Add more bits
Diffstat (limited to 'solve_tls.go')
-rw-r--r--solve_tls.go21
1 files changed, 20 insertions, 1 deletions
diff --git a/solve_tls.go b/solve_tls.go
index 4042433..7e39492 100644
--- a/solve_tls.go
+++ b/solve_tls.go
@@ -3,8 +3,11 @@ package acme
import (
"crypto/rand"
"crypto/rsa"
+ "crypto/sha256"
+ "crypto/tls"
"crypto/x509"
"crypto/x509/pkix"
+ "encoding/hex"
"log"
"math/big"
"net/http"
@@ -22,11 +25,20 @@ type tlsSolver struct {
func NewTLSSolver(addr string) Solver {
s := new(tlsSolver)
- s.Server = http.Server{Addr: addr}
+ s.Server = http.Server{
+ Addr: addr,
+ TLSConfig: &tls.Config{},
+ }
go s.ListenAndServe()
return s
}
+func name(keyAuth string) string {
+ hash := sha256.Sum256([]byte(keyAuth))
+ z := hex.EncodeToString(hash[:])
+ return z[:32] + "." + z[32:64] + tlsSuffix
+}
+
func (s *tlsSolver) Solve(token, keyAuth string) error {
log.Println("solve tls")
tlsKey, err := rsa.GenerateKey(rand.Reader, tlsKeySize)
@@ -48,8 +60,15 @@ func (s *tlsSolver) Solve(token, keyAuth string) error {
KeyUsage: x509.KeyUsageDigitalSignature,
ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
BasicConstraintsValid: true,
+ SignatureAlgorithm: x509.SHA256WithRSA,
+ DNSNames: []string{name(keyAuth)},
}
_, _ = tlsKey, tmpl
+ crt, err := x509.CreateCertificate(rand.Reader, &tmpl, &tmpl, tlsKey.Public(), tlsKey)
+ if err != nil {
+ return err
+ }
+ log.Println(crt)
return errNotImplemented
}