1# Copyright (c) 2017, The MITRE Corporation. All rights reserved.
2# See LICENSE.txt for complete terms.
3
4from mixbox import entities
5from mixbox import fields
6
7import cybox.bindings.account_object as account_binding
8from cybox.common import ObjectProperties, String, DateTime
9from cybox.common.vocabs import VocabField
10
11
12class StructuredAuthenticationMechanism(entities.Entity):
13    _binding = account_binding
14    _binding_class = account_binding.StructuredAuthenticationMechanismType
15    _namespace = 'http://cybox.mitre.org/objects#AccountObject-2'
16    _XSI_NS = "AccountObj"
17    _XSI_TYPE = "AccountObjectType"
18
19    description = fields.TypedField("Description", String)
20
21
22class Authentication(entities.Entity):
23    _binding = account_binding
24    _binding_class = account_binding.AuthenticationType
25    _namespace = 'http://cybox.mitre.org/objects#AccountObject-2'
26    _XSI_NS = "AccountObj"
27    _XSI_TYPE = "AccountObjectType"
28
29    authentication_type = VocabField("Authentication_Type")
30    authentication_data = fields.TypedField("Authentication_Data", String)
31    authentication_token_protection_mechanism = VocabField("Authentication_Token_Protection_Mechanism")
32    structured_authentication_mechanism = fields.TypedField("Structured_Authentication_Mechanism", StructuredAuthenticationMechanism)
33
34
35class Account(ObjectProperties):
36    _binding = account_binding
37    _binding_class = account_binding.AccountObjectType
38    _namespace = 'http://cybox.mitre.org/objects#AccountObject-2'
39    _XSI_NS = "AccountObj"
40    _XSI_TYPE = "AccountObjectType"
41
42    disabled = fields.TypedField("disabled")
43    locked_out = fields.TypedField("locked_out")
44    description = fields.TypedField("Description", String)
45    domain = fields.TypedField("Domain", String)
46    authentication = fields.TypedField("Authentication", Authentication, multiple=True)
47    creation_date = fields.TypedField("Creation_Date", DateTime)
48    modified_date = fields.TypedField("Modified_Date", DateTime)
49    last_accessed_time = fields.TypedField("Last_Accessed_Time", DateTime)
50