Provide specialized error message when signing or verifying ed25519
signatures and pynacl is not installed (LP: #1854475)
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
Version 1.0.1
|
Version 1.0.1
|
||||||
- Follow CNAMES when looking up key records when using DNS (pydns)
|
- Follow CNAMES when looking up key records when using DNS (pydns)
|
||||||
(LP: #1856421)
|
(LP: #1856421)
|
||||||
|
- Provide specialized error message when signing or verifying ed25519
|
||||||
|
signatures and pynacl is not installed (LP: #1854475)
|
||||||
|
|
||||||
2019-12-09 Version 1.0.0
|
2019-12-09 Version 1.0.0
|
||||||
- Add support for RFC 8460 tlsrpt DKIM signature processing (LP: #1847020)
|
- Add support for RFC 8460 tlsrpt DKIM signature processing (LP: #1847020)
|
||||||
|
|||||||
@@ -139,6 +139,11 @@ need not be considered experimental. The dkimpy implementation has
|
|||||||
successfully interoperated with three other implementations and the technical
|
successfully interoperated with three other implementations and the technical
|
||||||
parameters for ed25519-sha256 are defined and stable.
|
parameters for ed25519-sha256 are defined and stable.
|
||||||
|
|
||||||
|
To install from pypi with the required optional depenencies, use the ed25519
|
||||||
|
option:
|
||||||
|
|
||||||
|
```pip install -e '.[ed25519]'```
|
||||||
|
|
||||||
## DKIM SCRIPTS
|
## DKIM SCRIPTS
|
||||||
|
|
||||||
Three helper programs are also supplied: dknewkey, dkimsign and
|
Three helper programs are also supplied: dknewkey, dkimsign and
|
||||||
|
|||||||
+6
-1
@@ -184,7 +184,6 @@ class NaClNotFoundError(DKIMException):
|
|||||||
""" Nacl package not installed, needed for ed25119 signatures """
|
""" Nacl package not installed, needed for ed25119 signatures """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class UnknownKeyTypeError(DKIMException):
|
class UnknownKeyTypeError(DKIMException):
|
||||||
""" Key type (k tag) is not known (rsa/ed25519) """
|
""" Key type (k tag) is not known (rsa/ed25519) """
|
||||||
|
|
||||||
@@ -443,7 +442,10 @@ def evaluate_pk(name, s):
|
|||||||
pass
|
pass
|
||||||
try:
|
try:
|
||||||
if pub[b'k'] == b'ed25519':
|
if pub[b'k'] == b'ed25519':
|
||||||
|
try:
|
||||||
pk = nacl.signing.VerifyKey(pub[b'p'], encoder=nacl.encoding.Base64Encoder)
|
pk = nacl.signing.VerifyKey(pub[b'p'], encoder=nacl.encoding.Base64Encoder)
|
||||||
|
except NameError:
|
||||||
|
raise NaClNotFoundError('pynacl module required for ed25519 signing, see README.md')
|
||||||
keysize = 256
|
keysize = 256
|
||||||
ktag = b'ed25519'
|
ktag = b'ed25519'
|
||||||
except KeyError:
|
except KeyError:
|
||||||
@@ -826,7 +828,10 @@ class DKIM(DomainSigner):
|
|||||||
except UnparsableKeyError as e:
|
except UnparsableKeyError as e:
|
||||||
raise KeyFormatError(str(e))
|
raise KeyFormatError(str(e))
|
||||||
elif self.signature_algorithm == b'ed25519-sha256':
|
elif self.signature_algorithm == b'ed25519-sha256':
|
||||||
|
try:
|
||||||
pk = nacl.signing.SigningKey(privkey, encoder=nacl.encoding.Base64Encoder)
|
pk = nacl.signing.SigningKey(privkey, encoder=nacl.encoding.Base64Encoder)
|
||||||
|
except NameError:
|
||||||
|
raise NaClNotFoundError('pynacl module required for ed25519 signing, see README.md')
|
||||||
|
|
||||||
if identity is not None and not identity.endswith(domain):
|
if identity is not None and not identity.endswith(domain):
|
||||||
raise ParameterError("identity must end with domain")
|
raise ParameterError("identity must end with domain")
|
||||||
|
|||||||
Reference in New Issue
Block a user