class APIV1_HandshakeAnonymousAnswerSchema(BaseSchema): handshake = fields.CheckedConstant("answer", required=True) type = fields.EnumCheckedConstant(APIV1_HandshakeType.ANONYMOUS, required=True) client_api_version = ApiVersionField(required=True) organization_id = OrganizationIDField(required=True) # Cannot provide rvk during organization bootstrap rvk = fields.VerifyKey(missing=None)
class HandshakeInvitedAnswerSchema(BaseSchema): handshake = fields.CheckedConstant("answer", required=True) type = fields.EnumCheckedConstant(HandshakeType.INVITED, required=True) client_api_version = ApiVersionField(required=True) organization_id = OrganizationIDField(required=True) invitation_type = InvitationTypeField(required=True) token = fields.UUID(required=True)
class APIV1_HandshakeAuthenticatedAnswerSchema(BaseSchema): handshake = fields.CheckedConstant("answer", required=True) type = fields.EnumCheckedConstant(APIV1_HandshakeType.AUTHENTICATED, required=True) client_api_version = ApiVersionField(required=True) organization_id = OrganizationIDField(required=True) device_id = DeviceIDField(required=True) rvk = fields.VerifyKey(required=True) answer = fields.Bytes(required=True)
class SCHEMA_CLS(BaseSchema): type = fields.CheckedConstant("device_claim_answer", required=True) private_key = fields.PrivateKey(required=True) user_manifest_id = EntryIDField(required=True) user_manifest_key = fields.SecretKey(required=True) @post_load def make_obj(self, data): data.pop("type") return APIV1_DeviceClaimAnswerContent(**data)
class SCHEMA_CLS(BaseSchema): type = fields.CheckedConstant("invite_device_data", required=True) # Claimer ask for device_label, but greeter has final word on this requested_device_label = fields.String(allow_none=True, missing=None) verify_key = fields.VerifyKey(required=True) @post_load def make_obj(self, data): data.pop("type") return InviteDeviceData(**data)
class SCHEMA_CLS(BaseSchema): type = fields.CheckedConstant("device_claim", required=True) token = fields.String(required=True) device_id = DeviceIDField(required=True) verify_key = fields.VerifyKey(required=True) answer_public_key = fields.PublicKey(required=True) @post_load def make_obj(self, data): data.pop("type") return APIV1_DeviceClaimContent(**data)
class SCHEMA_CLS(BaseSchema): type = fields.CheckedConstant("user_claim", required=True) token = fields.String(required=True) # Note claiming user also imply creating a first device device_id = DeviceIDField(required=True) public_key = fields.PublicKey(required=True) verify_key = fields.VerifyKey(required=True) @post_load def make_obj(self, data): data.pop("type") return APIV1_UserClaimContent(**data)
class SCHEMA_CLS(BaseSchema): type = fields.CheckedConstant("invite_user_confirmation", required=True) device_id = DeviceIDField(required=True) device_label = fields.String(allow_none=True, missing=None) human_handle = HumanHandleField(allow_none=True, missing=None) profile = UserProfileField(required=True) root_verify_key = fields.VerifyKey(required=True) @post_load def make_obj(self, data): data.pop("type") return InviteUserConfirmation(**data)
class SCHEMA_CLS(BaseSchema): type = fields.CheckedConstant("invite_user_data", required=True) # Claimer ask for device_label/human_handle, but greeter has final word on this requested_device_label = fields.String(allow_none=True, missing=None) requested_human_handle = HumanHandleField(allow_none=True, missing=None) # Note claiming user also imply creating a first device public_key = fields.PublicKey(required=True) verify_key = fields.VerifyKey(required=True) @post_load def make_obj(self, data): data.pop("type") return InviteUserData(**data)
class DeviceFileSchema(BaseSchema): type = fields.CheckedConstant("password", required=True) salt = fields.Bytes(required=True) ciphertext = fields.Bytes(required=True) # Since human_handle/device_label has been introduced, device_id is # redacted (i.e. user_id and device_name are 2 random uuids), hence # those fields have been added to the device file so the login page in # the GUI can use them to provide useful information. human_handle = HumanHandleField(allow_none=True, missing=None) device_label = fields.String(allow_none=True, missing=None) # Store device and organization ID in the device file # For legacy versions, this information is available in the file name device_id = DeviceIDField(allow_none=True, missing=None) organization_id = OrganizationIDField(allow_none=True, missing=None) root_verify_key_hash = fields.String(allow_none=True, missing=None)
class BaseRepSchema(BaseSchema): status = fields.CheckedConstant("ok", required=True)
class HandshakeResultSchema(BaseSchema): handshake = fields.CheckedConstant("result", required=True) result = fields.String(required=True) help = fields.String(missing=None)
class APIV1_HandshakeAdministrationAnswerSchema(BaseSchema): handshake = fields.CheckedConstant("answer", required=True) type = fields.EnumCheckedConstant(APIV1_HandshakeType.ADMINISTRATION, required=True) client_api_version = ApiVersionField(required=True) token = fields.String(required=True)
class HandshakeAnswerVersionOnlySchema(BaseSchema): handshake = fields.CheckedConstant("answer", required=True) client_api_version = ApiVersionField(required=True)
class HandshakeChallengeSchema(BaseSchema): handshake = fields.CheckedConstant("challenge", required=True) challenge = fields.Bytes(required=True) supported_api_versions = fields.List(ApiVersionField(), required=True)