From 7cb594e75fabc5a990c6477792d4b01185eb4a18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Depierrepont=20aka=20Toorop?= Date: Wed, 27 May 2015 09:21:54 +0200 Subject: [PATCH] fix unfold DKIM header on verify --- dkim.go | 1 - dkimHeader.go | 6 +++++- dkim_test.go | 1 - 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dkim.go b/dkim.go index aa0591f..303ff2b 100644 --- a/dkim.go +++ b/dkim.go @@ -473,7 +473,6 @@ func verifySignature(toSign []byte, sig64 string, key *rsa.PublicKey, algo strin return ErrVerifyInappropriateHashAlgo } - //fmt.Printf("|%s|", toSign) h1.Write(toSign) sig, err := base64.StdEncoding.DecodeString(sig64) if err != nil { diff --git a/dkimHeader.go b/dkimHeader.go index ab7cefb..11563a8 100644 --- a/dkimHeader.go +++ b/dkimHeader.go @@ -315,7 +315,11 @@ func parseDkHeader(header string) (dkh *dkimHeader, err error) { dkh.MessageCanonicalization = "simple/simple" dkh.QueryMethods = []string{"dns/txt"} - fs := strings.Split(keyVal[1], ";") + // unfold && clean + val := removeFWS(keyVal[1]) + val = strings.Replace(val, " ", "", -1) + + fs := strings.Split(val, ";") for _, f := range fs { flagData := strings.SplitN(f, "=", 2) flag := strings.ToLower(strings.TrimSpace(flagData[0])) diff --git a/dkim_test.go b/dkim_test.go index 946eea6..cac6ddd 100644 --- a/dkim_test.go +++ b/dkim_test.go @@ -360,5 +360,4 @@ func Test_Verify(t *testing.T) { status, err = Verify(&email) assert.NoError(t, err) assert.Equal(t, SUCCESS, status) - }