lists.arthurdejong.org
RSS feed

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



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/