Skip to content

Commit 0285e39

Browse files
committed
Add tests for SSlib Signer
Signed-off-by: Martin Vrachev <[email protected]>
1 parent 919b3d2 commit 0285e39

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

tests/test_signer.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
#!/usr/bin/env python
2+
3+
"""
4+
<Program Name>
5+
test_signer.py
6+
7+
<Author>
8+
Martin Vrachev <[email protected]>
9+
10+
<Started>
11+
February, 04 2021
12+
13+
<Copyright>
14+
See LICENSE for licensing information.
15+
16+
<Purpose>
17+
Test cases for 'signer.py'.
18+
"""
19+
20+
import unittest
21+
import securesystemslib.formats
22+
import securesystemslib.keys as KEYS
23+
from securesystemslib.signer import SSlibSigner
24+
25+
26+
class TestSSlibSigner(unittest.TestCase):\
27+
28+
@classmethod
29+
def setUpClass(cls):
30+
cls.rsakey_dict = KEYS.generate_rsa_key()
31+
cls.ed25519key_dict = KEYS.generate_ed25519_key()
32+
cls.ecdsakey_dict = KEYS.generate_ecdsa_key()
33+
cls.DATA_STR = 'SOME DATA REQUIRING AUTHENTICITY.'
34+
cls.DATA = securesystemslib.formats.encode_canonical(cls.DATA_STR).encode(
35+
'utf-8')
36+
cls.FORMAT_ERROR_MSG = 'securesystemslib.exceptions.FormatError was raised!' + \
37+
' Check object\'s format.'
38+
39+
40+
def test_sslib_sign(self):
41+
# Test generation of RSA signatures.
42+
sslib_signer = SSlibSigner(self.rsakey_dict)
43+
rsa_sig_obj = sslib_signer.sign(self.DATA)
44+
45+
# Verify rsa signature
46+
verified = KEYS.verify_signature(self.rsakey_dict,
47+
rsa_sig_obj.to_dict(), self.DATA)
48+
49+
# Verify rsa signature
50+
verified = KEYS.verify_signature(self.rsakey_dict,
51+
rsa_sig_obj.to_dict(), self.DATA)
52+
self.assertTrue(verified, "Incorrect signature.")
53+
54+
# Test for invalid signature scheme.
55+
valid_scheme = self.rsakey_dict['scheme']
56+
self.rsakey_dict['scheme'] = 'invalid_scheme'
57+
sslib_signer.key_dict = self.rsakey_dict
58+
59+
self.assertRaises(securesystemslib.exceptions.UnsupportedAlgorithmError,
60+
sslib_signer.sign, self.DATA)
61+
self.rsakey_dict['scheme'] = valid_scheme
62+
63+
# Removing private key from 'rsakey_dict' - should raise a TypeError.
64+
private = self.rsakey_dict['keyval']['private']
65+
self.rsakey_dict['keyval']['private'] = ''
66+
sslib_signer.key_dict = self.rsakey_dict
67+
68+
self.assertRaises(ValueError, sslib_signer.sign, self.DATA)
69+
70+
# Supplying an incorrect number of arguments.
71+
self.assertRaises(TypeError, KEYS.create_signature)
72+
self.rsakey_dict['keyval']['private'] = private
73+
74+
# Test generation of ECDSA signatures.
75+
76+
sslib_signer.key_dict = self.ecdsakey_dict
77+
# Creating a signature for 'DATA'.
78+
ecdsa_sig = sslib_signer.sign(self.DATA)
79+
80+
# Verify rsa signature
81+
verified = KEYS.verify_signature(self.ecdsakey_dict,
82+
ecdsa_sig.to_dict(), self.DATA)
83+
84+
# Verify rsa signature
85+
verified = KEYS.verify_signature(self.ecdsakey_dict,
86+
ecdsa_sig.to_dict(), self.DATA)
87+
self.assertTrue(verified, "Incorrect signature.")
88+
89+
# Removing private key from 'ecdsakey_dict' - should raise a TypeError.
90+
private = self.ecdsakey_dict['keyval']['private']
91+
self.ecdsakey_dict['keyval']['private'] = ''
92+
93+
self.assertRaises(ValueError, sslib_signer.sign, self.DATA)
94+
95+
# Supplying an incorrect number of arguments.
96+
self.assertRaises(TypeError, sslib_signer.sign)
97+
self.ecdsakey_dict['keyval']['private'] = private
98+
99+
100+
# Run the unit tests.
101+
if __name__ == '__main__':
102+
unittest.main()

0 commit comments

Comments
 (0)