[cpp-xmltooling] branch master updated: CPPXT-136 Tests for RetrievalMethod

Rod Widdowson rdw at steadingsoftware.com
Sat Dec 8 09:46:36 EST 2018


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch master
in repository cpp-xmltooling.

View the commit online:
http://git.shibboleth.net/view/?p=cpp-xmltooling.git;a=commit;h=7d8f74147f2119f9e5f769be59e248510fcbde71

The following commit(s) were added to refs/heads/master by this push:
       new  7d8f741   CPPXT-136 Tests for RetrievalMethod
7d8f741 is described below

commit 7d8f74147f2119f9e5f769be59e248510fcbde71
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sat Dec 8 14:36:55 2018 +0000

    CPPXT-136 Tests for RetrievalMethod
    
    https://issues.shibboleth.net/jira/browse/CPPXT-136
    
    These are added to the Encryption tests since that is what
    RetrievalMethod is all about.
---
 xmltoolingtest/EncryptionTest.h                    | 91 +++++++++++++++++++---
 xmltoolingtest/data/BadKeyInfo/encData.xml         | 59 ++++++++++++++
 xmltoolingtest/data/BadKeyInfo/retrievalBadURI.xml | 63 +++++++++++++++
 xmltoolingtest/data/BadKeyInfo/retrievalChild.xml  | 63 +++++++++++++++
 xmltoolingtest/data/BadKeyInfo/retrievalEmpty.xml  | 63 +++++++++++++++
 .../data/BadKeyInfo/retrievalMissingType.xml       | 63 +++++++++++++++
 .../data/BadKeyInfo/retrievalMissingURI.xml        | 63 +++++++++++++++
 7 files changed, 455 insertions(+), 10 deletions(-)

diff --git a/xmltoolingtest/EncryptionTest.h b/xmltoolingtest/EncryptionTest.h
index 88f8df0..7280125 100644
--- a/xmltoolingtest/EncryptionTest.h
+++ b/xmltoolingtest/EncryptionTest.h
@@ -35,10 +35,11 @@ using namespace xmlencryption;
 
 class EncryptionTest : public CxxTest::TestSuite {
     CredentialResolver* m_resolver;
+    DOMDocument* m_complexObject;
 public:
     void setUp() {
         m_resolver=nullptr;
-        string config = data_path + "FilesystemCredentialResolver.xml";
+        const string config = data_path + "FilesystemCredentialResolver.xml";
         ifstream in(config.c_str());
         DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(in);
         XercesJanitor<DOMDocument> janitor(doc);
@@ -46,19 +47,31 @@ public:
             CHAINING_CREDENTIAL_RESOLVER, doc->getDocumentElement(), false
             );
         XMLObjectBuilder::registerDefaultBuilder(new UnknownElementBuilder());
+
+        const string path=data_path + "ComplexXMLObject.xml";
+        ifstream fs(path.c_str());
+        m_complexObject=XMLToolingConfig::getConfig().getParser().parse(fs);
+
+        // Marshalling  Setup
+        xmltooling::QName qname(SimpleXMLObject::NAMESPACE, SimpleXMLObject::LOCAL_NAME);
+        xmltooling::QName qtype(SimpleXMLObject::NAMESPACE, SimpleXMLObject::TYPE_NAME);
+        XMLObjectBuilder::registerBuilder(qname, new SimpleXMLObjectBuilder());
+        XMLObjectBuilder::registerBuilder(qtype, new SimpleXMLObjectBuilder());
     }
 
     void tearDown() {
         XMLObjectBuilder::deregisterDefaultBuilder();
         delete m_resolver;
+        m_complexObject->release();
+
+        xmltooling::QName qname(SimpleXMLObject::NAMESPACE, SimpleXMLObject::LOCAL_NAME);
+        xmltooling::QName qtype(SimpleXMLObject::NAMESPACE, SimpleXMLObject::TYPE_NAME);
+        XMLObjectBuilder::deregisterBuilder(qname);
+        XMLObjectBuilder::deregisterBuilder(qtype);
     }
 
     void testEncryption() {
-        string path=data_path + "ComplexXMLObject.xml";
-        ifstream fs(path.c_str());
-        DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs);
-        TS_ASSERT(doc!=nullptr);
-
+        TS_ASSERT(m_complexObject != nullptr);
         try {
             CredentialCriteria cc;
             cc.setUsage(Credential::ENCRYPTION_CREDENTIAL);
@@ -69,7 +82,7 @@ public:
             Encrypter encrypter;
             Encrypter::EncryptionParams ep;
             Encrypter::KeyEncryptionParams kep(*cred);
-            scoped_ptr<EncryptedData> encData(encrypter.encryptElement(doc->getDocumentElement(),ep,&kep));
+            scoped_ptr<EncryptedData> encData(encrypter.encryptElement(m_complexObject->getDocumentElement(),ep,&kep));
 
             string buf;
             XMLHelper::serialize(encData->marshall(), buf);
@@ -84,15 +97,73 @@ public:
             DOMDocumentFragment* frag = decrypter.decryptData(*encData2.get());
             XMLHelper::serialize(static_cast<DOMElement*>(frag->getFirstChild()), buf);
             //TS_TRACE(buf.c_str());
-            TS_ASSERT(doc->getDocumentElement()->isEqualNode(frag->getFirstChild()));
+            TS_ASSERT(m_complexObject->getDocumentElement()->isEqualNode(frag->getFirstChild()));
             frag->release();
-            doc->release();
         }
         catch (XMLToolingException& e) {
             TS_TRACE(e.what());
-            doc->release();
             throw;
         }
     }
 
+    void preEncrypted(const string path, const bool fails) {
+        TS_ASSERT(m_complexObject != nullptr);
+
+        try {
+            CredentialCriteria cc;
+            cc.setUsage(Credential::ENCRYPTION_CREDENTIAL);
+            Locker locker(m_resolver);
+            const Credential* cred=m_resolver->resolve(&cc);
+            TSM_ASSERT("Retrieved credential was null", cred != nullptr);
+
+            const string encDataPath = data_path + path;
+            ifstream is(encDataPath.c_str());
+
+            DOMDocument* doc2=XMLToolingConfig::getConfig().getParser().parse(is);
+            scoped_ptr<EncryptedData> encData2(
+                dynamic_cast<EncryptedData*>(XMLObjectBuilder::buildOneFromElement(doc2->getDocumentElement(), true))
+            );
+
+            Decrypter decrypter(m_resolver);
+            if (fails) {
+                TSM_ASSERT_THROWS("encryption should fail", decrypter.decryptData(*encData2.get()), XMLToolingException);
+                return;
+            }
+            DOMDocumentFragment* frag = decrypter.decryptData(*encData2.get());
+            string buf;
+            XMLHelper::serialize(static_cast<DOMElement*>(frag->getFirstChild()), buf);
+            // TS_TRACE(buf.c_str());
+            TS_ASSERT(m_complexObject->getDocumentElement()->isEqualNode(frag->getFirstChild()));
+            frag->release();
+        } catch (XMLToolingException& e) {
+            TS_TRACE(e.what());
+            throw;
+        }
+    }
+
+    void testPreEncrypted()
+    {
+        preEncrypted("BadKeyInfo/encData.xml", false);
+    }
+
+    void testRetrieval()
+    {
+        preEncrypted("BadKeyInfo/retrievalChild.xml", false);
+    }
+
+    void testRetrievalBadURI()
+    {
+        preEncrypted("BadKeyInfo/retrievalBadURI.xml", true);
+    }
+
+    void testRetrievalMissingType()
+    {
+        preEncrypted("BadKeyInfo/retrievalMissingType.xml", true);
+    }
+
+    void testRetrievalEmpty()
+    {
+        preEncrypted("BadKeyInfo/retrievalEmpty.xml", true);
+    }
+
 };
