Exemplo n.º 1
0
    def parse_public(self, input_filename, algo):
        with open(os.path.join(fixtures_dir, input_filename), 'rb') as f:
            parsed = keys.parse_public(f.read())

        self.assertEqual(algo, parsed['algorithm']['algorithm'].native)

        # Make sure we can parse the whole structure
        parsed.native
Exemplo n.º 2
0
    def parse_public(self, input_filename, algo):
        with open(os.path.join(fixtures_dir, input_filename), 'rb') as f:
            parsed = keys.parse_public(f.read())

        self.assertEqual(algo, parsed['algorithm']['algorithm'].native)

        # Make sure we can parse the whole structure
        parsed.native
Exemplo n.º 3
0
    def __init__(self, der_string=None, public_key=None):
        if public_key is None:
            self._public_key = keys.parse_public(der_string)
        else:
            self._public_key = public_key

        self._oscrypto_public_key = asymmetric.load_public_key(
            source=self._public_key)
        self._crypto_public_key = serialization.load_der_public_key(
            data=self.to_der(), backend=default_backend())
Exemplo n.º 4
0
def test_sign_public_only():
    cfg = '''
      root-ca:
        subject: root
        subject-key: root
        issuer: root
        authority-key: root
        validity:
          valid-from: "2000-01-01T00:00:00+0000"
          valid-to: "2500-01-01T00:00:00+0000"
        extensions:
          - id: basic_constraints
            critical: true
            value:
              ca: true
          - id: key_usage
            critical: true
            smart-value:
              schema: key-usage
              params: [digital_signature, key_cert_sign, crl_sign]
      leaf:
          subject: pub-only
          subject-key: split-key-pub
          issuer: root
          authority-key: root
          validity:
            valid-from: "2020-01-01T00:00:00+0000"
            valid-to: "2050-01-01T00:00:00+0000"
          extensions:
            - id: key_usage
              critical: true
              smart-value:
                schema: key-usage
                params: [digital_signature]
    '''

    arch = PKIArchitecture(
        arch_label=ArchLabel('test'),
        key_set=RSA_KEYS,
        entities=ENTITIES,
        cert_spec_config=yaml.safe_load(cfg),
        service_config={},
        external_url_prefix='http://test.test',
    )
    pubkey = arch.get_cert(CertLabel('leaf')).public_key
    with open('tests/data/keys-rsa/split-key-pub.key.pem', 'rb') as inf:
        pubkey_actual = oskeys.parse_public(inf.read())
    assert pubkey.native == pubkey_actual.native
Exemplo n.º 5
0
def parse_der_pubkey(pem_or_der_pubkey):
    return asymmetric.load_public_key(keys.parse_public(pem_or_der_pubkey))
Exemplo n.º 6
0
 def load_public_key(self, key_bytes: bytes) -> keys.PublicKeyInfo:
     from oscrypto import keys as oskeys
     return oskeys.parse_public(key_bytes)
Exemplo n.º 7
0
    def test_parse_public_pem_leading_whitespace(self):
        with open(os.path.join(fixtures_dir, 'keys/test-public-rsa.key'), 'rb') as f:
            parsed = keys.parse_public(b'  \r\n' + f.read())

        # Make sure we can parse the whole structure
        parsed.native