python-pskc branch master updated. 0.1-28-gf639318
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
python-pskc branch master updated. 0.1-28-gf639318
- From: Commits of the python-pskc project <python-pskc-commits [at] lists.arthurdejong.org>
- To: python-pskc-commits [at] lists.arthurdejong.org
- Reply-to: python-pskc-users [at] lists.arthurdejong.org
- Subject: python-pskc branch master updated. 0.1-28-gf639318
- Date: Sat, 31 May 2014 18:30:47 +0200 (CEST)
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "python-pskc".
The branch, master has been updated
via f639318faf742dfecb236c56239ffebe50621a97 (commit)
via 1e7f861fb5f742fe27a7efd1f5b90f32b00c3ce3 (commit)
via b7cb928e6c78e96d5106ba853c95dc9b90471973 (commit)
via 427319fd4dfa5d94ce151d0fe1d3181ebf373a53 (commit)
via ba49d09d9c47f08f71d3af9336fda34cb9b23a96 (commit)
via 0a66edef93fa09c6fab800e61afda6f1d0f0a408 (commit)
from 287afa7b9d8d8d0a3a6fb6db67939ced0ab4caa0 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://arthurdejong.org/git/python-pskc/commit/?id=f639318faf742dfecb236c56239ffebe50621a97
commit f639318faf742dfecb236c56239ffebe50621a97
Author: Arthur de Jong <arthur@arthurdejong.org>
Date: Sat May 31 18:19:56 2014 +0200
Merge test_minimal into test_misc
diff --git a/tests/test_minimal.doctest b/tests/test_minimal.doctest
deleted file mode 100644
index eee45db..0000000
--- a/tests/test_minimal.doctest
+++ /dev/null
@@ -1,51 +0,0 @@
-test_minimal.doctest - very basic test of pskc module
-
-Copyright (C) 2014 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 pskc import PSKC
-
-
-This tests the most minimal valid PSKC file with one empty key.
-
->>> import StringIO
->>> minimal_pskc = StringIO.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
diff --git a/tests/test_misc.doctest b/tests/test_misc.doctest
index d0ead4a..f038f2f 100644
--- a/tests/test_misc.doctest
+++ b/tests/test_misc.doctest
@@ -21,6 +21,36 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
>>> from pskc import PSKC
+This tests the most minimal valid PSKC file with one empty key.
+
+>>> import StringIO
+>>> minimal_pskc = StringIO.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
+
+
Load an PSKC file with an odd namespace.
>>> pskc = PSKC('tests/odd-namespace.pskcxml')
http://arthurdejong.org/git/python-pskc/commit/?id=1e7f861fb5f742fe27a7efd1f5b90f32b00c3ce3
commit 1e7f861fb5f742fe27a7efd1f5b90f32b00c3ce3
Author: Arthur de Jong <arthur@arthurdejong.org>
Date: Sat May 31 17:52:30 2014 +0200
Add an ActivIdentity-3DES test
The test is taken from draft-hoyer-keyprov-pskc-algorithm-profiles-01
modified to fit the schema as described in RFC 6030.
diff --git a/tests/draft-keyprov-actividentity-3des.pskcxml
b/tests/draft-keyprov-actividentity-3des.pskcxml
new file mode 100644
index 0000000..209070a
--- /dev/null
+++ b/tests/draft-keyprov-actividentity-3des.pskcxml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ ActivIdentity-3DES example from section 8 of
+ draft-hoyer-keyprov-pskc-algorithm-profiles-01 modified to fit the schema
+ as described in RFC 6030.
+-->
+
+<KeyContainer Version="1.0" xmlns="urn:ietf:params:xml:ns:keyprov:pskc">
+ <KeyPackage>
+ <DeviceInfo>
+ <Manufacturer>ActivIdentity</Manufacturer>
+ <SerialNo>34567890</SerialNo>
+ </DeviceInfo>
+ <Key
Algorithm="http://www.actividentity.com/2008/04/algorithms/algorithms#ActivIdentity-3DES"
Id="12345677">
+ <Issuer>Issuer</Issuer>
+ <AlgorithmParameters>
+ <ResponseFormat Length="8" Encoding="DECIMAL"/>
+ </AlgorithmParameters>
+ <Data>
+ <Secret>
+ <PlainValue>
+ MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=
+ </PlainValue>
+ </Secret>
+ <Counter>
+ <PlainValue>0</PlainValue>
+ </Counter>
+ <Time>
+ <PlainValue>0</PlainValue>
+ </Time>
+ <TimeInterval>
+ <PlainValue>32</PlainValue>
+ </TimeInterval>
+ <TimeDrift>
+ <PlainValue>0</PlainValue>
+ </TimeDrift>
+ </Data>
+ <Policy>
+ <KeyUsage>OTP</KeyUsage>
+ </Policy>
+ </Key>
+ </KeyPackage>
+</KeyContainer>
diff --git a/tests/test_draft_keyprov.doctest b/tests/test_draft_keyprov.doctest
index 4f67208..f01299d 100644
--- a/tests/test_draft_keyprov.doctest
+++ b/tests/test_draft_keyprov.doctest
@@ -122,3 +122,38 @@ described in section 6 of
draft-hoyer-keyprov-pskc-algorithm-profiles-01.
datetime.datetime(2006, 4, 14, 0, 0, tzinfo=tzutc())
>>> key.policy.expiry_date
datetime.datetime(2010, 9, 30, 0, 0, tzinfo=tzutc())
+
+
+This tests an ActivIdentity-3DES key contained within a PSKC file as
+described in section 8 of draft-hoyer-keyprov-pskc-algorithm-profiles-01.
+
+>>> pskc = PSKC('tests/draft-keyprov-actividentity-3des.pskcxml')
+>>> pskc.version
+'1.0'
+>>> key = pskc.keys[0]
+>>> key.manufacturer
+'ActivIdentity'
+>>> key.serial
+'34567890'
+>>> key.id
+'12345677'
+>>> key.algorithm
+'http://www.actividentity.com/2008/04/algorithms/algorithms#ActivIdentity-3DES'
+>>> key.issuer
+'Issuer'
+>>> key.response_encoding
+'DECIMAL'
+>>> key.response_length
+8
+>>> key.secret
+'12345678901234567890'
+>>> key.counter
+0
+>>> key.time_offset
+0
+>>> key.time_interval
+32
+>>> key.time_drift
+0
+>>> key.policy.key_usage
+['OTP']
http://arthurdejong.org/git/python-pskc/commit/?id=b7cb928e6c78e96d5106ba853c95dc9b90471973
commit b7cb928e6c78e96d5106ba853c95dc9b90471973
Author: Arthur de Jong <arthur@arthurdejong.org>
Date: Sat May 31 17:32:42 2014 +0200
Add an SecurID-AES-Counter test
The test is taken from draft-hoyer-keyprov-pskc-algorithm-profiles-01
modified to be valid XML and to fit the schema as described in RFC 6030.
diff --git a/tests/draft-keyprov-securid-aes-counter.pskcxml
b/tests/draft-keyprov-securid-aes-counter.pskcxml
new file mode 100644
index 0000000..b66bb4c
--- /dev/null
+++ b/tests/draft-keyprov-securid-aes-counter.pskcxml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ SecurID-AES-Counter example from section 6 of
+ draft-hoyer-keyprov-pskc-algorithm-profiles-01 modified to fit the schema
+ as described in RFC 6030 and to be valid XML.
+-->
+
+<KeyContainer Version="1.0" xmlns="urn:ietf:params:xml:ns:keyprov:pskc">
+ <KeyPackage>
+ <DeviceInfo>
+ <Manufacturer>RSA, The Security Division of EMC</Manufacturer>
+ <SerialNo>123456798</SerialNo>
+ </DeviceInfo>
+ <Key
Algorithm="http://www.rsa.com/names/2008/04/algorithms/SecurID/SecurID-AES128-Counter"
Id="23456789">
+ <Issuer>Issuer</Issuer>
+ <AlgorithmParameters>
+ <ResponseFormat Length="6" Encoding="DECIMAL"/>
+ </AlgorithmParameters>
+ <Data>
+ <Secret>
+ <PlainValue>MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=
+ </PlainValue>
+ </Secret>
+ <Counter>
+ <PlainValue>0</PlainValue>
+ </Counter>
+ </Data>
+ <Policy>
+ <KeyUsage>OTP</KeyUsage>
+ <StartDate>2006-04-14T00:00:00Z</StartDate>
+ <ExpiryDate>2010-09-30T00:00:00Z</ExpiryDate>
+ </Policy>
+ </Key>
+ </KeyPackage>
+</KeyContainer>
diff --git a/tests/test_draft_keyprov.doctest b/tests/test_draft_keyprov.doctest
index 3f1a10a..4f67208 100644
--- a/tests/test_draft_keyprov.doctest
+++ b/tests/test_draft_keyprov.doctest
@@ -89,3 +89,36 @@ described in section 4 of
draft-hoyer-keyprov-pskc-algorithm-profiles-01.
4
>>> key.policy.key_usage
['OTP']
+
+
+This tests an SecurID-AES-Counter key contained within a PSKC file as
+described in section 6 of draft-hoyer-keyprov-pskc-algorithm-profiles-01.
+
+>>> pskc = PSKC('tests/draft-keyprov-securid-aes-counter.pskcxml')
+>>> pskc.version
+'1.0'
+>>> key = pskc.keys[0]
+>>> key.manufacturer
+'RSA, The Security Division of EMC'
+>>> key.serial
+'123456798'
+>>> key.id
+'23456789'
+>>> key.algorithm
+'http://www.rsa.com/names/2008/04/algorithms/SecurID/SecurID-AES128-Counter'
+>>> key.issuer
+'Issuer'
+>>> key.response_encoding
+'DECIMAL'
+>>> key.response_length
+6
+>>> key.secret
+'12345678901234567890'
+>>> key.counter
+0
+>>> key.policy.key_usage
+['OTP']
+>>> key.policy.start_date
+datetime.datetime(2006, 4, 14, 0, 0, tzinfo=tzutc())
+>>> key.policy.expiry_date
+datetime.datetime(2010, 9, 30, 0, 0, tzinfo=tzutc())
http://arthurdejong.org/git/python-pskc/commit/?id=427319fd4dfa5d94ce151d0fe1d3181ebf373a53
commit 427319fd4dfa5d94ce151d0fe1d3181ebf373a53
Author: Arthur de Jong <arthur@arthurdejong.org>
Date: Sat May 31 17:15:34 2014 +0200
Add an TOTP test
The test is taken from draft-hoyer-keyprov-pskc-algorithm-profiles-01
modified to fit the schema as described in RFC 6030.
diff --git a/tests/draft-keyprov-totp.pskcxml b/tests/draft-keyprov-totp.pskcxml
new file mode 100644
index 0000000..16c065b
--- /dev/null
+++ b/tests/draft-keyprov-totp.pskcxml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ TOTP (OATH Time based OTP) example from section 4 of
+ draft-hoyer-keyprov-pskc-algorithm-profiles-01 modified to fit the schema
+ as described in RFC 6030.
+-->
+
+<KeyContainer Version="1.0" xmlns="urn:ietf:params:xml:ns:keyprov:pskc">
+ <KeyPackage>
+ <DeviceInfo>
+ <Manufacturer>TokenVendorAcme</Manufacturer>
+ <SerialNo>987654323</SerialNo>
+ </DeviceInfo>
+ <Key Algorithm="urn:ietf:params:xml:ns:keyprov:pskc#totp" Id="987654323">
+ <Issuer>Issuer</Issuer>
+ <AlgorithmParameters>
+ <ResponseFormat Length="6" Encoding="DECIMAL"/>
+ </AlgorithmParameters>
+ <Data>
+ <Secret>
+ <PlainValue>MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=</PlainValue>
+ </Secret>
+ <Time>
+ <PlainValue>0</PlainValue>
+ </Time>
+ <TimeInterval>
+ <PlainValue>30</PlainValue>
+ </TimeInterval>
+ <TimeDrift>
+ <PlainValue>4</PlainValue>
+ </TimeDrift>
+ </Data>
+ <Policy>
+ <KeyUsage>OTP</KeyUsage>
+ </Policy>
+ </Key>
+ </KeyPackage>
+</KeyContainer>
diff --git a/tests/test_draft_keyprov.doctest b/tests/test_draft_keyprov.doctest
index acd3393..3f1a10a 100644
--- a/tests/test_draft_keyprov.doctest
+++ b/tests/test_draft_keyprov.doctest
@@ -56,3 +56,36 @@ draft-hoyer-keyprov-pskc-algorithm-profiles-01.
0
>>> key.policy.key_usage
['CR']
+
+
+This tests an TOTP (OATH Time based OTP) key contained within a PSKC file as
+described in section 4 of draft-hoyer-keyprov-pskc-algorithm-profiles-01.
+
+>>> pskc = PSKC('tests/draft-keyprov-totp.pskcxml')
+>>> pskc.version
+'1.0'
+>>> key = pskc.keys[0]
+>>> key.manufacturer
+'TokenVendorAcme'
+>>> key.serial
+'987654323'
+>>> key.id
+'987654323'
+>>> key.algorithm
+'urn:ietf:params:xml:ns:keyprov:pskc#totp'
+>>> key.issuer
+'Issuer'
+>>> key.response_encoding
+'DECIMAL'
+>>> key.response_length
+6
+>>> key.secret
+'12345678901234567890'
+>>> key.time_offset
+0
+>>> key.time_interval
+30
+>>> key.time_drift
+4
+>>> key.policy.key_usage
+['OTP']
http://arthurdejong.org/git/python-pskc/commit/?id=ba49d09d9c47f08f71d3af9336fda34cb9b23a96
commit ba49d09d9c47f08f71d3af9336fda34cb9b23a96
Author: Arthur de Jong <arthur@arthurdejong.org>
Date: Sat May 31 16:03:28 2014 +0200
Add an OCRA test
The test is taken from draft-hoyer-keyprov-pskc-algorithm-profiles-01
modified to fit the schema as described in RFC 6030.
diff --git a/tests/draft-keyprov-ocra.pskcxml b/tests/draft-keyprov-ocra.pskcxml
new file mode 100644
index 0000000..5519159
--- /dev/null
+++ b/tests/draft-keyprov-ocra.pskcxml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ OCRA (OATH Challenge Response Algorithm) example from section 3 of
+ draft-hoyer-keyprov-pskc-algorithm-profiles-01 modified to fit the schema
+ as described in RFC 6030.
+-->
+
+<KeyContainer Version="1.0" xmlns="urn:ietf:params:xml:ns:keyprov:pskc">
+ <KeyPackage>
+ <DeviceInfo>
+ <Manufacturer>TokenVendorAcme</Manufacturer>
+ <SerialNo>987654322</SerialNo>
+ </DeviceInfo>
+ <Key Id="12345678"
Algorithm="urn:ietf:params:xml:ns:keyprov:pskc#OCRA-1:HOTP-SHA512-8:C-QN08">
+ <Issuer>Issuer</Issuer>
+ <AlgorithmParameters>
+ <ChallengeFormat Min="8" Max="8" Encoding="DECIMAL"/>
+ <ResponseFormat Length="8" Encoding="DECIMAL"/>
+ </AlgorithmParameters>
+ <Data>
+ <Secret>
+ <PlainValue>MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=</PlainValue>
+ </Secret>
+ <Counter>
+ <PlainValue>0</PlainValue>
+ </Counter>
+ </Data>
+ <Policy>
+ <KeyUsage>CR</KeyUsage>
+ </Policy>
+ </Key>
+ </KeyPackage>
+</KeyContainer>
diff --git a/tests/test_draft_keyprov.doctest b/tests/test_draft_keyprov.doctest
new file mode 100644
index 0000000..acd3393
--- /dev/null
+++ b/tests/test_draft_keyprov.doctest
@@ -0,0 +1,58 @@
+test_draft_keyprov.doctest - test for examples from
+ draft-hoyer-keyprov-pskc-algorithm-profiles-01
+
+Copyright (C) 2014 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 pskc import PSKC
+
+
+This tests an OCRA (OATH Challenge Response Algorithm) key contained within
+a PSKC file as described in section 3 of
+draft-hoyer-keyprov-pskc-algorithm-profiles-01.
+
+>>> pskc = PSKC('tests/draft-keyprov-ocra.pskcxml')
+>>> pskc.version
+'1.0'
+>>> key = pskc.keys[0]
+>>> key.manufacturer
+'TokenVendorAcme'
+>>> key.serial
+'987654322'
+>>> key.id
+'12345678'
+>>> key.algorithm
+'urn:ietf:params:xml:ns:keyprov:pskc#OCRA-1:HOTP-SHA512-8:C-QN08'
+>>> key.issuer
+'Issuer'
+>>> key.challenge_encoding
+'DECIMAL'
+>>> key.challenge_min_length
+8
+>>> key.challenge_max_length
+8
+>>> key.response_encoding
+'DECIMAL'
+>>> key.response_length
+8
+>>> key.secret
+'12345678901234567890'
+>>> key.counter
+0
+>>> key.policy.key_usage
+['CR']
http://arthurdejong.org/git/python-pskc/commit/?id=0a66edef93fa09c6fab800e61afda6f1d0f0a408
commit 0a66edef93fa09c6fab800e61afda6f1d0f0a408
Author: Arthur de Jong <arthur@arthurdejong.org>
Date: Sat May 31 15:32:19 2014 +0200
Add a test for an odd namespace
diff --git a/tests/odd-namespace.pskcxml b/tests/odd-namespace.pskcxml
new file mode 100644
index 0000000..fbdf0d6
--- /dev/null
+++ b/tests/odd-namespace.pskcxml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Taken from the OATH Toolkit (pskc-ns.xml).
+-->
+
+<foo:KeyContainer Version="1.0"
+ Id="exampleID1"
+ xmlns:foo="urn:ietf:params:xml:ns:keyprov:pskc">
+ <foo:KeyPackage>
+ <foo:Key Id="12345678"
+ Algorithm="urn:ietf:params:xml:ns:keyprov:pskc:hotp">
+ <foo:Issuer>Issuer-A</foo:Issuer>
+ <foo:Data>
+ <foo:Secret>
+ <foo:PlainValue>MTIzNA==
+ </foo:PlainValue>
+ </foo:Secret>
+ </foo:Data>
+ </foo:Key>
+ </foo:KeyPackage>
+</foo:KeyContainer>
diff --git a/tests/test_misc.doctest b/tests/test_misc.doctest
new file mode 100644
index 0000000..d0ead4a
--- /dev/null
+++ b/tests/test_misc.doctest
@@ -0,0 +1,37 @@
+test_misc.doctest - miscellaneous tests
+
+Copyright (C) 2014 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 pskc import PSKC
+
+
+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'
+>>> key.secret
+'1234'
-----------------------------------------------------------------------
Summary of changes:
tests/draft-keyprov-actividentity-3des.pskcxml | 44 ++++++
tests/draft-keyprov-ocra.pskcxml | 34 +++++
tests/draft-keyprov-securid-aes-counter.pskcxml | 36 +++++
tests/draft-keyprov-totp.pskcxml | 39 +++++
tests/odd-namespace.pskcxml | 22 +++
tests/test_draft_keyprov.doctest | 159 +++++++++++++++++++++
tests/{test_minimal.doctest => test_misc.doctest} | 18 ++-
7 files changed, 351 insertions(+), 1 deletion(-)
create mode 100644 tests/draft-keyprov-actividentity-3des.pskcxml
create mode 100644 tests/draft-keyprov-ocra.pskcxml
create mode 100644 tests/draft-keyprov-securid-aes-counter.pskcxml
create mode 100644 tests/draft-keyprov-totp.pskcxml
create mode 100644 tests/odd-namespace.pskcxml
create mode 100644 tests/test_draft_keyprov.doctest
rename tests/{test_minimal.doctest => test_misc.doctest} (84%)
hooks/post-receive
--
python-pskc
--
To unsubscribe send an email to
python-pskc-commits-unsubscribe@lists.arthurdejong.org or see
http://lists.arthurdejong.org/python-pskc-commits/
- python-pskc branch master updated. 0.1-28-gf639318,
Commits of the python-pskc project