diff --git a/xmltoolingtest/data/BadKeyInfo/encData.xml b/xmltoolingtest/data/BadKeyInfo/encData.xml
new file mode 100644
index 0000000..0215b14
--- /dev/null
+++ b/xmltoolingtest/data/BadKeyInfo/encData.xml
@@ -0,0 +1,59 @@
+<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+  <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+  <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+
+    <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+      <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/>
+      <ds:KeyInfo>
+        <ds:KeyName>Sample Key</ds:KeyName>
+        <ds:KeyName>sp.example.org</ds:KeyName>
+        <ds:X509Data>
+          <ds:X509SubjectName>CN=sp.example.org,O=Internet2,C=US</ds:X509SubjectName>
+          <ds:X509Certificate>MIICjzCCAfigAwIBAgIJAKk8t1hYcMkhMA0GCSqGSIb3DQEBBAUAMDoxCzAJBgNV
+            BAYTAlVTMRIwEAYDVQQKEwlJbnRlcm5ldDIxFzAVBgNVBAMTDnNwLmV4YW1wbGUu
+            b3JnMB4XDTA1MDYyMDE1NDgzNFoXDTMyMTEwNTE1NDgzNFowOjELMAkGA1UEBhMC
+            VVMxEjAQBgNVBAoTCUludGVybmV0MjEXMBUGA1UEAxMOc3AuZXhhbXBsZS5vcmcw
+            gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANlZ1L1mKzYbUVKiMQLhZlfGDyYa
+            /jjCiaXP0WhLNgvJpOTeajvsrApYNnFX5MLNzuC3NeQIjXUNLN2Yo2MCSthBIOL5
+            qE5dka4z9W9zytoflW1LmJ8vXpx8Ay/meG4z//J5iCpYVEquA0xl28HUIlownZUF
+            7w7bx0cF/02qrR23AgMBAAGjgZwwgZkwHQYDVR0OBBYEFJZiO1qsyAyc3HwMlL9p
+            JpN6fbGwMGoGA1UdIwRjMGGAFJZiO1qsyAyc3HwMlL9pJpN6fbGwoT6kPDA6MQsw
+            CQYDVQQGEwJVUzESMBAGA1UEChMJSW50ZXJuZXQyMRcwFQYDVQQDEw5zcC5leGFt
+            cGxlLm9yZ4IJAKk8t1hYcMkhMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQAD
+            gYEAMFq/UeSQyngE0GpZueyD2UW0M358uhseYOgGEIfm+qXIFQF6MYwNoX7WFzhC
+            LJZ2E6mEvZZFHCHUtl7mGDvsRwgZ85YCtRbvleEpqfgNQToto9pLYe+X6vvH9Z6p
+            gmYsTmak+kxO93JprrOd9xp8aZPMEprL7VCdrhbZEfyYER0=
+          </ds:X509Certificate>
+        </ds:X509Data>
+      </ds:KeyInfo>
+      <xenc:CipherData>
+        <xenc:CipherValue>NpI48hf1FIEFKBtrxPasku3qsockyUD61ZYZhpyc6hayCczlKKvv/jtu8IAg0WCaoCG+Kj63Wc9y
+          C0BuAHuxX8bYvlgCulnXy8IAfFbybN9/W8/Au26at+Qcpue6LdCh5fzcBkWqBNhcRqeXyldiCEjbhspuA09kzI6DvHOOwqE=
+        </xenc:CipherValue>
+      </xenc:CipherData>
+    </xenc:EncryptedKey>
+  </ds:KeyInfo>
+  <xenc:CipherData>
+    <xenc:CipherValue>i2n4xM6LBUuzlmnXPtNUYC/V1FMhC7DJomOmU4x+PcV6ybBT7/0Xy5rlpnXPweWgmmSJB7QezHr1
+      VDCurTngAaPwO6X2sn+ixJ3K4+OM8Y33Sd/NVgNtqX7sJsoY+Ii9mWFXZ7KjufQbQFRijdexC80l
+      R4AOCNOi/3iSzNFvw6/mw3azPi42Z5yGyZ5swm5IjToagWJoWcbeICC/fWCcxJUfmjjXuhkJcckg
+      uq8xgYvJqE6HcOy2N1KY70JhKkyasgXC2mt0UDSjT0i9af+EvpU3sksz/FpUtMDD9SXCIpZEjdpE
+      LPLtqkvbL3kXvCplI4r1AJIb4lyfvT24gyuUHyyP9DwdDXH8E71yjA4Uf86FPLDodKkdpt4faIbR
+      lo43rQvlpAlN2bfwlbW2k2WHDAueqA2LJ6Ksvuh/Qx6qnj9xMrF6Cs7kjiSitLJNPH/ZSMqqSGhs
+      3yL4c97d99B3SGbJdIkrR8Fxiz8BCuNGz8XTKn2/jnQBCQTeRm57wAcYLrsdU2KXXNfa1mDMFqSr
+      elnEv25FNVy8qi+BWatBiXXBSAp36vg0ClLPB2ri2TWSRQVrsFMYkvy7+PpUTKpF1G9/gxOxoWuC
+      kaoRYEdebFkNZHRhP0osGqUJtmivH6VyPBGGz8qRbnXVkzFuYw722EebC9HXltQ5S570Gsj+ipSs
+      k46kWTr2xb2tAp3XU3hWwy3BpIfSLQCzWHqYSJwVbJ8DmaY3YInUM7VJ6224aARgRQRzA9el1hlb
+      OeXfvVoPWFYtzs4AOGgY7YVQ3KzLN803aOlRIT6qF9W9BVcU19RdtQSXgpmPX5X4oFdo7UEH+cRX
+      ATfQhFmSx90PsvxrklJWtEbTdC6Y3Se82ezUGPzT1/a3iCd92w87VrwdCYP+FNIBTLTiN+PNHd9W
+      jBGV2xM/VqHF/Ss36dopdjZAkJh1P3JNVOG1POqZmB7M7W+7O6eymOJXvE3mrbsZOUnw9GDmz+Ie
+      8IQQ2R+WCZ+bXN4BmEwevTb0qvC2KvQglfUZvc4bRCtzQGhSdhiiOAD7PgYtlvgP2qbWGpfpKO7b
+      j0qyMT5+4tgR9F1CuUA2NXH93btsnMI4ycmX481pxW9Aad67DEhm+NoF8nHIwk2LZhdTKprj4IyG
+      Q/jEiwSALFmcKQFpszhWpIphJgMkGIkNl6ofk3mtADvCRkMMxTL57PHxGvhv1urfr7fm4He0+XSY
+      YzCA++uMOCsT3vvm5PoyvTtkWwCeQ3CjwxLrEStkXjt/gWokhoNWARCaLXqV3IDJAaeJluIt0Wqv
+      QnQROwb6u23h0k2DtaRMa6Xi+KvnmqaGvvFH9mpdcMFh/U857GJYYTiIMq/CXL7TUm3+tVByGWfl
+      LVJekbXAe177iIJbR9+2NcLU0cBDVMkC+PNnLcXiVV3q7BrNMVJFzZ6WUkH/+8Ih2T8Lrlu3APSc
+      qmqyiFq/DLTSzlPLGfHZYwMg7JYtY0jWXXsxKlOEz7OBKUbQPg==
+    </xenc:CipherValue>
+  </xenc:CipherData>
+</xenc:EncryptedData>
diff --git a/xmltoolingtest/data/BadKeyInfo/retrievalBadURI.xml b/xmltoolingtest/data/BadKeyInfo/retrievalBadURI.xml
new file mode 100644
index 0000000..9c9063c
--- /dev/null
+++ b/xmltoolingtest/data/BadKeyInfo/retrievalBadURI.xml
@@ -0,0 +1,63 @@
+<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+  <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+  <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+    <ds:RetrievalMethod URI="#SOMESTUFF" Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey"/>
+    <test:SimpleElement xmlns:test="http://www.example.org/testObjects">
+      <ds:KeyInfo Id="SOMESTUFF">
+        <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="ENCkEY">
+          <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/>
+          <ds:KeyInfo>
+            <ds:KeyName>Sample Key</ds:KeyName>
+            <ds:KeyName>sp.example.org</ds:KeyName>
+            <ds:X509Data>
+              <ds:X509SubjectName>CN=sp.example.org,O=Internet2,C=US</ds:X509SubjectName>
+              <ds:X509Certificate>MIICjzCCAfigAwIBAgIJAKk8t1hYcMkhMA0GCSqGSIb3DQEBBAUAMDoxCzAJBgNV
+                BAYTAlVTMRIwEAYDVQQKEwlJbnRlcm5ldDIxFzAVBgNVBAMTDnNwLmV4YW1wbGUu
+                b3JnMB4XDTA1MDYyMDE1NDgzNFoXDTMyMTEwNTE1NDgzNFowOjELMAkGA1UEBhMC
+                VVMxEjAQBgNVBAoTCUludGVybmV0MjEXMBUGA1UEAxMOc3AuZXhhbXBsZS5vcmcw
+                gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANlZ1L1mKzYbUVKiMQLhZlfGDyYa
+                /jjCiaXP0WhLNgvJpOTeajvsrApYNnFX5MLNzuC3NeQIjXUNLN2Yo2MCSthBIOL5
+                qE5dka4z9W9zytoflW1LmJ8vXpx8Ay/meG4z//J5iCpYVEquA0xl28HUIlownZUF
+                7w7bx0cF/02qrR23AgMBAAGjgZwwgZkwHQYDVR0OBBYEFJZiO1qsyAyc3HwMlL9p
+                JpN6fbGwMGoGA1UdIwRjMGGAFJZiO1qsyAyc3HwMlL9pJpN6fbGwoT6kPDA6MQsw
+                CQYDVQQGEwJVUzESMBAGA1UEChMJSW50ZXJuZXQyMRcwFQYDVQQDEw5zcC5leGFt
+                cGxlLm9yZ4IJAKk8t1hYcMkhMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQAD
+                gYEAMFq/UeSQyngE0GpZueyD2UW0M358uhseYOgGEIfm+qXIFQF6MYwNoX7WFzhC
+                LJZ2E6mEvZZFHCHUtl7mGDvsRwgZ85YCtRbvleEpqfgNQToto9pLYe+X6vvH9Z6p
+                gmYsTmak+kxO93JprrOd9xp8aZPMEprL7VCdrhbZEfyYER0=
+              </ds:X509Certificate>
+            </ds:X509Data>
+          </ds:KeyInfo>
+          <xenc:CipherData>
+            <xenc:CipherValue>NpI48hf1FIEFKBtrxPasku3qsockyUD61ZYZhpyc6hayCczlKKvv/jtu8IAg0WCaoCG+Kj63Wc9y
+              C0BuAHuxX8bYvlgCulnXy8IAfFbybN9/W8/Au26at+Qcpue6LdCh5fzcBkWqBNhcRqeXyldiCEjbhspuA09kzI6DvHOOwqE=
+            </xenc:CipherValue>
+          </xenc:CipherData>
+        </xenc:EncryptedKey>
+      </ds:KeyInfo>
+    </test:SimpleElement>
+  </ds:KeyInfo>
+  <xenc:CipherData>
+    <xenc:CipherValue>i2n4xM6LBUuzlmnXPtNUYC/V1FMhC7DJomOmU4x+PcV6ybBT7/0Xy5rlpnXPweWgmmSJB7QezHr1
+      VDCurTngAaPwO6X2sn+ixJ3K4+OM8Y33Sd/NVgNtqX7sJsoY+Ii9mWFXZ7KjufQbQFRijdexC80l
+      R4AOCNOi/3iSzNFvw6/mw3azPi42Z5yGyZ5swm5IjToagWJoWcbeICC/fWCcxJUfmjjXuhkJcckg
+      uq8xgYvJqE6HcOy2N1KY70JhKkyasgXC2mt0UDSjT0i9af+EvpU3sksz/FpUtMDD9SXCIpZEjdpE
+      LPLtqkvbL3kXvCplI4r1AJIb4lyfvT24gyuUHyyP9DwdDXH8E71yjA4Uf86FPLDodKkdpt4faIbR
+      lo43rQvlpAlN2bfwlbW2k2WHDAueqA2LJ6Ksvuh/Qx6qnj9xMrF6Cs7kjiSitLJNPH/ZSMqqSGhs
+      3yL4c97d99B3SGbJdIkrR8Fxiz8BCuNGz8XTKn2/jnQBCQTeRm57wAcYLrsdU2KXXNfa1mDMFqSr
+      elnEv25FNVy8qi+BWatBiXXBSAp36vg0ClLPB2ri2TWSRQVrsFMYkvy7+PpUTKpF1G9/gxOxoWuC
+      kaoRYEdebFkNZHRhP0osGqUJtmivH6VyPBGGz8qRbnXVkzFuYw722EebC9HXltQ5S570Gsj+ipSs
+      k46kWTr2xb2tAp3XU3hWwy3BpIfSLQCzWHqYSJwVbJ8DmaY3YInUM7VJ6224aARgRQRzA9el1hlb
+      OeXfvVoPWFYtzs4AOGgY7YVQ3KzLN803aOlRIT6qF9W9BVcU19RdtQSXgpmPX5X4oFdo7UEH+cRX
+      ATfQhFmSx90PsvxrklJWtEbTdC6Y3Se82ezUGPzT1/a3iCd92w87VrwdCYP+FNIBTLTiN+PNHd9W
+      jBGV2xM/VqHF/Ss36dopdjZAkJh1P3JNVOG1POqZmB7M7W+7O6eymOJXvE3mrbsZOUnw9GDmz+Ie
+      8IQQ2R+WCZ+bXN4BmEwevTb0qvC2KvQglfUZvc4bRCtzQGhSdhiiOAD7PgYtlvgP2qbWGpfpKO7b
+      j0qyMT5+4tgR9F1CuUA2NXH93btsnMI4ycmX481pxW9Aad67DEhm+NoF8nHIwk2LZhdTKprj4IyG
+      Q/jEiwSALFmcKQFpszhWpIphJgMkGIkNl6ofk3mtADvCRkMMxTL57PHxGvhv1urfr7fm4He0+XSY
+      YzCA++uMOCsT3vvm5PoyvTtkWwCeQ3CjwxLrEStkXjt/gWokhoNWARCaLXqV3IDJAaeJluIt0Wqv
+      QnQROwb6u23h0k2DtaRMa6Xi+KvnmqaGvvFH9mpdcMFh/U857GJYYTiIMq/CXL7TUm3+tVByGWfl
+      LVJekbXAe177iIJbR9+2NcLU0cBDVMkC+PNnLcXiVV3q7BrNMVJFzZ6WUkH/+8Ih2T8Lrlu3APSc
+      qmqyiFq/DLTSzlPLGfHZYwMg7JYtY0jWXXsxKlOEz7OBKUbQPg==
+    </xenc:CipherValue>
+  </xenc:CipherData>
+</xenc:EncryptedData>
diff --git a/xmltoolingtest/data/BadKeyInfo/retrievalChild.xml b/xmltoolingtest/data/BadKeyInfo/retrievalChild.xml
new file mode 100644
index 0000000..ed164c6
--- /dev/null
+++ b/xmltoolingtest/data/BadKeyInfo/retrievalChild.xml
@@ -0,0 +1,63 @@
+<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+  <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+  <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+    <ds:RetrievalMethod URI="#ENCkEY" Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey"/>
+    <test:SimpleElement xmlns:test="http://www.example.org/testObjects">
+      <ds:KeyInfo Id="SOMESTUFF">
+        <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="ENCkEY">
+          <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/>
+          <ds:KeyInfo>
+            <ds:KeyName>Sample Key</ds:KeyName>
+            <ds:KeyName>sp.example.org</ds:KeyName>
+            <ds:X509Data>
+              <ds:X509SubjectName>CN=sp.example.org,O=Internet2,C=US</ds:X509SubjectName>
+              <ds:X509Certificate>MIICjzCCAfigAwIBAgIJAKk8t1hYcMkhMA0GCSqGSIb3DQEBBAUAMDoxCzAJBgNV
+                BAYTAlVTMRIwEAYDVQQKEwlJbnRlcm5ldDIxFzAVBgNVBAMTDnNwLmV4YW1wbGUu
+                b3JnMB4XDTA1MDYyMDE1NDgzNFoXDTMyMTEwNTE1NDgzNFowOjELMAkGA1UEBhMC
+                VVMxEjAQBgNVBAoTCUludGVybmV0MjEXMBUGA1UEAxMOc3AuZXhhbXBsZS5vcmcw
+                gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANlZ1L1mKzYbUVKiMQLhZlfGDyYa
+                /jjCiaXP0WhLNgvJpOTeajvsrApYNnFX5MLNzuC3NeQIjXUNLN2Yo2MCSthBIOL5
+                qE5dka4z9W9zytoflW1LmJ8vXpx8Ay/meG4z//J5iCpYVEquA0xl28HUIlownZUF
+                7w7bx0cF/02qrR23AgMBAAGjgZwwgZkwHQYDVR0OBBYEFJZiO1qsyAyc3HwMlL9p
+                JpN6fbGwMGoGA1UdIwRjMGGAFJZiO1qsyAyc3HwMlL9pJpN6fbGwoT6kPDA6MQsw
+                CQYDVQQGEwJVUzESMBAGA1UEChMJSW50ZXJuZXQyMRcwFQYDVQQDEw5zcC5leGFt
+                cGxlLm9yZ4IJAKk8t1hYcMkhMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQAD
+                gYEAMFq/UeSQyngE0GpZueyD2UW0M358uhseYOgGEIfm+qXIFQF6MYwNoX7WFzhC
+                LJZ2E6mEvZZFHCHUtl7mGDvsRwgZ85YCtRbvleEpqfgNQToto9pLYe+X6vvH9Z6p
+                gmYsTmak+kxO93JprrOd9xp8aZPMEprL7VCdrhbZEfyYER0=
+              </ds:X509Certificate>
+            </ds:X509Data>
+          </ds:KeyInfo>
+          <xenc:CipherData>
+            <xenc:CipherValue>NpI48hf1FIEFKBtrxPasku3qsockyUD61ZYZhpyc6hayCczlKKvv/jtu8IAg0WCaoCG+Kj63Wc9y
+              C0BuAHuxX8bYvlgCulnXy8IAfFbybN9/W8/Au26at+Qcpue6LdCh5fzcBkWqBNhcRqeXyldiCEjbhspuA09kzI6DvHOOwqE=
+            </xenc:CipherValue>
+          </xenc:CipherData>
+        </xenc:EncryptedKey>
+      </ds:KeyInfo>
+    </test:SimpleElement>
+  </ds:KeyInfo>
+  <xenc:CipherData>
+    <xenc:CipherValue>i2n4xM6LBUuzlmnXPtNUYC/V1FMhC7DJomOmU4x+PcV6ybBT7/0Xy5rlpnXPweWgmmSJB7QezHr1
+      VDCurTngAaPwO6X2sn+ixJ3K4+OM8Y33Sd/NVgNtqX7sJsoY+Ii9mWFXZ7KjufQbQFRijdexC80l
+      R4AOCNOi/3iSzNFvw6/mw3azPi42Z5yGyZ5swm5IjToagWJoWcbeICC/fWCcxJUfmjjXuhkJcckg
+      uq8xgYvJqE6HcOy2N1KY70JhKkyasgXC2mt0UDSjT0i9af+EvpU3sksz/FpUtMDD9SXCIpZEjdpE
+      LPLtqkvbL3kXvCplI4r1AJIb4lyfvT24gyuUHyyP9DwdDXH8E71yjA4Uf86FPLDodKkdpt4faIbR
+      lo43rQvlpAlN2bfwlbW2k2WHDAueqA2LJ6Ksvuh/Qx6qnj9xMrF6Cs7kjiSitLJNPH/ZSMqqSGhs
+      3yL4c97d99B3SGbJdIkrR8Fxiz8BCuNGz8XTKn2/jnQBCQTeRm57wAcYLrsdU2KXXNfa1mDMFqSr
+      elnEv25FNVy8qi+BWatBiXXBSAp36vg0ClLPB2ri2TWSRQVrsFMYkvy7+PpUTKpF1G9/gxOxoWuC
+      kaoRYEdebFkNZHRhP0osGqUJtmivH6VyPBGGz8qRbnXVkzFuYw722EebC9HXltQ5S570Gsj+ipSs
+      k46kWTr2xb2tAp3XU3hWwy3BpIfSLQCzWHqYSJwVbJ8DmaY3YInUM7VJ6224aARgRQRzA9el1hlb
+      OeXfvVoPWFYtzs4AOGgY7YVQ3KzLN803aOlRIT6qF9W9BVcU19RdtQSXgpmPX5X4oFdo7UEH+cRX
+      ATfQhFmSx90PsvxrklJWtEbTdC6Y3Se82ezUGPzT1/a3iCd92w87VrwdCYP+FNIBTLTiN+PNHd9W
+      jBGV2xM/VqHF/Ss36dopdjZAkJh1P3JNVOG1POqZmB7M7W+7O6eymOJXvE3mrbsZOUnw9GDmz+Ie
+      8IQQ2R+WCZ+bXN4BmEwevTb0qvC2KvQglfUZvc4bRCtzQGhSdhiiOAD7PgYtlvgP2qbWGpfpKO7b
+      j0qyMT5+4tgR9F1CuUA2NXH93btsnMI4ycmX481pxW9Aad67DEhm+NoF8nHIwk2LZhdTKprj4IyG
+      Q/jEiwSALFmcKQFpszhWpIphJgMkGIkNl6ofk3mtADvCRkMMxTL57PHxGvhv1urfr7fm4He0+XSY
+      YzCA++uMOCsT3vvm5PoyvTtkWwCeQ3CjwxLrEStkXjt/gWokhoNWARCaLXqV3IDJAaeJluIt0Wqv
+      QnQROwb6u23h0k2DtaRMa6Xi+KvnmqaGvvFH9mpdcMFh/U857GJYYTiIMq/CXL7TUm3+tVByGWfl
+      LVJekbXAe177iIJbR9+2NcLU0cBDVMkC+PNnLcXiVV3q7BrNMVJFzZ6WUkH/+8Ih2T8Lrlu3APSc
+      qmqyiFq/DLTSzlPLGfHZYwMg7JYtY0jWXXsxKlOEz7OBKUbQPg==
+    </xenc:CipherValue>
+  </xenc:CipherData>
+</xenc:EncryptedData>
diff --git a/xmltoolingtest/data/BadKeyInfo/retrievalEmpty.xml b/xmltoolingtest/data/BadKeyInfo/retrievalEmpty.xml
new file mode 100644
index 0000000..1ba4e4c
--- /dev/null
+++ b/xmltoolingtest/data/BadKeyInfo/retrievalEmpty.xml
@@ -0,0 +1,63 @@
+<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+  <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+  <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+    <ds:RetrievalMethod/>
+    <test:SimpleElement xmlns:test="http://www.example.org/testObjects">
+      <ds:KeyInfo Id="SOMESTUFF">
+        <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="ENCkEY">
+          <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/>
+          <ds:KeyInfo>
+            <ds:KeyName>Sample Key</ds:KeyName>
+            <ds:KeyName>sp.example.org</ds:KeyName>
+            <ds:X509Data>
+              <ds:X509SubjectName>CN=sp.example.org,O=Internet2,C=US</ds:X509SubjectName>
+              <ds:X509Certificate>MIICjzCCAfigAwIBAgIJAKk8t1hYcMkhMA0GCSqGSIb3DQEBBAUAMDoxCzAJBgNV
+                BAYTAlVTMRIwEAYDVQQKEwlJbnRlcm5ldDIxFzAVBgNVBAMTDnNwLmV4YW1wbGUu
+                b3JnMB4XDTA1MDYyMDE1NDgzNFoXDTMyMTEwNTE1NDgzNFowOjELMAkGA1UEBhMC
+                VVMxEjAQBgNVBAoTCUludGVybmV0MjEXMBUGA1UEAxMOc3AuZXhhbXBsZS5vcmcw
+                gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANlZ1L1mKzYbUVKiMQLhZlfGDyYa
+                /jjCiaXP0WhLNgvJpOTeajvsrApYNnFX5MLNzuC3NeQIjXUNLN2Yo2MCSthBIOL5
+                qE5dka4z9W9zytoflW1LmJ8vXpx8Ay/meG4z//J5iCpYVEquA0xl28HUIlownZUF
+                7w7bx0cF/02qrR23AgMBAAGjgZwwgZkwHQYDVR0OBBYEFJZiO1qsyAyc3HwMlL9p
+                JpN6fbGwMGoGA1UdIwRjMGGAFJZiO1qsyAyc3HwMlL9pJpN6fbGwoT6kPDA6MQsw
+                CQYDVQQGEwJVUzESMBAGA1UEChMJSW50ZXJuZXQyMRcwFQYDVQQDEw5zcC5leGFt
+                cGxlLm9yZ4IJAKk8t1hYcMkhMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQAD
+                gYEAMFq/UeSQyngE0GpZueyD2UW0M358uhseYOgGEIfm+qXIFQF6MYwNoX7WFzhC
+                LJZ2E6mEvZZFHCHUtl7mGDvsRwgZ85YCtRbvleEpqfgNQToto9pLYe+X6vvH9Z6p
+                gmYsTmak+kxO93JprrOd9xp8aZPMEprL7VCdrhbZEfyYER0=
+              </ds:X509Certificate>
+            </ds:X509Data>
+          </ds:KeyInfo>
+          <xenc:CipherData>
+            <xenc:CipherValue>NpI48hf1FIEFKBtrxPasku3qsockyUD61ZYZhpyc6hayCczlKKvv/jtu8IAg0WCaoCG+Kj63Wc9y
+              C0BuAHuxX8bYvlgCulnXy8IAfFbybN9/W8/Au26at+Qcpue6LdCh5fzcBkWqBNhcRqeXyldiCEjbhspuA09kzI6DvHOOwqE=
+            </xenc:CipherValue>
+          </xenc:CipherData>
+        </xenc:EncryptedKey>
+      </ds:KeyInfo>
+    </test:SimpleElement>
+  </ds:KeyInfo>
+  <xenc:CipherData>
+    <xenc:CipherValue>i2n4xM6LBUuzlmnXPtNUYC/V1FMhC7DJomOmU4x+PcV6ybBT7/0Xy5rlpnXPweWgmmSJB7QezHr1
+      VDCurTngAaPwO6X2sn+ixJ3K4+OM8Y33Sd/NVgNtqX7sJsoY+Ii9mWFXZ7KjufQbQFRijdexC80l
+      R4AOCNOi/3iSzNFvw6/mw3azPi42Z5yGyZ5swm5IjToagWJoWcbeICC/fWCcxJUfmjjXuhkJcckg
+      uq8xgYvJqE6HcOy2N1KY70JhKkyasgXC2mt0UDSjT0i9af+EvpU3sksz/FpUtMDD9SXCIpZEjdpE
+      LPLtqkvbL3kXvCplI4r1AJIb4lyfvT24gyuUHyyP9DwdDXH8E71yjA4Uf86FPLDodKkdpt4faIbR
+      lo43rQvlpAlN2bfwlbW2k2WHDAueqA2LJ6Ksvuh/Qx6qnj9xMrF6Cs7kjiSitLJNPH/ZSMqqSGhs
+      3yL4c97d99B3SGbJdIkrR8Fxiz8BCuNGz8XTKn2/jnQBCQTeRm57wAcYLrsdU2KXXNfa1mDMFqSr
+      elnEv25FNVy8qi+BWatBiXXBSAp36vg0ClLPB2ri2TWSRQVrsFMYkvy7+PpUTKpF1G9/gxOxoWuC
+      kaoRYEdebFkNZHRhP0osGqUJtmivH6VyPBGGz8qRbnXVkzFuYw722EebC9HXltQ5S570Gsj+ipSs
+      k46kWTr2xb2tAp3XU3hWwy3BpIfSLQCzWHqYSJwVbJ8DmaY3YInUM7VJ6224aARgRQRzA9el1hlb
+      OeXfvVoPWFYtzs4AOGgY7YVQ3KzLN803aOlRIT6qF9W9BVcU19RdtQSXgpmPX5X4oFdo7UEH+cRX
+      ATfQhFmSx90PsvxrklJWtEbTdC6Y3Se82ezUGPzT1/a3iCd92w87VrwdCYP+FNIBTLTiN+PNHd9W
+      jBGV2xM/VqHF/Ss36dopdjZAkJh1P3JNVOG1POqZmB7M7W+7O6eymOJXvE3mrbsZOUnw9GDmz+Ie
+      8IQQ2R+WCZ+bXN4BmEwevTb0qvC2KvQglfUZvc4bRCtzQGhSdhiiOAD7PgYtlvgP2qbWGpfpKO7b
+      j0qyMT5+4tgR9F1CuUA2NXH93btsnMI4ycmX481pxW9Aad67DEhm+NoF8nHIwk2LZhdTKprj4IyG
+      Q/jEiwSALFmcKQFpszhWpIphJgMkGIkNl6ofk3mtADvCRkMMxTL57PHxGvhv1urfr7fm4He0+XSY
+      YzCA++uMOCsT3vvm5PoyvTtkWwCeQ3CjwxLrEStkXjt/gWokhoNWARCaLXqV3IDJAaeJluIt0Wqv
+      QnQROwb6u23h0k2DtaRMa6Xi+KvnmqaGvvFH9mpdcMFh/U857GJYYTiIMq/CXL7TUm3+tVByGWfl
+      LVJekbXAe177iIJbR9+2NcLU0cBDVMkC+PNnLcXiVV3q7BrNMVJFzZ6WUkH/+8Ih2T8Lrlu3APSc
+      qmqyiFq/DLTSzlPLGfHZYwMg7JYtY0jWXXsxKlOEz7OBKUbQPg==
+    </xenc:CipherValue>
+  </xenc:CipherData>
+</xenc:EncryptedData>
diff --git a/xmltoolingtest/data/BadKeyInfo/retrievalMissingType.xml b/xmltoolingtest/data/BadKeyInfo/retrievalMissingType.xml
new file mode 100644
index 0000000..d73db74
--- /dev/null
+++ b/xmltoolingtest/data/BadKeyInfo/retrievalMissingType.xml
@@ -0,0 +1,63 @@
+<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+  <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+  <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+    <ds:RetrievalMethod URI="#ENCkEY" />
+    <test:SimpleElement xmlns:test="http://www.example.org/testObjects">
+      <ds:KeyInfo Id="SOMESTUFF">
+        <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="ENCkEY">
+          <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/>
+          <ds:KeyInfo>
+            <ds:KeyName>Sample Key</ds:KeyName>
+            <ds:KeyName>sp.example.org</ds:KeyName>
+            <ds:X509Data>
+              <ds:X509SubjectName>CN=sp.example.org,O=Internet2,C=US</ds:X509SubjectName>
+              <ds:X509Certificate>MIICjzCCAfigAwIBAgIJAKk8t1hYcMkhMA0GCSqGSIb3DQEBBAUAMDoxCzAJBgNV
+                BAYTAlVTMRIwEAYDVQQKEwlJbnRlcm5ldDIxFzAVBgNVBAMTDnNwLmV4YW1wbGUu
+                b3JnMB4XDTA1MDYyMDE1NDgzNFoXDTMyMTEwNTE1NDgzNFowOjELMAkGA1UEBhMC
+                VVMxEjAQBgNVBAoTCUludGVybmV0MjEXMBUGA1UEAxMOc3AuZXhhbXBsZS5vcmcw
+                gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANlZ1L1mKzYbUVKiMQLhZlfGDyYa
+                /jjCiaXP0WhLNgvJpOTeajvsrApYNnFX5MLNzuC3NeQIjXUNLN2Yo2MCSthBIOL5
+                qE5dka4z9W9zytoflW1LmJ8vXpx8Ay/meG4z//J5iCpYVEquA0xl28HUIlownZUF
+                7w7bx0cF/02qrR23AgMBAAGjgZwwgZkwHQYDVR0OBBYEFJZiO1qsyAyc3HwMlL9p
+                JpN6fbGwMGoGA1UdIwRjMGGAFJZiO1qsyAyc3HwMlL9pJpN6fbGwoT6kPDA6MQsw
+                CQYDVQQGEwJVUzESMBAGA1UEChMJSW50ZXJuZXQyMRcwFQYDVQQDEw5zcC5leGFt
+                cGxlLm9yZ4IJAKk8t1hYcMkhMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQAD
+                gYEAMFq/UeSQyngE0GpZueyD2UW0M358uhseYOgGEIfm+qXIFQF6MYwNoX7WFzhC
+                LJZ2E6mEvZZFHCHUtl7mGDvsRwgZ85YCtRbvleEpqfgNQToto9pLYe+X6vvH9Z6p
+                gmYsTmak+kxO93JprrOd9xp8aZPMEprL7VCdrhbZEfyYER0=
+              </ds:X509Certificate>
+            </ds:X509Data>
+          </ds:KeyInfo>
+          <xenc:CipherData>
+            <xenc:CipherValue>NpI48hf1FIEFKBtrxPasku3qsockyUD61ZYZhpyc6hayCczlKKvv/jtu8IAg0WCaoCG+Kj63Wc9y
+              C0BuAHuxX8bYvlgCulnXy8IAfFbybN9/W8/Au26at+Qcpue6LdCh5fzcBkWqBNhcRqeXyldiCEjbhspuA09kzI6DvHOOwqE=
+            </xenc:CipherValue>
+          </xenc:CipherData>
+        </xenc:EncryptedKey>
+      </ds:KeyInfo>
+    </test:SimpleElement>
+  </ds:KeyInfo>
+  <xenc:CipherData>
+    <xenc:CipherValue>i2n4xM6LBUuzlmnXPtNUYC/V1FMhC7DJomOmU4x+PcV6ybBT7/0Xy5rlpnXPweWgmmSJB7QezHr1
+      VDCurTngAaPwO6X2sn+ixJ3K4+OM8Y33Sd/NVgNtqX7sJsoY+Ii9mWFXZ7KjufQbQFRijdexC80l
+      R4AOCNOi/3iSzNFvw6/mw3azPi42Z5yGyZ5swm5IjToagWJoWcbeICC/fWCcxJUfmjjXuhkJcckg
+      uq8xgYvJqE6HcOy2N1KY70JhKkyasgXC2mt0UDSjT0i9af+EvpU3sksz/FpUtMDD9SXCIpZEjdpE
+      LPLtqkvbL3kXvCplI4r1AJIb4lyfvT24gyuUHyyP9DwdDXH8E71yjA4Uf86FPLDodKkdpt4faIbR
+      lo43rQvlpAlN2bfwlbW2k2WHDAueqA2LJ6Ksvuh/Qx6qnj9xMrF6Cs7kjiSitLJNPH/ZSMqqSGhs
+      3yL4c97d99B3SGbJdIkrR8Fxiz8BCuNGz8XTKn2/jnQBCQTeRm57wAcYLrsdU2KXXNfa1mDMFqSr
+      elnEv25FNVy8qi+BWatBiXXBSAp36vg0ClLPB2ri2TWSRQVrsFMYkvy7+PpUTKpF1G9/gxOxoWuC
+      kaoRYEdebFkNZHRhP0osGqUJtmivH6VyPBGGz8qRbnXVkzFuYw722EebC9HXltQ5S570Gsj+ipSs
+      k46kWTr2xb2tAp3XU3hWwy3BpIfSLQCzWHqYSJwVbJ8DmaY3YInUM7VJ6224aARgRQRzA9el1hlb
+      OeXfvVoPWFYtzs4AOGgY7YVQ3KzLN803aOlRIT6qF9W9BVcU19RdtQSXgpmPX5X4oFdo7UEH+cRX
+      ATfQhFmSx90PsvxrklJWtEbTdC6Y3Se82ezUGPzT1/a3iCd92w87VrwdCYP+FNIBTLTiN+PNHd9W
+      jBGV2xM/VqHF/Ss36dopdjZAkJh1P3JNVOG1POqZmB7M7W+7O6eymOJXvE3mrbsZOUnw9GDmz+Ie
+      8IQQ2R+WCZ+bXN4BmEwevTb0qvC2KvQglfUZvc4bRCtzQGhSdhiiOAD7PgYtlvgP2qbWGpfpKO7b
+      j0qyMT5+4tgR9F1CuUA2NXH93btsnMI4ycmX481pxW9Aad67DEhm+NoF8nHIwk2LZhdTKprj4IyG
+      Q/jEiwSALFmcKQFpszhWpIphJgMkGIkNl6ofk3mtADvCRkMMxTL57PHxGvhv1urfr7fm4He0+XSY
+      YzCA++uMOCsT3vvm5PoyvTtkWwCeQ3CjwxLrEStkXjt/gWokhoNWARCaLXqV3IDJAaeJluIt0Wqv
+      QnQROwb6u23h0k2DtaRMa6Xi+KvnmqaGvvFH9mpdcMFh/U857GJYYTiIMq/CXL7TUm3+tVByGWfl
+      LVJekbXAe177iIJbR9+2NcLU0cBDVMkC+PNnLcXiVV3q7BrNMVJFzZ6WUkH/+8Ih2T8Lrlu3APSc
+      qmqyiFq/DLTSzlPLGfHZYwMg7JYtY0jWXXsxKlOEz7OBKUbQPg==
+    </xenc:CipherValue>
+  </xenc:CipherData>
+</xenc:EncryptedData>
diff --git a/xmltoolingtest/data/BadKeyInfo/retrievalMissingURI.xml b/xmltoolingtest/data/BadKeyInfo/retrievalMissingURI.xml
new file mode 100644
index 0000000..ed164c6
--- /dev/null
+++ b/xmltoolingtest/data/BadKeyInfo/retrievalMissingURI.xml
@@ -0,0 +1,63 @@
+<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+  <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+  <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+    <ds:RetrievalMethod URI="#ENCkEY" Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey"/>
+    <test:SimpleElement xmlns:test="http://www.example.org/testObjects">
+      <ds:KeyInfo Id="SOMESTUFF">
+        <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="ENCkEY">
+          <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/>
+          <ds:KeyInfo>
+            <ds:KeyName>Sample Key</ds:KeyName>
+            <ds:KeyName>sp.example.org</ds:KeyName>
+            <ds:X509Data>
+              <ds:X509SubjectName>CN=sp.example.org,O=Internet2,C=US</ds:X509SubjectName>
+              <ds:X509Certificate>MIICjzCCAfigAwIBAgIJAKk8t1hYcMkhMA0GCSqGSIb3DQEBBAUAMDoxCzAJBgNV
+                BAYTAlVTMRIwEAYDVQQKEwlJbnRlcm5ldDIxFzAVBgNVBAMTDnNwLmV4YW1wbGUu
+                b3JnMB4XDTA1MDYyMDE1NDgzNFoXDTMyMTEwNTE1NDgzNFowOjELMAkGA1UEBhMC
+                VVMxEjAQBgNVBAoTCUludGVybmV0MjEXMBUGA1UEAxMOc3AuZXhhbXBsZS5vcmcw
+                gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANlZ1L1mKzYbUVKiMQLhZlfGDyYa
+                /jjCiaXP0WhLNgvJpOTeajvsrApYNnFX5MLNzuC3NeQIjXUNLN2Yo2MCSthBIOL5
+                qE5dka4z9W9zytoflW1LmJ8vXpx8Ay/meG4z//J5iCpYVEquA0xl28HUIlownZUF
+                7w7bx0cF/02qrR23AgMBAAGjgZwwgZkwHQYDVR0OBBYEFJZiO1qsyAyc3HwMlL9p
+                JpN6fbGwMGoGA1UdIwRjMGGAFJZiO1qsyAyc3HwMlL9pJpN6fbGwoT6kPDA6MQsw
+                CQYDVQQGEwJVUzESMBAGA1UEChMJSW50ZXJuZXQyMRcwFQYDVQQDEw5zcC5leGFt
+                cGxlLm9yZ4IJAKk8t1hYcMkhMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQAD
+                gYEAMFq/UeSQyngE0GpZueyD2UW0M358uhseYOgGEIfm+qXIFQF6MYwNoX7WFzhC
+                LJZ2E6mEvZZFHCHUtl7mGDvsRwgZ85YCtRbvleEpqfgNQToto9pLYe+X6vvH9Z6p
+                gmYsTmak+kxO93JprrOd9xp8aZPMEprL7VCdrhbZEfyYER0=
+              </ds:X509Certificate>
+            </ds:X509Data>
+          </ds:KeyInfo>
+          <xenc:CipherData>
+            <xenc:CipherValue>NpI48hf1FIEFKBtrxPasku3qsockyUD61ZYZhpyc6hayCczlKKvv/jtu8IAg0WCaoCG+Kj63Wc9y
+              C0BuAHuxX8bYvlgCulnXy8IAfFbybN9/W8/Au26at+Qcpue6LdCh5fzcBkWqBNhcRqeXyldiCEjbhspuA09kzI6DvHOOwqE=
+            </xenc:CipherValue>
+          </xenc:CipherData>
+        </xenc:EncryptedKey>
+      </ds:KeyInfo>
+    </test:SimpleElement>
+  </ds:KeyInfo>
+  <xenc:CipherData>
+    <xenc:CipherValue>i2n4xM6LBUuzlmnXPtNUYC/V1FMhC7DJomOmU4x+PcV6ybBT7/0Xy5rlpnXPweWgmmSJB7QezHr1
+      VDCurTngAaPwO6X2sn+ixJ3K4+OM8Y33Sd/NVgNtqX7sJsoY+Ii9mWFXZ7KjufQbQFRijdexC80l
+      R4AOCNOi/3iSzNFvw6/mw3azPi42Z5yGyZ5swm5IjToagWJoWcbeICC/fWCcxJUfmjjXuhkJcckg
+      uq8xgYvJqE6HcOy2N1KY70JhKkyasgXC2mt0UDSjT0i9af+EvpU3sksz/FpUtMDD9SXCIpZEjdpE
+      LPLtqkvbL3kXvCplI4r1AJIb4lyfvT24gyuUHyyP9DwdDXH8E71yjA4Uf86FPLDodKkdpt4faIbR
+      lo43rQvlpAlN2bfwlbW2k2WHDAueqA2LJ6Ksvuh/Qx6qnj9xMrF6Cs7kjiSitLJNPH/ZSMqqSGhs
+      3yL4c97d99B3SGbJdIkrR8Fxiz8BCuNGz8XTKn2/jnQBCQTeRm57wAcYLrsdU2KXXNfa1mDMFqSr
+      elnEv25FNVy8qi+BWatBiXXBSAp36vg0ClLPB2ri2TWSRQVrsFMYkvy7+PpUTKpF1G9/gxOxoWuC
+      kaoRYEdebFkNZHRhP0osGqUJtmivH6VyPBGGz8qRbnXVkzFuYw722EebC9HXltQ5S570Gsj+ipSs
+      k46kWTr2xb2tAp3XU3hWwy3BpIfSLQCzWHqYSJwVbJ8DmaY3YInUM7VJ6224aARgRQRzA9el1hlb
+      OeXfvVoPWFYtzs4AOGgY7YVQ3KzLN803aOlRIT6qF9W9BVcU19RdtQSXgpmPX5X4oFdo7UEH+cRX
+      ATfQhFmSx90PsvxrklJWtEbTdC6Y3Se82ezUGPzT1/a3iCd92w87VrwdCYP+FNIBTLTiN+PNHd9W
+      jBGV2xM/VqHF/Ss36dopdjZAkJh1P3JNVOG1POqZmB7M7W+7O6eymOJXvE3mrbsZOUnw9GDmz+Ie
+      8IQQ2R+WCZ+bXN4BmEwevTb0qvC2KvQglfUZvc4bRCtzQGhSdhiiOAD7PgYtlvgP2qbWGpfpKO7b
+      j0qyMT5+4tgR9F1CuUA2NXH93btsnMI4ycmX481pxW9Aad67DEhm+NoF8nHIwk2LZhdTKprj4IyG
+      Q/jEiwSALFmcKQFpszhWpIphJgMkGIkNl6ofk3mtADvCRkMMxTL57PHxGvhv1urfr7fm4He0+XSY
+      YzCA++uMOCsT3vvm5PoyvTtkWwCeQ3CjwxLrEStkXjt/gWokhoNWARCaLXqV3IDJAaeJluIt0Wqv
+      QnQROwb6u23h0k2DtaRMa6Xi+KvnmqaGvvFH9mpdcMFh/U857GJYYTiIMq/CXL7TUm3+tVByGWfl
+      LVJekbXAe177iIJbR9+2NcLU0cBDVMkC+PNnLcXiVV3q7BrNMVJFzZ6WUkH/+8Ih2T8Lrlu3APSc
+      qmqyiFq/DLTSzlPLGfHZYwMg7JYtY0jWXXsxKlOEz7OBKUbQPg==
+    </xenc:CipherValue>
+  </xenc:CipherData>
+</xenc:EncryptedData>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list