lego/acme/tls_sni_challenge.go

45 lines
939 B
Go
Raw Normal View History

2015-11-19 14:26:23 +00:00
package acme
import (
"crypto/sha256"
"crypto/x509"
"encoding/hex"
"net"
)
type tlsSNIChallenge struct {
jws *jws
optPort string
start chan net.Listener
end chan error
}
func (t *tlsSNIChallenge) Solve(chlng challenge, domain string) error {
logf("[INFO] acme: Trying to solve TLS-SNI-01")
// Generate the Key Authorization for the challenge
keyAuth, err := getKeyAuthorization(chlng.Token, &t.jws.privKey.PublicKey)
if err != nil {
return err
}
zet := make([]string, chlng.Iterations)
zetBytes := sha256.Sum256([]byte(keyAuth))
zet[0] = hex.EncodeToString(zetBytes[:sha256.Size])
for i := 1; i < chlng.Iterations; i++ {
zetBytes = sha256.Sum256([]byte(zet[i-1]))
zet[i] = hex.EncodeToString(zetBytes[:sha256.Size])
}
certificates, err := t.generateCertificates(zet)
return nil
}
func (t *tlsSNIChallenge) generateCertificates(zet []string) ([]*x509.Certificate, error) {
return nil, nil
}