summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathaniel McCallum <npmccallum@redhat.com>2017-06-20 10:31:15 -0400
committerTomas Krizek <tkrizek@redhat.com>2017-09-01 10:50:34 +0200
commitbc05ab992226febb54e47e3963b694fe96ca4167 (patch)
tree0eac00d12a8c724d6837020ec2536539766c605f
parentc14aa6cdac5795bd2a05606c51e4b9d9f26755a4 (diff)
downloadfreeipa-bc05ab992226febb54e47e3963b694fe96ca4167.tar.gz
freeipa-bc05ab992226febb54e47e3963b694fe96ca4167.tar.xz
freeipa-bc05ab992226febb54e47e3963b694fe96ca4167.zip
ipa-otptoken-import: Make PBKDF2 refer to the pkcs5 namespace
For some unknown reason, when I wrote the ipa-otptoken-import script I used bad input data which had the PBKDF2 parameters in the wrong XML namespace. I have corrected this input data to match RFC 6030. https://pagure.io/freeipa/issue/7035 Signed-off-by: Nathaniel McCallum <npmccallum@redhat.com> Reviewed-By: Martin Basti <mbasti@redhat.com> Reviewed-By: Stanislav Laznicka <slaznick@redhat.com>
-rw-r--r--ipaserver/install/ipa_otptoken_import.py15
-rw-r--r--ipatests/test_ipaserver/data/pskc-figure7.xml16
2 files changed, 14 insertions, 17 deletions
diff --git a/ipaserver/install/ipa_otptoken_import.py b/ipaserver/install/ipa_otptoken_import.py
index 99b1f7566..9ac88e728 100644
--- a/ipaserver/install/ipa_otptoken_import.py
+++ b/ipaserver/install/ipa_otptoken_import.py
@@ -55,6 +55,7 @@ class ValidationError(Exception):
def fetchAll(element, xpath, conv=lambda x: x):
return [conv(e) for e in element.xpath(xpath, namespaces={
+ "pkcs5": "http://www.rsasecurity.com/rsalabs/pkcs/schemas/pkcs-5v2-0#",
"pskc": "urn:ietf:params:xml:ns:keyprov:pskc",
"xenc11": "http://www.w3.org/2009/xmlenc11#",
"xenc": "http://www.w3.org/2001/04/xmlenc#",
@@ -178,18 +179,14 @@ class XMLKeyDerivation(six.with_metaclass(abc.ABCMeta, object)):
class PBKDF2KeyDerivation(XMLKeyDerivation):
def __init__(self, enckey):
- params = fetch(enckey, "./xenc11:DerivedKey/xenc11:KeyDerivationMethod/xenc11:PBKDF2-params")
+ params = fetch(enckey, "./xenc11:DerivedKey/xenc11:KeyDerivationMethod/pkcs5:PBKDF2-params")
if params is None:
raise ValueError("XML file is missing PBKDF2 parameters!")
- salt = fetch(
- params, "./xenc11:Salt/xenc11:Specified/text()", base64.b64decode)
- itrs = fetch(
- params, "./xenc11:IterationCount/text()", int)
- klen = fetch(
- params, "./xenc11:KeyLength/text()", int)
- hmod = fetch(
- params, "./xenc11:PRF/@Algorithm", convertHMACType, hashes.SHA1)
+ salt = fetch(params, "./Salt/Specified/text()", base64.b64decode)
+ itrs = fetch(params, "./IterationCount/text()", int)
+ klen = fetch(params, "./KeyLength/text()", int)
+ hmod = fetch(params, "./PRF/@Algorithm", convertHMACType, hashes.SHA1)
if salt is None:
raise ValueError("XML file is missing PBKDF2 salt!")
diff --git a/ipatests/test_ipaserver/data/pskc-figure7.xml b/ipatests/test_ipaserver/data/pskc-figure7.xml
index 1fb04fc31..808e272a5 100644
--- a/ipatests/test_ipaserver/data/pskc-figure7.xml
+++ b/ipatests/test_ipaserver/data/pskc-figure7.xml
@@ -8,14 +8,14 @@
<xenc11:DerivedKey>
<xenc11:KeyDerivationMethod
Algorithm="http://www.rsasecurity.com/rsalabs/pkcs/schemas/pkcs-5v2-0#pbkdf2">
- <xenc11:PBKDF2-params>
- <xenc11:Salt>
- <xenc11:Specified>Ej7/PEpyEpw=</xenc11:Specified>
- </xenc11:Salt>
- <xenc11:IterationCount>1000</xenc11:IterationCount>
- <xenc11:KeyLength>16</xenc11:KeyLength>
- <xenc11:PRF/>
- </xenc11:PBKDF2-params>
+ <pkcs5:PBKDF2-params>
+ <Salt>
+ <Specified>Ej7/PEpyEpw=</Specified>
+ </Salt>
+ <IterationCount>1000</IterationCount>
+ <KeyLength>16</KeyLength>
+ <PRF/>
+ </pkcs5:PBKDF2-params>
</xenc11:KeyDerivationMethod>
<xenc:ReferenceList>
<xenc:DataReference URI="#ED"/>