From 7ede4a110efddfd401b48b20cdf2ebcf89a165ad Mon Sep 17 00:00:00 2001 From: Arthur de Jong Date: Mon, 21 Mar 2016 21:12:57 +0100 Subject: Add tests for writing encrypted PSKC files --- tests/test_write.doctest | 175 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) diff --git a/tests/test_write.doctest b/tests/test_write.doctest index b4cc634..352e93d 100644 --- a/tests/test_write.doctest +++ b/tests/test_write.doctest @@ -165,3 +165,178 @@ Read an encrypted PSKC file and write it out as an unencrypted file. + + +Read an encrypted PSKC file and write it out as-is. This does not require +providing the encryption key. + +>>> pskc = PSKC('tests/rfc6030/figure6.pskcxml') +>>> pskc.write(sys.stdout) #doctest: +REPORT_UDIFF + + + + Pre-shared-key + + + + + + ESIzRFVmd4iZABEiM0RVZgKn6WjLaTC1sbeBMSvIhRejN9vJa2BOlSaMrR7I5wSX + + + + + + Manufacturer + 987654321 + + + CM_ID_001 + + + Issuer + + + + + + + + + AAECAwQFBgcICQoLDA0OD+cIHItlB3Wra1DUpxVvOx2lef1VmNPCMl8jwZqIUqGv + + + Su+NvtQfmvfJzF6bmQiJqoLRExc= + + + 0 + + + + + + + +Set up an encrypted PSKC file and generate a pre-shared key for it. + +>>> pskc = PSKC() +>>> key = pskc.add_key( +... id='1', serial='123456', secret='1234', counter=42) +>>> pskc.encryption.setup_preshared_key( +... key_name='Pre-shared KEY', fields = ['secret', 'counter']) +>>> f = tempfile.NamedTemporaryFile() +>>> pskc.write(f.name) +>>> x = sys.stdout.write(open(f.name, 'r').read()) #doctest: +ELLIPSIS +REPORT_UDIFF + + + + Pre-shared KEY + + + + + + ... + + + + + + 123456 + + + + + + + + ... + + + ... + + + + + + ... + + + ... + + + + + + + +Read the generated file back in and verify that it matches the original data. + +>>> newpskc = PSKC(f.name) +>>> newpskc.encryption.algorithm == pskc.encryption.algorithm +True +>>> newpskc.encryption.key = pskc.encryption.key +>>> all(newkey.check() for newkey in newpskc.keys) +True +>>> key = pskc.keys[0] +>>> newkey = newpskc.keys[0] +>>> newkey.secret == key.secret +True +>>> newkey.counter == key.counter +True + + +Use PBKDF2 to derive a key instead of using a pre-shared key. + +>>> pskc = PSKC() +>>> key = pskc.add_key( +... id='1', serial='123456', secret='1234', counter=42) +>>> pskc.encryption.setup_pbkdf2( +... 'passphrase', key_name='Passphrase') +>>> pskc.write(sys.stdout) #doctest: +ELLIPSIS +REPORT_UDIFF + + + + + + + + ... + + 12000 + 16 + + + Passphrase + + + + + + + ... + + + + + + 123456 + + + + + + + + ... + + + ... + + + 42 + + + + + -- cgit v1.2.3