fix messagekit serializer

pull/1555/head
damon 2020-01-07 14:15:45 -08:00
parent f570146b12
commit a439ad83f5
1 changed files with 12 additions and 3 deletions

View File

@ -1,15 +1,24 @@
from marshmallow import fields
from typing import Union
from base64 import b64decode, b64encode
from marshmallow import fields
from nucypher.crypto.kits import UmbralMessageKit
class MessageKitField(fields.Field):
def _serialize(self, value, attr, obj, **kwargs):
return b64encode(bytes(value)).decode()
def _serialize(self, value: UmbralMessageKit, attr, obj, **kwargs):
return b64encode(value.to_bytes()).decode()
def _deserialize(self, value, attr, data, **kwargs):
if isinstance(value, bytes):
return value
return b64decode(value)
def _validate(self, value):
try:
umbral_key = UmbralMessageKit.from_bytes(value)
return True
except Exception as e:
return False
fields.MessageKit = MessageKitField