signature failure fix: makeitworksomehowwithoutregardforkeycontinuity

This commit is contained in:
Ted Unangst 2019-04-20 16:12:41 -04:00
parent 3cf015d636
commit 6cbbc38a4d
3 changed files with 23 additions and 8 deletions

10
fun.go
View File

@ -22,6 +22,7 @@ import (
"html"
"html/template"
"log"
"net/http"
"regexp"
"strings"
"sync"
@ -303,6 +304,15 @@ func zaggy(keyname string) (key *rsa.PublicKey) {
return
}
func makeitworksomehowwithoutregardforkeycontinuity(keyname string, r *http.Request, payload []byte) (string, error) {
db := opendatabase()
db.Exec("delete from xonkers where xid = ?", keyname)
ziggylock.Lock()
delete(zaggies, keyname)
ziggylock.Unlock()
return zag(r, payload)
}
func thoudostbitethythumb(userid int64, who string) bool {
where := ""
m := re_unurl.FindStringSubmatch(who)

17
honk.go
View File

@ -301,12 +301,17 @@ func inbox(w http.ResponseWriter, r *http.Request) {
keyname, err := zag(r, payload)
if err != nil {
log.Printf("inbox message failed signature: %s", err)
fd, _ := os.OpenFile("savedinbox.json", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
io.WriteString(fd, "bad signature:\n")
WriteJunk(fd, j)
io.WriteString(fd, "\n")
fd.Close()
return
if keyname != "" {
keyname, err = makeitworksomehowwithoutregardforkeycontinuity(keyname, r, payload)
}
if err != nil {
fd, _ := os.OpenFile("savedinbox.json", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
io.WriteString(fd, "bad signature:\n")
WriteJunk(fd, j)
io.WriteString(fd, "\n")
fd.Close()
return
}
}
what, _ := jsongetstring(j, "type")
if what == "Like" {

4
zig.go
View File

@ -124,7 +124,7 @@ func zag(req *http.Request, content []byte) (string, error) {
key := zaggy(keyname)
if key == nil {
return "", fmt.Errorf("no key for %s", keyname)
return keyname, fmt.Errorf("no key for %s", keyname)
}
headers := strings.Split(heads, " ")
var stuff []string
@ -146,7 +146,7 @@ func zag(req *http.Request, content []byte) (string, error) {
sig := b64s(bsig)
err := rsa.VerifyPKCS1v15(key, crypto.SHA256, h.Sum(nil), sig)
if err != nil {
return "", err
return keyname, err
}
return keyname, nil
}