LENGTH_SCHEMA = SCHEMA.Integer(lo=0) # An integer representing logger levels, such as logging.CRITICAL (=50). # Must be between 0 and 50. LOGLEVEL_SCHEMA = SCHEMA.Integer(lo=0, hi=50) # A string representing a named object. NAME_SCHEMA = SCHEMA.AnyString() NAMES_SCHEMA = SCHEMA.ListOf(NAME_SCHEMA) # Supported hash algorithms. HASHALGORITHMS_SCHEMA = SCHEMA.ListOf( SCHEMA.OneOf([ SCHEMA.String('md5'), SCHEMA.String('sha1'), SCHEMA.String('sha224'), SCHEMA.String('sha256'), SCHEMA.String('sha384'), SCHEMA.String('sha512') ])) # The contents of an encrypted TUF key. Encrypted TUF keys are saved to files # in this format. ENCRYPTEDKEY_SCHEMA = SCHEMA.AnyBytes() # A value that is either True or False, on or off, etc. BOOLEAN_SCHEMA = SCHEMA.Boolean() # A role's threshold value (i.e., the minimum number # of signatures required to sign a metadata file). # Must be 1 and greater. THRESHOLD_SCHEMA = SCHEMA.Integer(lo=1)
ECU_SOFTWARE_ASSIGNMENT_SCHEMA = SCHEMA.Object( ecu_serial=ECU_SERIAL_SCHEMA, previous_time=tuf.formats.ISO8601_DATETIME_SCHEMA, #UTC_DATETIME_SCHEMA, current_time=tuf.formats.ISO8601_DATETIME_SCHEMA, security_attack=SCHEMA.Optional(DESCRIPTION_OF_ATTACKS_SCHEMA), #image_type = SCHEMA.OneOf('bootloader', 'application', 'other'), # removed from spec installed_image=tuf.formats.TARGETFILE_SCHEMA) #load_order = SCHEMA.Integer(lo=0, hi=2147483647)) # not in spec # A list of ECU_SOFTWARE_ASSIGNMENT_SCHEMA should be everything that is # required for the director metadata to be written. VEHICLE_SOFTWARE_ASSIGNMENTS_SCHEMA = SCHEMA.ListOf( ECU_SOFTWARE_ASSIGNMENT_SCHEMA) # The format for the timeserver's signed time response will be a # SIGNABLE_SCHEMA (from TUF). THAT in TURN will contain, in field 'signed', one # of these objects: TIMESERVER_ATTESTATION_SCHEMA = SCHEMA.Object(time=ISO8601_DATETIME_SCHEMA, nonces=NONCE_LIST_SCHEMA) SIGNABLE_TIMESERVER_ATTESTATION_SCHEMA = SCHEMA.Object( object_name='SIGNABLE_TIMESERVER_ATTESTATION_SCHEMA', signed=TIMESERVER_ATTESTATION_SCHEMA, signatures=SCHEMA.ListOf(SIGNATURE_SCHEMA)) ANY_SIGNABLE_UPTANE_METADATA_SCHEMA = SCHEMA.OneOf([ SIGNABLE_TIMESERVER_ATTESTATION_SCHEMA, SIGNABLE_VEHICLE_VERSION_MANIFEST_SCHEMA, SIGNABLE_ECU_VERSION_MANIFEST_SCHEMA ])
# A string representing a password. PASSWORD_SCHEMA = SCHEMA.AnyString() # A list of passwords. PASSWORDS_SCHEMA = SCHEMA.ListOf(PASSWORD_SCHEMA) # The actual values of a key, as opposed to meta data such as a key type and # key identifier ('rsa', 233df889cb). For RSA keys, the key value is a pair of # public and private keys in PEM Format stored as strings. KEYVAL_SCHEMA = SCHEMA.Object(object_name='KEYVAL_SCHEMA', public=SCHEMA.AnyString(), private=SCHEMA.AnyString()) # Supported TUF key types. KEYTYPE_SCHEMA = SCHEMA.OneOf([SCHEMA.String('rsa'), SCHEMA.String('ed25519')]) # A generic TUF key. All TUF keys should be saved to metadata files in this # format. KEY_SCHEMA = SCHEMA.Object(object_name='KEY_SCHEMA', keytype=SCHEMA.AnyString(), keyval=KEYVAL_SCHEMA) # A TUF key object. This schema simplifies validation of keys that may be # one of the supported key types. # Supported key types: 'rsa', 'ed25519'. ANYKEY_SCHEMA = SCHEMA.Object(object_name='ANYKEY_SCHEMA', keytype=KEYTYPE_SCHEMA, keyid=KEYID_SCHEMA, keyval=KEYVAL_SCHEMA)