Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/tests/test_misc.doctest
blob: ea20a0381cb403338f32b85ac217cf5b107288fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
test_misc.doctest - miscellaneous tests

Copyright (C) 2014-2015 Arthur de Jong

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA


>>> from binascii import b2a_hex
>>> def tostr(x):
...     return str(x.decode())
>>> def decode(f):
...     return lambda x: tostr(f(x))
>>> b2a_hex = decode(b2a_hex)

>>> from pskc import PSKC


This tests the most minimal valid PSKC file with one empty key.

>>> try:
...     from StringIO import StringIO
... except ImportError:
...     from io import StringIO
>>> minimal_pskc = StringIO('''
... <?xml version="1.0"?>
... <KeyContainer xmlns="urn:ietf:params:xml:ns:keyprov:pskc" Version="1.0">
...   <KeyPackage/>
... </KeyContainer>
... '''.strip())
>>> pskc = PSKC(minimal_pskc)
>>> [key.id for key in pskc.keys]
[None]


Check creation of empty PSKC structure and adding an empty key to the list.

>>> pskc = PSKC()
>>> key = pskc.add_key(id='123')
>>> key.id
'123'
>>> key.secret is None
True


Adding a key with unknown attributes raises an error.

>>> key = pskc.add_key(foo='bar')
Traceback (most recent call last):
    ...
AttributeError


Setting secret, counter, etc. also works

>>> key = pskc.add_key(secret='VERYSECRET')
>>> key.counter = 10
>>> key.secret
'VERYSECRET'
>>> key.counter
10


Load an PSKC file with an odd namespace.

>>> pskc = PSKC('tests/odd-namespace.pskcxml')
>>> pskc.version
'1.0'
>>> pskc.id
'exampleID1'
>>> key = pskc.keys[0]
>>> key.id
'12345678'
>>> key.issuer
'Issuer-A'
>>> tostr(key.secret)
'1234'


Load a PSKC file that uses the xenc11 namespace for the PBKDF2 parameters.

>>> pskc = PSKC('tests/SampleFullyQualifiedNS.xml')
>>> pskc.encryption.key_name
'PassPhrase'
>>> pskc.encryption.derive_key('3FCA3158035072D6')
>>> key = pskc.keys[0]
>>> b2a_hex(key.secret)
'09fbecfd0bf47910839e2eb05ffa10b95cd0390950ce32ab790583ed134171e0'
>>> key.check()
True