Refactor private key internal storage, it is now part of the milterconfig dict
This commit is contained in:
+10
-12
@@ -52,8 +52,6 @@ class dkimMilter(Milter.Base):
|
|||||||
self.id = Milter.uniqueID()
|
self.id = Milter.uniqueID()
|
||||||
# we don't want config used to change during a connection
|
# we don't want config used to change during a connection
|
||||||
self.conf = milterconfig
|
self.conf = milterconfig
|
||||||
self.privatersa = privateRSA
|
|
||||||
self.privateed25519 = privateEd25519
|
|
||||||
self.fp = None
|
self.fp = None
|
||||||
self.fdomain = ''
|
self.fdomain = ''
|
||||||
|
|
||||||
@@ -232,10 +230,10 @@ class dkimMilter(Milter.Base):
|
|||||||
# None or empty. DKIM explicitly tests for None.
|
# None or empty. DKIM explicitly tests for None.
|
||||||
sign_headers = None
|
sign_headers = None
|
||||||
try:
|
try:
|
||||||
if privateRSA:
|
if milterconfig.get('privateRSA'):
|
||||||
d = dkim.DKIM(txt)
|
d = dkim.DKIM(txt)
|
||||||
h = d.sign(codecs.encode(milterconfig.get('Selector'), 'ascii'), codecs.encode(self.fdomain, 'ascii'),
|
h = d.sign(codecs.encode(milterconfig.get('Selector'), 'ascii'), codecs.encode(self.fdomain, 'ascii'),
|
||||||
codecs.encode(privateRSA, 'ascii'),
|
codecs.encode(milterconfig.get('privateRSA'), 'ascii'),
|
||||||
canonicalize=(canonicalize[0],
|
canonicalize=(canonicalize[0],
|
||||||
canonicalize[1]),
|
canonicalize[1]),
|
||||||
include_headers=sign_headers)
|
include_headers=sign_headers)
|
||||||
@@ -249,10 +247,10 @@ class dkimMilter(Milter.Base):
|
|||||||
d.signature_fields.get(b'a').decode(),
|
d.signature_fields.get(b'a').decode(),
|
||||||
d.signature_fields.get(b's').decode(),
|
d.signature_fields.get(b's').decode(),
|
||||||
d.domain.decode().lower()))
|
d.domain.decode().lower()))
|
||||||
if privateEd25519:
|
if milterconfig.get('privateEd25519'):
|
||||||
d = dkim.DKIM(txt)
|
d = dkim.DKIM(txt)
|
||||||
h = d.sign(codecs.encode(milterconfig.get('SelectorEd25519'), 'ascii'), codecs.encode(self.fdomain, 'ascii'),
|
h = d.sign(codecs.encode(milterconfig.get('SelectorEd25519'), 'ascii'), codecs.encode(self.fdomain, 'ascii'),
|
||||||
privateEd25519, canonicalize=(canonicalize[0],
|
milterconfig.get('privateEd25519'), canonicalize=(canonicalize[0],
|
||||||
canonicalize[1]),
|
canonicalize[1]),
|
||||||
include_headers=sign_headers,
|
include_headers=sign_headers,
|
||||||
signature_algorithm=b'ed25519-sha256')
|
signature_algorithm=b'ed25519-sha256')
|
||||||
@@ -376,10 +374,6 @@ def _get_parent_domain(fdomain, domains):
|
|||||||
def main():
|
def main():
|
||||||
# Ugh, but there's no easy way around this.
|
# Ugh, but there's no easy way around this.
|
||||||
global milterconfig
|
global milterconfig
|
||||||
global privateRSA
|
|
||||||
global privateEd25519
|
|
||||||
privateRSA = False
|
|
||||||
privateEd25519 = False
|
|
||||||
configFile = '/usr/local/etc/dkimpy-milter.conf'
|
configFile = '/usr/local/etc/dkimpy-milter.conf'
|
||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
if (sys.argv[1] in ('-?', '--help', '-h')) or len(sys.argv) == 3 or \
|
if (sys.argv[1] in ('-?', '--help', '-h')) or len(sys.argv) == 3 or \
|
||||||
@@ -399,9 +393,13 @@ def main():
|
|||||||
setExceptHook()
|
setExceptHook()
|
||||||
pid = write_pid(milterconfig)
|
pid = write_pid(milterconfig)
|
||||||
if milterconfig.get('KeyFile'):
|
if milterconfig.get('KeyFile'):
|
||||||
privateRSA = read_keyfile(milterconfig, 'RSA')
|
milterconfig['privateRSA'] = read_keyfile(milterconfig, 'RSA')
|
||||||
|
else:
|
||||||
|
milterconfig['privateRSA'] = False
|
||||||
if milterconfig.get('KeyFileEd25519'):
|
if milterconfig.get('KeyFileEd25519'):
|
||||||
privateEd25519 = read_keyfile(milterconfig, 'Ed25519')
|
milterconfig['privateEd25519'] = read_keyfile(milterconfig, 'Ed25519')
|
||||||
|
else:
|
||||||
|
milterconfig['privateEd25519'] = False
|
||||||
Milter.factory = dkimMilter
|
Milter.factory = dkimMilter
|
||||||
Milter.set_flags(Milter.CHGHDRS + Milter.ADDHDRS)
|
Milter.set_flags(Milter.CHGHDRS + Milter.ADDHDRS)
|
||||||
miltername = 'dkimpy-filter'
|
miltername = 'dkimpy-filter'
|
||||||
|
|||||||
Reference in New Issue
Block a user