From c0072b1a267912de322f0bc0b9ab7076ee2d1276 Mon Sep 17 00:00:00 2001 From: Jan-Philipp Benecke Date: Tue, 3 Nov 2020 12:58:54 +0100 Subject: [PATCH] Also try to decode priv. key as PKCS8 --- dkim.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/dkim.go b/dkim.go index ab893e3..3ed5c88 100644 --- a/dkim.go +++ b/dkim.go @@ -100,6 +100,7 @@ func NewSigOptions() SigOptions { // Sign signs an email func Sign(email *[]byte, options SigOptions) error { var privateKey *rsa.PrivateKey + var err error // PrivateKey if len(options.PrivateKey) == 0 { @@ -109,11 +110,17 @@ func Sign(email *[]byte, options SigOptions) error { if d == nil { return ErrCandNotParsePrivateKey } - key, err := x509.ParsePKCS1PrivateKey(d.Bytes) - if err != nil { - return ErrCandNotParsePrivateKey + + // try to parse it as PKCS1 otherwise try PKCS8 + if key, err := x509.ParsePKCS1PrivateKey(d.Bytes); err != nil { + if key, err := x509.ParsePKCS8PrivateKey(d.Bytes); err != nil { + return ErrCandNotParsePrivateKey + } else { + privateKey = key.(*rsa.PrivateKey) + } + } else { + privateKey = key } - privateKey = key // Domain required if options.Domain == "" {