def test_signing(tmpdir, key_size, algo_id): private_key, public_key = make_rsa_keypair(key_size) message_p = tmpdir.join('message.txt') message_p.write('hello world') mar_p = tmpdir.join('test.mar') with mar_p.open('w+b') as f: with MarWriter(f, signing_key=private_key, channel='release', productversion='99.9', signing_algorithm=algo_id) as m: with tmpdir.as_cwd(): m.add('message.txt') assert mar_p.size() > 0 with mar_p.open('rb') as f: with MarReader(f) as m: assert m.mardata.additional.count == 1 assert m.mardata.signatures.count == 1 assert len(m.mardata.index.entries) == 1 assert m.mardata.index.entries[0].name == 'message.txt' m.extract(str(tmpdir.join('extracted'))) assert (tmpdir.join('extracted', 'message.txt').read('rb') == b'hello world') assert m.verify(public_key)
def test_main_create_signed_badkeysize(tmpdir): priv, pub = make_rsa_keypair(1024) tmpdir.join('hello.txt').write('hello world') tmpdir.join('key.pem').write(priv) with tmpdir.as_cwd(): with raises(SystemExit): cli.main(['--productversion', 'foo', '--channel', 'bar', '-k', 'key.pem', '-c', 'test.mar', 'hello.txt'])
def test_bad_keysize(key_size, signer, verifier): priv, pub = make_rsa_keypair(key_size) with pytest.raises(ValueError): verifier(pub, b'') with pytest.raises(ValueError): signer(priv)
def test_main_create_signed_v1(tmpdir, key_size): priv, pub = make_rsa_keypair(key_size) tmpdir.join('hello.txt').write('hello world') tmpdir.join('key.pem').write(priv) with tmpdir.as_cwd(): cli.main([ '--productversion', 'foo', '--channel', 'bar', '-k', 'key.pem', '-c', 'test.mar', 'hello.txt' ]) cli.main(['-v', 'test.mar', '-k', 'key.pem'])
def mar_sha384(tmpdir_factory): """MAR signed with SHA384""" tmpdir = tmpdir_factory.mktemp('data') message_p = tmpdir.join('message.txt') message_p.write('hello world') mar_p = tmpdir.join('test_sha384.mar') private_key, public_key = make_rsa_keypair(4096) with mar_p.open('w+b') as f: with MarWriter(f, signing_key=private_key, channel='release', productversion='99.9', signing_algorithm='sha384') as m: with tmpdir.as_cwd(): m.add('message.txt') return mar_p
def test_verify_wrongkey(): private, public = make_rsa_keypair(2048) with MarReader(open(TEST_MAR_BZ2, 'rb')) as m: assert not m.verify(public)
def test_keys(): return { 2048: make_rsa_keypair(2048), 4096: make_rsa_keypair(4096), }
def test_verify_with_privatekey(key_size, signer, verifier): priv, pub = make_rsa_keypair(key_size) assert verifier(priv, b'')
def test_good_keysize(key_size, signer, verifier): priv, pub = make_rsa_keypair(key_size) assert verifier(pub, b'') assert signer(priv)