Package org.wso2.xkms2

Source Code of org.wso2.xkms2.ValidateTest

/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed 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.
*/
package org.wso2.xkms2;

import junit.framework.TestCase;
import org.apache.axiom.attachments.ByteArrayDataSource;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMText;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
import org.apache.xml.security.keys.KeyInfo;
import org.apache.xml.security.keys.content.X509Data;
import org.apache.xml.security.utils.Constants;
import org.wso2.xkms2.builder.ValidateRequestBuilder;
import org.wso2.xkms2.builder.ValidateResultBuilder;
import org.wso2.xkms2.util.XKMSUtil;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import javax.activation.DataHandler;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.security.KeyStore;
import java.security.cert.X509Certificate;

/*
*
*/

public class ValidateTest extends TestCase {

    public void setUp() throws java.lang.Exception {
        org.apache.xml.security.Init.init();
    }

    public void testDocSigValidateRequest() throws Exception {
        OMFactory fac = DOOMAbstractFactory.getOMFactory();
        OMNamespace ns = fac.createOMNamespace(XKMS2Constants.XKMS2_NS, "");
        OMNamespace emptyNs = fac.createOMNamespace("", "");

        OMElement validateRequestEle = fac.createOMElement("ValidateRequest",
                ns);
        validateRequestEle.declareNamespace(Constants.SignatureSpecNS, "ds");
        validateRequestEle.declareNamespace(
                "http://www.w3.org/2001/04/xmlenc#", "xenc");
        validateRequestEle.addAttribute("Id",
                "Ie26380bfeb9d0c5bc526d5213a162d46", emptyNs);
        validateRequestEle.addAttribute("Service",
                "http://www.example.org/XKMS", emptyNs);

        OMElement opaqueClientDataEle = fac.createOMElement("OpaqueClientData",
                ns);
        validateRequestEle.addChild(opaqueClientDataEle);
        OMText omText = fac.createOMText(new DataHandler(
                new ByteArrayDataSource("junk data".getBytes())), false);
        OMElement opaqueDataEle = fac.createOMElement("OpaqueData", ns);
        opaqueDataEle.addChild(omText);
        opaqueClientDataEle.addChild(opaqueDataEle);

        OMElement respondWithEle = fac.createOMElement("RespondWith", ns);
        respondWithEle.setText(RespondWith.X_509_CERT.getAnyURI());
        validateRequestEle.addChild(respondWithEle);

        OMElement queryKeyBindingEle = fac.createOMElement("QueryKeyBinding",
                ns);
        OMElement kiEle = getKI();

        queryKeyBindingEle.addChild(kiEle);

        OMElement keyUsageEle = fac.createOMElement("KeyUsage", ns);
        keyUsageEle.setText(KeyUsage.SIGNATURE.getAnyURI());
        queryKeyBindingEle.addChild(keyUsageEle);

        OMElement useKeyWithEle = fac.createOMElement("UseKeyWith", ns);
        useKeyWithEle.addAttribute("Application", "urn:ietf:rfc:2633", emptyNs);
        useKeyWithEle.addAttribute("Identifier", "alice@example.com", emptyNs);
        queryKeyBindingEle.addChild(useKeyWithEle);
        validateRequestEle.addChild(queryKeyBindingEle);

        ValidateRequestBuilder builder = new ValidateRequestBuilder();
        ValidateRequest validateRequest = (ValidateRequest) builder
                .buildElement(validateRequestEle);

        assertNotNull(validateRequest.getId());
        assertNotNull(validateRequest.getQueryKeyBinding());
        assertNotNull(validateRequest.getQueryKeyBinding().getKeyInfo());

        fac = DOOMAbstractFactory.getOMFactory();

        OMElement ele = validateRequest.serialize(fac);

        assertNotNull(ele);
    }

