from copy import deepcopy

from lbrynet.schema.proto2 import signature_pb2 as signature_pb
from lbrynet.schema.legacy_schema_v1 import VERSION_MAP
from lbrynet.schema.constants import ECDSA_CURVES
from lbrynet.schema.baseschema import Schema


class Signature(Schema):
    @classmethod
    def load(cls, message):
        _signature = deepcopy(message)
        _message_pb = signature_pb.Signature()
        _message_pb.version = VERSION_MAP[_signature.pop("version")]
        _message_pb.signatureType = ECDSA_CURVES[_signature.pop("signatureType")]
        _message_pb.certificateId = _signature.pop("certificateId")
        _message_pb.signature = _signature.pop("signature")
        return cls._load(_signature, _message_pb)