source: flexoentity/tests/test_signing.py@ d7499ca

Last change on this file since d7499ca was d7499ca, checked in by Enrico Schwass <ennoausberlin@…>, 7 weeks ago

Signature support for Linux and MacOS added

  • Property mode set to 100644
File size: 1.8 KB
Line 
1import platform
2import pytest
3from uuid import uuid4
4from flexoentity import FlexOID, EntityState, EntityType, FlexoSignature, get_signing_backend
5
6def test_sign_and_verify_linux(backend):
7 data = b"Hello Flex-O signing!"
8
9 signature = backend.sign(data)
10 assert isinstance(signature, bytes)
11 assert len(signature) > 20 # sanity check
12
13 assert backend.verify(data, signature) is True
14
15def test_sign_and_verify_macos(backend):
16 data = b"Hello Flex-O signing!"
17
18 signature = backend.sign(data)
19 assert isinstance(signature, bytes)
20 assert len(signature) > 20 # sanity check
21
22 assert backend.verify(data, signature) is True
23
24def test_verify_fails_with_wrong_data(backend):
25 data = b"Original Data"
26 wrong_data = b"Tampered Data"
27
28 signature = backend.sign(data)
29
30 assert backend.verify(data, signature) == True
31 assert backend.verify(wrong_data, signature) == False
32
33def test_verify_fails_with_invalid_signature(backend):
34 data = b"Hello world"
35 invalid_sig = b"\x00\x01\x02garbagepkcs7data"
36
37 assert backend.verify(data, invalid_sig) is False
38
39def test_signature_entity_create_and_verify(backend):
40 entity_id = FlexOID.safe_generate(
41 domain_id="TEST",
42 entity_type=EntityType.ATTESTATION.value,
43 state=EntityState.DRAFT.value,
44 text="abc",
45 version=1,
46 )
47 signer = uuid4()
48 data = b"Hello Entity Signing"
49
50 sig = FlexoSignature.create_signed(
51 data=data,
52 entity=entity_id,
53 signer_id=signer,
54 backend=backend,
55 )
56
57 assert isinstance(sig.signature_data, str)
58 assert sig.signature_type == "PKCS7-DER"
59 assert sig.signed_entity == entity_id
60 assert sig.signer_id == signer
61 assert sig.certificate_thumbprint != ""
62
63 assert sig.verify(data, backend) is True
Note: See TracBrowser for help on using the repository browser.