diff --git a/misp_modules/modules/event/sign.py b/misp_modules/modules/event/sign.py new file mode 100755 index 00000000..af0bcd10 --- /dev/null +++ b/misp_modules/modules/event/sign.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- + +import json + +from pymisp import MISPEvent, EncodeUpdate + +misperrors = {'error': 'Error'} + +moduleinfo = {'version': '0.1', 'author': 'Raphaël Vinot', + 'description': 'Sign a MISP Event', + 'module-type': ['event']} + +moduleconfig = ['uid', 'passphrase'] + +''' +NOTE: +* requires pyme3 + dependencies +* working gpg-agent +* private key for signing +''' + + +def handler(q=False): + if q is False: + return False + request = json.loads(q) # Assuming request has two keys: config & mispevent (mispevent being the json dump of the event) + mispevent = MISPEvent() + mispevent.load(request['mispevent']) + mispevent.sign(request['config']['uid'], request['config']['passphrase']) + return json.dumps(mispevent, cls=EncodeUpdate) + + +def introspection(): + return moduleconfig + + +def version(): + moduleinfo['config'] = moduleconfig + return moduleinfo diff --git a/misp_modules/modules/event/verify.py b/misp_modules/modules/event/verify.py new file mode 100755 index 00000000..b76545f1 --- /dev/null +++ b/misp_modules/modules/event/verify.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- + +import json + +from pymisp import MISPEvent + +misperrors = {'error': 'Error'} + +moduleinfo = {'version': '0.1', 'author': 'Raphaël Vinot', + 'description': 'Verify the signature of a MISP Event', + 'module-type': ['event']} + +moduleconfig = ['uid'] + +''' +NOTE: +* requires pyme3 + dependencies +* working gpg-agent +* the public key which signed the event in the keyring +''' + + +def handler(q=False): + if q is False: + return False + request = json.loads(q) # Assuming request has two keys: config & mispevent (mispevent being the json dump of the event) + mispevent = MISPEvent() + mispevent.load(request['mispevent']) + mispevent.verify(mispevent.Org['uuid']) + # TODO: what do we return there? + # return json.dumps(mispevent, cls=EncodeUpdate) + + +def introspection(): + return moduleconfig + + +def version(): + moduleinfo['config'] = moduleconfig + return moduleinfo