Skip to content

Commit efbe94c

Browse files
committed
Get files ready for 0.4 release
1 parent 0c57335 commit efbe94c

File tree

4 files changed

+378
-2
lines changed

4 files changed

+378
-2
lines changed

ChangeLog

Lines changed: 356 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,359 @@
1+
2016-03-26 Arthur de Jong <[email protected]>
2+
3+
* [0c57335] docs/policy.rst: Document may_use() policy function
4+
5+
2016-03-27 Arthur de Jong <[email protected]>
6+
7+
* [b4a6c72] : Implement writing encrypted files
8+
9+
This adds support for setting up encryption keys and password-based
10+
key derivation when writing PSKC files. Also MAC keys are set
11+
up when needed.
12+
13+
2016-03-26 Arthur de Jong <[email protected]>
14+
15+
* [59aa65b] README, docs/conf.py, docs/encryption.rst, docs/mac.rst,
16+
docs/usage.rst, pskc/__init__.py: Document writing encrypted files
17+
18+
2016-03-21 Arthur de Jong <[email protected]>
19+
20+
* [5f32528] tests/test_write.doctest: Add encryption error tests
21+
22+
2016-03-21 Arthur de Jong <[email protected]>
23+
24+
* [7ede4a1] tests/test_write.doctest: Add tests for writing
25+
encrypted PSKC files
26+
27+
2016-03-20 Arthur de Jong <[email protected]>
28+
29+
* [1ff3237] pskc/encryption.py: Allow configuring a pre-shared key
30+
31+
This method allows configuring a pre-shared encryption key and
32+
will chose reasonable defaults for needed encryption values
33+
(e.g. it will choose an algorithm, generate a new key of the
34+
appropriate length if needed, etc.).
35+
36+
2016-03-19 Arthur de Jong <[email protected]>
37+
38+
* [50414a3] pskc/encryption.py, tests/test_encryption.doctest:
39+
Allow configuring PBKDF2 key derivation
40+
41+
This factors out the PBKDF2 key derivation to a separate function
42+
and introduces a function to configure KeyDerivation instances
43+
with PBKDF2.
44+
45+
2016-03-21 Arthur de Jong <[email protected]>
46+
47+
* [5ac9d43] pskc/mac.py, tests/test_encryption.doctest: Allow
48+
configuring a MAC key
49+
50+
This method will set up a MAC key and algorithm as specified or
51+
use reasonable defauts.
52+
53+
2016-03-20 Arthur de Jong <[email protected]>
54+
55+
* [16da531] pskc/key.py, pskc/mac.py: Generate MAC values
56+
57+
2016-03-20 Arthur de Jong <[email protected]>
58+
59+
* [ca0fa36] pskc/__init__.py, pskc/encryption.py, pskc/mac.py:
60+
Write MACMethod
61+
62+
This also makes the MAC.algorithm a property similarly as what
63+
is done for Encryption (normalise algorithm names) and adds a
64+
setter for the MAC.key property.
65+
66+
2016-03-21 Arthur de Jong <[email protected]>
67+
68+
* [8fd35ba] pskc/encryption.py, pskc/key.py: Write out encrypted
69+
values
70+
71+
The Encryption class now has a fields property that lists the
72+
fields that should be encrypted when writing the PSKC file.
73+
74+
This adds an encrypt_value() function that performs the encryption
75+
and various functions to convert the plain value to binary before
76+
writing the encrypted XML elements.
77+
78+
2016-03-20 Arthur de Jong <[email protected]>
79+
80+
* [eba541e] pskc/__init__.py, pskc/encryption.py, pskc/mac.py:
81+
Make Encryption and MAC constructors consistent
82+
83+
This removes calling parse() from the Encryption and MAC
84+
constructors and stores a reference to the PSKC object in both
85+
objects so it can be used later on.
86+
87+
2016-03-20 Arthur de Jong <[email protected]>
88+
89+
* [fe21231] pskc/__init__.py, pskc/encryption.py,
90+
tests/test_write.doctest: Write encryption key information
91+
92+
This writes information about a pre-shared key or PBKDF2 key
93+
derivation in the PSKC file. This also means that writing
94+
a decrypted version of a previously encrypted file requires
95+
actively removing the encryption.
96+
97+
2016-03-19 Arthur de Jong <[email protected]>
98+
99+
* [0893640] pskc/encryption.py, tests/test_misc.doctest: Add
100+
algorithm_key_lengths property
101+
102+
This property on the Encryption object provides a list of key
103+
sizes (in bytes) that the configured encryption algorithm supports.
104+
105+
2016-03-22 Arthur de Jong <[email protected]>
106+
107+
* [8b5f6c2] pskc/policy.py, tests/test_misc.doctest,
108+
tests/test_rfc6030.doctest, tests/test_write.doctest: Also check
109+
key expiry in may_use()
110+
111+
2016-03-20 Arthur de Jong <[email protected]>
112+
113+
* [dfa57ae] pskc2csv.py: Support reading password or key in pskc2csv
114+
115+
This supports reading the encryption password or key from the
116+
command line or from a file.
117+
118+
2014-06-28 Arthur de Jong <[email protected]>
119+
120+
* [0744222] pskc/xml.py: Copy namespaces to toplevel element
121+
122+
Ensure that when writing an XML file all namespace definitions
123+
are on the toplevel KeyContainer element instead of scattered
124+
throughout the XML document.
125+
126+
2016-03-19 Arthur de Jong <[email protected]>
127+
128+
* [e8ef157] pskc/__init__.py, tests/test_write.doctest: Support
129+
writing to text streams in Python 3
130+
131+
This supports writing the XML output to binary streams as well
132+
as text streams in Python 3.
133+
134+
2016-03-19 Arthur de Jong <[email protected]>
135+
136+
* [cadc6d9] pskc/key.py, pskc/mac.py,
137+
tests/invalid/encryption.pskcxml,
138+
tests/invalid/missing-encryption.pskcxml,
139+
tests/invalid/not-boolean.pskcxml,
140+
tests/invalid/not-integer.pskcxml,
141+
tests/invalid/not-integer2.pskcxml,
142+
tests/invalid/unknown-encryption.pskcxml, tests/test_aeskw.doctest,
143+
tests/test_encryption.doctest, tests/test_invalid.doctest,
144+
tests/test_misc.doctest, tests/test_rfc6030.doctest,
145+
tests/test_tripledeskw.doctest, tests/test_write.doctest:
146+
Improve tests and test coverage
147+
148+
This adds tests to ensure that incorrect attribute and value
149+
types in the PSKC file raise a ValueError exception and extends
150+
the tests for invalid encryption options.
151+
152+
This removes some code or adds no cover directives to a few
153+
places that have unreachable code or are Python version specific
154+
and places doctest directives inside the doctests where needed.
155+
156+
2016-03-19 Arthur de Jong <[email protected]>
157+
158+
* [b8905e0] pskc/key.py, pskc/xml.py, tests/misc/checkdigits.pskcxml,
159+
tests/test_misc.doctest: Support both CheckDigit and CheckDigits
160+
161+
RFC 6030 is not clear about whether the attribute of
162+
ChallengeFormat and ResponseFormat should be the singular
163+
CheckDigit or the plural CheckDigits. This ensures that both
164+
forms are accepted.
165+
166+
2016-03-19 Arthur de Jong <[email protected]>
167+
168+
* [7915c55] pskc/policy.py, tests/misc/policy.pskcxml,
169+
tests/test_misc.doctest: Implement policy checking
170+
171+
This checks for unknown policy elements in the PSKC file and
172+
will cause the key usage policy check to fail.
173+
174+
2016-03-18 Arthur de Jong <[email protected]>
175+
176+
* [1687fd6] tests/feitian/20120919-test001-4282.xml,
177+
tests/feitian/file1.pskcxml, tests/nagraid/file1.pskcxml,
178+
tests/test_vendors.doctest: Add a few tests for vendor files
179+
180+
Some vendor-specific files were lifted from the LinOTP test suite
181+
and another Feitian file was found in the oath-toolkit repository.
182+
183+
2016-01-31 Arthur de Jong <[email protected]>
184+
185+
* [aae8a18] pskc/key.py, tests/misc/integers.pskcxml,
186+
tests/test_misc.doctest: Support various integer representations
187+
188+
This extends support for handling various encoding methods for
189+
integer values in PSKC files. For encrypted files the decrypted
190+
value is first tried to be evaluated as an ASCII representation
191+
of the number and after that big-endian decoded.
192+
193+
For plaintext values first ASCII decoding is tried after which
194+
base64 decoding is tried which tries the same encodings as for
195+
decrypted values.
196+
197+
There should be no possibility for any base64 encoded value
198+
(either of an ASCII value or a big-endian value) to be interpreted
199+
as an ASCII value for any 32-bit integer.
200+
201+
There is a possibility that a big-endian encoded integer could
202+
be incorrectly interpreted as an ASCII value but this is only
203+
the case for 110 numbers when only considering 6-digit numbers.
204+
205+
2016-01-24 Arthur de Jong <[email protected]>
206+
207+
* [c86aaea] README, pskc/__init__.py,
208+
tests/SampleFullyQualifiedNS.xml, tests/aes128-cbc.pskcxml,
209+
tests/aes192-cbc.pskcxml, tests/aes256-cbc.pskcxml,
210+
tests/draft-hoyer-keyprov-pskc-algorithm-profiles-01/actividentity-3des.pskcxml,
211+
tests/draft-hoyer-keyprov-pskc-algorithm-profiles-01/ocra.pskcxml,
212+
tests/draft-hoyer-keyprov-pskc-algorithm-profiles-01/securid-aes-counter.pskcxml,
213+
tests/draft-hoyer-keyprov-pskc-algorithm-profiles-01/totp.pskcxml,
214+
tests/draft-keyprov-actividentity-3des.pskcxml,
215+
tests/draft-keyprov-ocra.pskcxml,
216+
tests/draft-keyprov-securid-aes-counter.pskcxml,
217+
tests/draft-keyprov-totp.pskcxml,
218+
tests/encryption/aes128-cbc.pskcxml,
219+
tests/encryption/aes192-cbc.pskcxml,
220+
tests/encryption/aes256-cbc.pskcxml,
221+
tests/encryption/kw-aes128.pskcxml,
222+
tests/encryption/kw-aes192.pskcxml,
223+
tests/encryption/kw-aes256.pskcxml,
224+
tests/encryption/kw-tripledes.pskcxml,
225+
tests/encryption/tripledes-cbc.pskcxml,
226+
tests/invalid-encryption.pskcxml,
227+
tests/invalid-mac-algorithm.pskcxml,
228+
tests/invalid-mac-value.pskcxml,
229+
tests/invalid-no-mac-method.pskcxml, tests/invalid-notxml.pskcxml,
230+
tests/invalid-wrongelement.pskcxml,
231+
tests/invalid-wrongversion.pskcxml,
232+
tests/invalid/encryption.pskcxml,
233+
tests/invalid/mac-algorithm.pskcxml,
234+
tests/invalid/mac-value.pskcxml,
235+
tests/invalid/no-mac-method.pskcxml,
236+
tests/invalid/notxml.pskcxml, tests/invalid/wrongelement.pskcxml,
237+
tests/invalid/wrongversion.pskcxml, tests/kw-aes128.pskcxml,
238+
tests/kw-aes192.pskcxml, tests/kw-aes256.pskcxml,
239+
tests/kw-tripledes.pskcxml, tests/misc/SampleFullyQualifiedNS.xml,
240+
tests/misc/odd-namespace.pskcxml, tests/odd-namespace.pskcxml,
241+
tests/rfc6030-figure10.pskcxml, tests/rfc6030-figure2.pskcxml,
242+
tests/rfc6030-figure3.pskcxml, tests/rfc6030-figure4.pskcxml,
243+
tests/rfc6030-figure5.pskcxml, tests/rfc6030-figure6.pskcxml,
244+
tests/rfc6030-figure7.pskcxml, tests/rfc6030/figure10.pskcxml,
245+
tests/rfc6030/figure2.pskcxml, tests/rfc6030/figure3.pskcxml,
246+
tests/rfc6030/figure4.pskcxml, tests/rfc6030/figure5.pskcxml,
247+
tests/rfc6030/figure6.pskcxml, tests/rfc6030/figure7.pskcxml,
248+
tests/test_draft_keyprov.doctest, tests/test_encryption.doctest,
249+
tests/test_invalid.doctest, tests/test_misc.doctest,
250+
tests/test_rfc6030.doctest, tests/test_write.doctest,
251+
tests/tripledes-cbc.pskcxml: Re-organise test files
252+
253+
This puts the test PSKC files in subdirectories so they can be
254+
organised more cleanly.
255+
256+
2016-01-23 Arthur de Jong <[email protected]>
257+
258+
* [1904dc2] tests/test_misc.doctest: Add test for incorrect key
259+
derivation
260+
261+
If no key derivation algorithm has been specified in the PSKC
262+
file an exception should be raised when attempting to perform
263+
key derivation.
264+
265+
2016-01-24 Arthur de Jong <[email protected]>
266+
267+
* [91f66f4] pskc/encryption.py, pskc/key.py, pskc/mac.py: Refactor
268+
out EncryptedValue and ValueMAC
269+
270+
This removes the EncryptedValue and ValueMAC classes and instead
271+
moves the XML parsing of these values to the DataType class. This
272+
will make it easier to support different parsing schemes.
273+
274+
This also includes a small consistency improvement in the
275+
subclasses of DataType.
276+
277+
2016-01-23 Arthur de Jong <[email protected]>
278+
279+
* [9b13d3b] pskc/encryption.py, tests/test_misc.doctest: Normalise
280+
algorithm names
281+
282+
This transforms the algorithm URIs that are set to known values
283+
when parsing or setting the algorithm.
284+
285+
2016-01-22 Arthur de Jong <[email protected]>
286+
287+
* [b6eab47] docs/encryption.rst, pskc/encryption.py,
288+
tests/test_encryption.doctest, tests/test_misc.doctest: Add
289+
encryption algorithm property
290+
291+
Either determine the encryption algorithm from the PSKC file
292+
or from the explicitly set value. This also adds support for
293+
setting the encryption key name.
294+
295+
2016-01-22 Arthur de Jong <[email protected]>
296+
297+
* [b5f7de5] pskc/key.py, tests/test_write.doctest: Fix a problem
298+
when writing previously encrypted file
299+
300+
This fixes a problem with writing a PSKC file that is based on
301+
a read file that was encrypted.
302+
303+
2016-01-22 Arthur de Jong <[email protected]>
304+
305+
* [107a836] pskc/__init__.py, pskc/encryption.py, pskc/key.py,
306+
pskc/mac.py, pskc/policy.py, pskc/xml.py: Strip XML namespaces
307+
before parsing
308+
309+
This simplifies calls to the find() family of functions and
310+
allows parsing PSKC files that have slightly different namespace
311+
URLs. This is especially common when parsing old draft versions
312+
of the specification.
313+
314+
This also removes passing multiple patterns to the find()
315+
functions that was introduced in 68b20e2.
316+
317+
2015-12-28 Arthur de Jong <[email protected]>
318+
319+
* [a86ff8a] README, docs/encryption.rst: Update some documentation
320+
321+
This adds a development notes section to the README and changes
322+
the wording on the encryption page.
323+
324+
2015-12-01 Mathias Laurin <[email protected]>
325+
326+
* [0ff4154] docs/encryption.rst: Fix typo in the documentation
327+
328+
2015-12-01 Mathias Laurin <[email protected]>
329+
330+
* [3473903] pskc2csv.py: Support Python 3
331+
332+
2015-11-30 Mathias Laurin <[email protected]>
333+
334+
* [a82a60b] pskc/key.py: Make value conversion methods static private
335+
336+
- the conversions do not call self: they are static - the
337+
conversions are not to be used out of the class: make private
338+
339+
2015-11-30 Mathias Laurin <[email protected]>
340+
341+
* [e711a30] pskc/key.py: Provide abstract methods to clarify API
342+
343+
2015-11-30 Mathias Laurin <[email protected]>
344+
345+
* [1577687] pskc/encryption.py: Fix typo in variable name
346+
347+
2015-11-30 Mathias Laurin <[email protected]>
348+
349+
* [3aa2a6f] tests/test_invalid.doctest: Fix doctest:
350+
IGNORE_EXCEPTION_DETAL
351+
352+
2015-10-07 Arthur de Jong <[email protected]>
353+
354+
* [c155d15] ChangeLog, MANIFEST.in, NEWS, pskc/__init__.py,
355+
setup.py: Get files ready for 0.3 release
356+
1357
2015-10-07 Arthur de Jong <[email protected]>
2358

3359
* [cf0c9e6] README, docs/conf.py, docs/encryption.rst,

NEWS

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
1+
changes from 0.3 to 0.4
2+
-----------------------
3+
4+
* add support for writing encrypted PSKC files (with either a pre-shared key
5+
or PBKDF2 password-based encryption)
6+
* extend may_use() policy checking function to check for unknown policy
7+
elements and key expiry
8+
* add a number of tests for existing vendor PSKC files and have full line
9+
coverage with tests
10+
* be more lenient in handling a number of XML files (e.g. automatically
11+
sanitise encryption algorithm URIs, ignore XML namespaces and support more
12+
spellings of some properties)
13+
* support reading password or key files in pskc2csv
14+
* support Python 3 in the pskc2csv script (thanks Mathias Laurin)
15+
* refactoring and clean-ups to be more easily extendible (thanks Mathias
16+
Laurin)
17+
18+
119
changes from 0.2 to 0.3
220
-----------------------
321

pskc/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545

4646

4747
# the version number of the library
48-
__version__ = '0.3'
48+
__version__ = '0.4'
4949

5050

5151
class PSKC(object):

0 commit comments

Comments
 (0)