    public void testDocSigValidateResult() throws Exception {
        OMFactory fac = DOOMAbstractFactory.getOMFactory();
        OMNamespace ns = fac.createOMNamespace(XKMS2Constants.XKMS2_NS, "");
        OMNamespace emptyNs = fac.createOMNamespace("", "");

        OMElement validateResultEle = fac.createOMElement("ValidateResult", ns);
        validateResultEle.declareNamespace(Constants.SignatureSpecNS, "ds");
        validateResultEle.declareNamespace("http://www.w3.org/2001/04/xmlenc#",
                "xenc");
        validateResultEle.addAttribute("Id",
                "I34ef61b96f7db2250c229d37a17edfc0", emptyNs);
        validateResultEle.addAttribute("Service",
                "http://www.example.org/XKMS", emptyNs);
        validateResultEle.addAttribute("ResultMajor", ResultMajor.SUCCESS
                .getAnyURI(), emptyNs);
        validateResultEle.addAttribute("RequestId",
                "Ie26380bfeb9d0c5bc526d5213a162d46", emptyNs);

        OMElement keyBindingEle = fac.createOMElement("KeyBinding", ns);
        validateResultEle.addChild(keyBindingEle);
        keyBindingEle.addAttribute("Id", "Icf608e9e8b07468fde1b7ee5449fe831",
                emptyNs);

        OMElement kiEle = getKI1();
        keyBindingEle.addChild(kiEle);

        OMElement keyUsageEle1 = fac.createOMElement("KeyUsage", ns);
        keyUsageEle1.setText(KeyUsage.SIGNATURE.getAnyURI());

        OMElement keyUsageEle2 = fac.createOMElement("KeyUsage", ns);
        keyUsageEle2.setText(KeyUsage.SIGNATURE.getAnyURI());

        OMElement keyUsageEle3 = fac.createOMElement("KeyUsage", ns);
        keyUsageEle3.setText(KeyUsage.SIGNATURE.getAnyURI());

        keyBindingEle.addChild(keyUsageEle1);
        keyBindingEle.addChild(keyUsageEle2);
        keyBindingEle.addChild(keyUsageEle3);

        OMElement useKeyWithEle = fac.createOMElement("UseKeyWith", ns);
        useKeyWithEle.addAttribute("Application", "urn:ietf:rfc:2633", emptyNs);
        useKeyWithEle.addAttribute("Identifier", "alice@example.com", emptyNs);

        keyBindingEle.addChild(useKeyWithEle);

        OMElement statusEle = fac.createOMElement("Status", ns);
        statusEle.addAttribute("StatusValue", StatusValue.VALID.getAnyURI(),
                emptyNs);

        OMElement validReasonEle1 = fac.createOMElement("ValidReason", ns);
        validReasonEle1.setText(ValidReason.SIGNATURE.getAnyURI());
        OMElement validReasonEle2 = fac.createOMElement("ValidReason", ns);
        validReasonEle2.setText(ValidReason.ISSUER_TRUST.getAnyURI());
        OMElement validReasonEle3 = fac.createOMElement("ValidReason", ns);
        validReasonEle3.setText(ValidReason.REVOCATION_STATUS.getAnyURI());
        OMElement validReasonEle4 = fac.createOMElement("ValidReason", ns);
        validReasonEle4.setText(ValidReason.VALIDITY_INTERVAL.getAnyURI());

        statusEle.addChild(validReasonEle1);
        statusEle.addChild(validReasonEle2);
        statusEle.addChild(validReasonEle3);
        statusEle.addChild(validReasonEle4);

        keyBindingEle.addChild(statusEle);

        ValidateResult validateResult = (ValidateResult) ValidateResultBuilder.INSTANCE
                .buildElement(validateResultEle);

        assertNotNull(validateResult.getId());
        assertNotNull(validateResult.getKeyBindingList());
        KeyBinding keyBinding = (KeyBinding) validateResult.getKeyBindingList()
                .get(0);
        assertNotNull(keyBinding);
        assertNotNull(keyBinding.getKeyUsage());
        assertNotNull(keyBinding.getKeyInfo());
        assertNotNull(keyBinding.getUseKeyWith());
        Status status = keyBinding.getStatus();
        assertNotNull(status);
        assertNotNull(status.getStatusValue());
        assertNotNull(status.getValidReasonList());

        fac = DOOMAbstractFactory.getOMFactory();

        OMElement ele = validateResult.serialize(fac);

        assertNotNull(ele);
    }

    private OMElement getKI1() throws Exception {
        KeyStore ks1 = KeyStore.getInstance("JKS");
        InputStream fis1 = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("./org/wso2/xkms/kiss/kiss-store.jks");
        ks1.load(fis1, "xkms-kiss".toCharArray());

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);

        javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
        org.w3c.dom.Document doc = db.newDocument();
        KeyInfo ki = new KeyInfo(doc);

        doc.appendChild(ki.getElement());

        X509Certificate cert1 = (X509Certificate) ks1.getCertificate("kiss");

        X509Data x509Data = new X509Data(doc);
        x509Data.addCertificate(cert1);

        ki.add(x509Data);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        XKMSUtil.outputDOM(doc, bos);

        XMLStreamReader reader = XMLInputFactory.newInstance()
                .createXMLStreamReader(
                        new ByteArrayInputStream(bos.toByteArray()));
        StAXOMBuilder builder = new StAXOMBuilder(reader);
        OMElement kiEle = builder.getDocumentElement();
        kiEle.build();

        return kiEle;

    }

    private OMElement getKI() throws Exception {

        KeyStore ks1 = KeyStore.getInstance("JKS");
        KeyStore ks2 = KeyStore.getInstance("JKS");
        InputStream fis1 = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("./org/wso2/xkms/kiss/kiss-store.jks");
        InputStream fis2 = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("./org/wso2/xkms/kiss/kiss2-store.jks");

        ks1.load(fis1, "xkms-kiss".toCharArray());
        ks2.load(fis2, "xkms-kiss".toCharArray());

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);

        javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
        org.w3c.dom.Document doc = db.newDocument();
        KeyInfo ki = new KeyInfo(doc);

        doc.appendChild(ki.getElement());

        X509Certificate cert1 = (X509Certificate) ks1.getCertificate("kiss");
        X509Certificate cert2 = (X509Certificate) ks2.getCertificate("kiss2");

        X509Data x509Data = new X509Data(doc);
        x509Data.addCertificate(cert1);
        x509Data.addCertificate(cert2);
        ki.add(x509Data);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        XKMSUtil.outputDOM(doc, bos);

        XMLStreamReader reader = XMLInputFactory.newInstance()
                .createXMLStreamReader(
                        new ByteArrayInputStream(bos.toByteArray()));
        StAXOMBuilder builder = new StAXOMBuilder(reader);
        OMElement kiEle = builder.getDocumentElement();
        kiEle.build();

        return kiEle;

    }
}
TOP

Related Classes of org.wso2.xkms2.ValidateTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.