+var (
+ CmdCerttool = "certtool"
+ CmdWish = "wish8.6"
+
+ Certs string
+ accepted = make(map[string]string)
+ acceptedM sync.RWMutex
+ rejected = make(map[string]string)
+ rejectedM sync.RWMutex
+ VerifyM sync.Mutex
+)
+
+func spkiHash(cert *x509.Certificate) string {
+ hsh := sha256.Sum256(cert.RawSubjectPublicKeyInfo)
+ return hex.EncodeToString(hsh[:])
+}
+
+func acceptedAdd(addr, h string) {
+ acceptedM.Lock()
+ accepted[addr] = h
+ acceptedM.Unlock()
+}
+
+func rejectedAdd(addr, h string) {
+ rejectedM.Lock()
+ rejected[addr] = h
+ rejectedM.Unlock()
+}
+
+type ErrRejected struct {
+ addr string
+}
+
+func (err ErrRejected) Error() string { return err.addr + " was rejected" }
+