-/*\r
- * Copyright 2001-2005 Internet2\r
- * \r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-\r
-#include "XMLObjectBaseTestCase.h"\r
-\r
-#include <fstream>\r
-#include <xmltooling/signature/KeyInfo.h>\r
-\r
-using namespace xmlsignature;\r
-\r
-class KeyInfoTest : public CxxTest::TestSuite {\r
-public:\r
- KeyInfoTest() {}\r
-\r
- void setUp() {\r
- XMLObjectBuilder::registerDefaultBuilder(new AnyElementBuilder());\r
- }\r
-\r
- void tearDown() {\r
- XMLObjectBuilder::deregisterDefaultBuilder();\r
- }\r
-\r
- void testKeyInfo1() {\r
- TS_TRACE("testKeyInfo1");\r
-\r
- string path=data_path + "KeyInfo1.xml";\r
- ifstream fs(path.c_str());\r
- DOMDocument* doc=validatingPool->parse(fs);\r
- TS_ASSERT(doc!=NULL);\r
-\r
- const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());\r
- TS_ASSERT(b!=NULL);\r
-\r
- auto_ptr<KeyInfo> kiObject(\r
- dynamic_cast<KeyInfo*>(b->buildFromDocument(doc))\r
- );\r
- TS_ASSERT(kiObject.get()!=NULL);\r
- TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
- 3, kiObject->getOrderedChildren().size());\r
- TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
- 1, kiObject->getKeyValues().size());\r
- TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
- 1, kiObject->getX509Datas().front()->getX509Certificates().size());\r
-\r
- auto_ptr_XMLCh expected("Public Key for CN=xmldap.org, OU=Domain Control Validated, O=xmldap.org");\r
- TSM_ASSERT_SAME_DATA("KeyName was not expected value",\r
- expected.get(), kiObject->getKeyNames().front()->getName(), XMLString::stringLen(expected.get()));\r
-\r
- Validator::checkValidity(kiObject.get());\r
- }\r
-\r
- void testKeyInfo2() {\r
- TS_TRACE("testKeyInfo2");\r
-\r
- string path=data_path + "KeyInfo2.xml";\r
- ifstream fs(path.c_str());\r
- DOMDocument* doc=validatingPool->parse(fs);\r
- TS_ASSERT(doc!=NULL);\r
-\r
- const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());\r
- TS_ASSERT(b!=NULL);\r
-\r
- auto_ptr<KeyInfo> kiObject(\r
- dynamic_cast<KeyInfo*>(b->buildFromDocument(doc))\r
- );\r
- TS_ASSERT(kiObject.get()!=NULL);\r
- TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
- 2, kiObject->getOrderedChildren().size());\r
- TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
- 1, kiObject->getRetrievalMethods().size());\r
- TSM_ASSERT_EQUALS("Number of child elements was not expected value",\r
- 2, kiObject->getSPKIDatas().front()->getSPKISexps().size());\r
-\r
- Validator::checkValidity(kiObject.get());\r
- }\r
-\r
- void testKeyInfo3() {\r
- TS_TRACE("testKeyInfo3");\r
-\r
- string path=data_path + "KeyInfo3.xml";\r
- ifstream fs(path.c_str());\r
- DOMDocument* doc=nonvalidatingPool->parse(fs);\r
- TS_ASSERT(doc!=NULL);\r
-\r
- const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());\r
- TS_ASSERT(b!=NULL);\r
-\r
- auto_ptr<KeyInfo> kiObject(\r
- dynamic_cast<KeyInfo*>(b->buildFromDocument(doc))\r
- );\r
- TS_ASSERT(kiObject.get()!=NULL);\r
- TS_ASSERT_THROWS(Validator::checkValidity(kiObject.get()),ValidationException);\r
- }\r
-};\r
+/**
+ * Licensed to the University Corporation for Advanced Internet
+ * Development, Inc. (UCAID) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for
+ * additional information regarding copyright ownership.
+ *
+ * UCAID licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the
+ * License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific
+ * language governing permissions and limitations under the License.
+ */
+
+#include "XMLObjectBaseTestCase.h"
+
+#include <fstream>
+#include <xmltooling/signature/KeyInfo.h>
+#include <xmltooling/validation/ValidatorSuite.h>
+
+using namespace xmlsignature;
+
+class KeyInfoTest : public CxxTest::TestSuite {
+public:
+ KeyInfoTest() {}
+
+ void setUp() {
+ XMLObjectBuilder::registerDefaultBuilder(new AnyElementBuilder());
+ }
+
+ void tearDown() {
+ XMLObjectBuilder::deregisterDefaultBuilder();
+ }
+
+ void testKeyInfo1() {
+ string path=data_path + "KeyInfo1.xml";
+ ifstream fs(path.c_str());
+ DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs);
+ TS_ASSERT(doc!=nullptr);
+
+ const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
+ TS_ASSERT(b!=nullptr);
+
+ auto_ptr<KeyInfo> kiObject(dynamic_cast<KeyInfo*>(b->buildFromDocument(doc)));
+ TS_ASSERT(kiObject.get()!=nullptr);
+ TSM_ASSERT_EQUALS("Number of child elements was not expected value",
+ 4, kiObject->getOrderedChildren().size());
+ TSM_ASSERT_EQUALS("Number of child elements was not expected value",
+ 1, kiObject->getKeyValues().size());
+ TSM_ASSERT_EQUALS("Number of child elements was not expected value",
+ 1, kiObject->getX509Datas().front()->getX509Certificates().size());
+
+ auto_ptr_XMLCh expected("Public Key for CN=xmldap.org, OU=Domain Control Validated, O=xmldap.org");
+ TSM_ASSERT("KeyName was not expected value", XMLString::equals(expected.get(), kiObject->getKeyNames().front()->getName()));
+
+ SchemaValidators.validate(kiObject.get());
+ }
+
+ void testKeyInfo2() {
+ string path=data_path + "KeyInfo2.xml";
+ ifstream fs(path.c_str());
+ DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs);
+ TS_ASSERT(doc!=nullptr);
+
+ const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
+ TS_ASSERT(b!=nullptr);
+
+ auto_ptr<KeyInfo> kiObject(dynamic_cast<KeyInfo*>(b->buildFromDocument(doc)));
+ TS_ASSERT(kiObject.get()!=nullptr);
+ TSM_ASSERT_EQUALS("Number of child elements was not expected value",
+ 2, kiObject->getOrderedChildren().size());
+ TSM_ASSERT_EQUALS("Number of child elements was not expected value",
+ 1, kiObject->getRetrievalMethods().size());
+ TSM_ASSERT_EQUALS("Number of child elements was not expected value",
+ 2, kiObject->getSPKIDatas().front()->getSPKISexps().size());
+
+ SchemaValidators.validate(kiObject.get());
+ }
+
+ void testKeyInfo3() {
+ string path=data_path + "KeyInfo3.xml";
+ ifstream fs(path.c_str());
+ DOMDocument* doc=XMLToolingConfig::getConfig().getParser().parse(fs);
+ TS_ASSERT(doc!=nullptr);
+
+ const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
+ TS_ASSERT(b!=nullptr);
+
+ auto_ptr<KeyInfo> kiObject(dynamic_cast<KeyInfo*>(b->buildFromDocument(doc)));
+ TS_ASSERT(kiObject.get()!=nullptr);
+ TS_ASSERT_THROWS(SchemaValidators.validate(kiObject.get()),ValidationException);
+ }
+
+ void testKeyInfo4() {
+ string path=data_path + "KeyInfo4.xml";
+ ifstream fs(path.c_str());
+ DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs);
+ TS_ASSERT(doc!=nullptr);
+
+ const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
+ TS_ASSERT(b!=nullptr);
+
+ auto_ptr<KeyInfo> kiObject(dynamic_cast<KeyInfo*>(b->buildFromDocument(doc)));
+ TS_ASSERT(kiObject.get()!=nullptr);
+ TSM_ASSERT_EQUALS("Number of child elements was not expected value",
+ 1, kiObject->getKeyValues().size());
+ ECKeyValue* kv = kiObject->getKeyValues().front()->getECKeyValue();
+ TSM_ASSERT("Missing ECKeyValue", kv!=nullptr);
+ TSM_ASSERT("Missing NamedCurve", kv->getNamedCurve()!=nullptr);
+ TSM_ASSERT("Missing PublicKey", kv->getPublicKey()!=nullptr);
+
+ SchemaValidators.validate(kiObject.get());
+ }
+};