Esempio n. 1
0
    def test_Any(self):
        # Test conditions for valid arguments.
        any_schema = SCHEMA.Any()

        self.assertTrue(any_schema.matches('test'))
        self.assertTrue(any_schema.matches(123))
        self.assertTrue(any_schema.matches(['test']))
        self.assertTrue(any_schema.matches({'word': 'definition'}))
        self.assertTrue(any_schema.matches(True))
Esempio n. 2
0
  def test_AllOf(self):
    # Test conditions for valid arguments.
    allof_schema = SCHEMA.AllOf([SCHEMA.Any(),
                                     SCHEMA.AnyString(),
                                     SCHEMA.String('a')])

    self.assertTrue(allof_schema.matches('a'))

    # Test conditions for invalid arguments.
    self.assertFalse(allof_schema.matches('b'))

    # Test conditions for invalid arguments in a schema definition.
    self.assertRaises(securesystemslib.exceptions.FormatError, SCHEMA.AllOf, 1)
    self.assertRaises(securesystemslib.exceptions.FormatError, SCHEMA.AllOf, [1])
    self.assertRaises(securesystemslib.exceptions.FormatError, SCHEMA.AllOf, {'a': 1})
    self.assertRaises(securesystemslib.exceptions.FormatError, SCHEMA.AllOf, [SCHEMA.AnyString(), 1])
Esempio n. 3
0
    keyid=KEYID_SCHEMA,
    keyval=SCHEMA.Object(public=GPG_ED25519_PUBKEYVAL_SCHEMA,
                         private=SCHEMA.String("")))
GPG_ED25519_PUBKEY_SCHEMA = _create_gpg_pubkey_with_subkey_schema(
    _GPG_ED25519_PUBKEY_SCHEMA)

GPG_PUBKEY_SCHEMA = SCHEMA.OneOf(
    [GPG_RSA_PUBKEY_SCHEMA, GPG_DSA_PUBKEY_SCHEMA, GPG_ED25519_PUBKEY_SCHEMA])

GPG_SIGNATURE_SCHEMA = SCHEMA.Object(
    object_name="SIGNATURE_SCHEMA",
    keyid=KEYID_SCHEMA,
    short_keyid=SCHEMA.Optional(KEYID_SCHEMA),
    other_headers=HEX_SCHEMA,
    signature=HEX_SCHEMA,
    info=SCHEMA.Optional(SCHEMA.Any()),
)

# A single signature of an object.  Indicates the signature, and the KEYID of
# the signing key.  I debated making the signature schema not contain the key
# ID and instead have the signatures of a file be a dictionary with the key
# being the keyid and the value being the signature schema without the keyid.
# That would be under the argument that a key should only be able to sign a
# file once.
SIGNATURE_SCHEMA = SCHEMA.Object(object_name='SIGNATURE_SCHEMA',
                                 keyid=KEYID_SCHEMA,
                                 sig=HEX_SCHEMA)

# A dict where the dict keys hold a keyid and the dict values a key object.
KEYDICT_SCHEMA = SCHEMA.DictOf(key_schema=KEYID_SCHEMA,
                               value_schema=KEY_SCHEMA)
Esempio n. 4
0
# A dict of roles where the dict keys are role names and the dict values holding
# the role data/information.
ROLEDICT_SCHEMA = SCHEMA.DictOf(key_schema=ROLENAME_SCHEMA,
                                value_schema=ROLE_SCHEMA)

# A dictionary of ROLEDICT, where dictionary keys can be repository names, and
# dictionary values containing information for each role available on the
# repository (corresponding to the repository belonging to named repository in
# the dictionary key)
ROLEDICTDB_SCHEMA = SCHEMA.DictOf(key_schema=sslib_formats.NAME_SCHEMA,
                                  value_schema=ROLEDICT_SCHEMA)

# Command argument list, as used by the CLI tool.
# Example: {'keytype': ed25519, 'expires': 365,}
COMMAND_SCHEMA = SCHEMA.DictOf(key_schema=sslib_formats.NAME_SCHEMA,
                               value_schema=SCHEMA.Any())

# A dictionary holding version information.
VERSION_SCHEMA = SCHEMA.Object(object_name='VERSION_SCHEMA',
                               major=SCHEMA.Integer(lo=0),
                               minor=SCHEMA.Integer(lo=0),
                               fix=SCHEMA.Integer(lo=0))

# A value that is either True or False, on or off, etc.
BOOLEAN_SCHEMA = SCHEMA.Boolean()

# A hexadecimal value in '23432df87ab..' format.
HASH_SCHEMA = SCHEMA.RegularExpression(r'[a-fA-F0-9]+')

# A key identifier (e.g., a hexadecimal value identifying an RSA key).
KEYID_SCHEMA = HASH_SCHEMA
Esempio n. 5
0
DSA_PUBKEYVAL_SCHEMA = ssl_schema.Object(object_name="DSA_PUBKEYVAL_SCHEMA",
                                         y=ssl_formats.HEX_SCHEMA,
                                         p=ssl_formats.HEX_SCHEMA,
                                         q=ssl_formats.HEX_SCHEMA,
                                         g=ssl_formats.HEX_SCHEMA)

# We have to define DSA_PUBKEY_SCHEMA in two steps, because it is
# self-referential. Here we define a shallow _DSA_PUBKEY_SCHEMA, which we use
# below to create the self-referential DSA_PUBKEY_SCHEMA.
_DSA_PUBKEY_SCHEMA = ssl_schema.Object(
    object_name="DSA_PUBKEY_SCHEMA",
    type=ssl_schema.String("dsa"),
    method=ssl_schema.String(PGP_DSA_PUBKEY_METHOD_STRING),
    hashes=ssl_schema.ListOf(ssl_schema.String(GPG_HASH_ALGORITHM_STRING)),
    keyid=ssl_formats.KEYID_SCHEMA,
    keyval=ssl_schema.Object(public=DSA_PUBKEYVAL_SCHEMA,
                             private=ssl_schema.String("")))
DSA_PUBKEY_SCHEMA = _create_pubkey_with_subkey_schema(_DSA_PUBKEY_SCHEMA)

PUBKEY_SCHEMA = ssl_schema.OneOf([RSA_PUBKEY_SCHEMA, DSA_PUBKEY_SCHEMA])

SIGNATURE_SCHEMA = ssl_schema.Object(
    object_name="SIGNATURE_SCHEMA",
    keyid=ssl_formats.KEYID_SCHEMA,
    short_keyid=ssl_schema.Optional(ssl_formats.KEYID_SCHEMA),
    other_headers=ssl_formats.HEX_SCHEMA,
    signature=ssl_formats.HEX_SCHEMA,
    info=ssl_schema.Optional(ssl_schema.Any()),
)