XKMSValidateResult * XKMSMessageFactoryImpl::createValidateResult(
		XKMSValidateRequest * request,
		XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument **doc,
		XKMSResultType::ResultMajor rmaj,
		XKMSResultType::ResultMinor rmin,
		const XMLCh * id) {

	// Create a document to put the element in

	XMLCh tempStr[100];
	XMLString::transcode("Core", tempStr, 99);    
	DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr);

	*doc = impl->createDocument();

	// Embed the new structure in the document
	XKMSValidateResult * vr = createValidateResult(request, *doc, rmaj, rmin, id);
	(*doc)->appendChild(vr->getElement());

	return vr;
}
PKIX_BuildResult *
createBuildResult(
        char *dirName,
        char *anchorFileName,
        char *pubKeyCertFileName,
        char *firstChainCertFileName,
        char *secondChainCertFileName,
        void *plContext)
{
        PKIX_BuildResult *buildResult = NULL;
        PKIX_ValidateResult *valResult = NULL;
        PKIX_List *certChain = NULL;

        PKIX_TEST_STD_VARS();

        valResult = createValidateResult
                (dirName, anchorFileName, pubKeyCertFileName, plContext);
        certChain = createCertChain
                        (dirName,
                        firstChainCertFileName,
                        secondChainCertFileName,
                        plContext);

        PKIX_TEST_EXPECT_NO_ERROR
                (pkix_BuildResult_Create
                (valResult, certChain, &buildResult, plContext));

cleanup:

        if (PKIX_TEST_ERROR_RECEIVED){
                PKIX_TEST_DECREF_AC(buildResult);
        }

        PKIX_TEST_DECREF_AC(valResult);
        PKIX_TEST_DECREF_AC(certChain);

        PKIX_TEST_RETURN();

        return (buildResult);
}
int test_valresult(int argc, char *argv[]) {

        PKIX_ValidateResult *goodObject = NULL;
        PKIX_ValidateResult *equalObject = NULL;
        PKIX_ValidateResult *diffObject = NULL;
        PKIX_UInt32 actualMinorVersion;
        PKIX_UInt32 j = 0;

        char *goodInput = "yassir2yassir";
        char *diffInput = "yassir2bcn";
        char *dirName = NULL;

        char *expectedAscii =
                "[\n"
                "\tTrustAnchor: \t\t"
                "[\n"
                "\tTrusted CA Name:         "
                "CN=yassir,OU=bcn,OU=east,O=sun,C=us\n"
                "\tTrusted CA PublicKey:    ANSI X9.57 DSA Signature\n"
                "\tInitial Name Constraints:(null)\n"
                "]\n"
                "\tPubKey:    \t\t"
                "ANSI X9.57 DSA Signature\n"
                "\tPolicyTree:  \t\t(null)\n"
                "]\n";

        PKIX_TEST_STD_VARS();

        startTests("ValidateResult");

        PKIX_TEST_EXPECT_NO_ERROR(
            PKIX_PL_NssContext_Create(0, PKIX_FALSE, NULL, &plContext));

        if (argc < 2){
                printUsage(argv[0]);
                return (0);
        }

        dirName = argv[j+1];

        subTest("pkix_ValidateResult_Create");

        goodObject = createValidateResult
                (dirName, goodInput, diffInput, plContext);
        equalObject = createValidateResult
                (dirName, goodInput, diffInput, plContext);
        diffObject = createValidateResult
                (dirName, diffInput, goodInput, plContext);

        testGetPublicKey(goodObject, equalObject);
        testGetTrustAnchor(goodObject, equalObject);
        testGetPolicyTree(goodObject, equalObject);

        PKIX_TEST_EQ_HASH_TOSTR_DUP
                (goodObject,
                equalObject,
                diffObject,
                expectedAscii,
                ValidateResult,
                PKIX_FALSE);

        testDestroy(goodObject, equalObject, diffObject);

cleanup:

        PKIX_Shutdown(plContext);

        PKIX_TEST_RETURN();

        endTests("ValidateResult");

        return (0);
}