Search in sources :

Example 1 with QueryKeyBindingType

use of org.apache.cxf.xkms.model.xkms.QueryKeyBindingType in project cxf by apache.

the class XKMSTest method testRegisterUnitTest.

@org.junit.Test
public void testRegisterUnitTest() throws Exception {
    SpringBusFactory bf = new SpringBusFactory();
    URL busFile = XKMSTest.class.getResource("client.xml");
    Bus bus = bf.createBus(busFile.toString());
    BusFactory.setDefaultBus(bus);
    BusFactory.setThreadDefaultBus(bus);
    // XKMSTest.class.getResource("xkms.wsdl");
    URL wsdl = new URL("https://localhost:" + PORT2 + "/XKMS?wsdl");
    String ns = "http://www.w3.org/2002/03/xkms#wsdl";
    QName serviceQName = new QName(ns, "XKMSService");
    Service service = Service.create(wsdl, serviceQName);
    QName portQName = new QName(NAMESPACE, "XKMSPort");
    XKMSPortType port = service.getPort(portQName, XKMSPortType.class);
    // updateAddressPort(port, PORT2);
    // First try to locate - which should fail
    LocateRequestType locateRequest = new LocateRequestType();
    locateRequest.setId("_xyz");
    locateRequest.setService("http://cxf.apache.org/services/XKMS/");
    QueryKeyBindingType queryKeyBinding = new QueryKeyBindingType();
    UseKeyWithType useKeyWithType = new UseKeyWithType();
    useKeyWithType.setApplication("urn:ietf:rfc:2459");
    useKeyWithType.setIdentifier("CN=client");
    queryKeyBinding.getUseKeyWith().add(useKeyWithType);
    locateRequest.setQueryKeyBinding(queryKeyBinding);
    LocateResultType locateResultType = port.locate(locateRequest);
    assertTrue(locateResultType.getResultMajor().endsWith("Success"));
    assertTrue(locateResultType.getResultMinor().endsWith("NoMatch"));
    // Now register
    RegisterRequestType registerRequest = new RegisterRequestType();
    registerRequest.setId("_xyz");
    registerRequest.setService("http://cxf.apache.org/services/XKMS/");
    PrototypeKeyBindingType prototypeKeyBinding = new PrototypeKeyBindingType();
    CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
    InputStream certInputStream = ClassLoaderUtils.getResourceAsStream("xkmstest.cer", this.getClass());
    Certificate certificate = certificateFactory.generateCertificate(certInputStream);
    KeyInfoType keyInfo = X509Utils.getKeyInfo((X509Certificate) certificate);
    prototypeKeyBinding.setKeyInfo(keyInfo);
    prototypeKeyBinding.getUseKeyWith().add(useKeyWithType);
    registerRequest.setPrototypeKeyBinding(prototypeKeyBinding);
    RegisterResultType registerResult = port.register(registerRequest);
    assertTrue(registerResult.getResultMajor().endsWith("Success"));
    assertFalse(registerResult.getKeyBinding().isEmpty());
    // Now locate again - which should work
    locateResultType = port.locate(locateRequest);
    assertTrue(locateResultType.getResultMajor().endsWith("Success"));
    assertFalse(locateResultType.getUnverifiedKeyBinding().isEmpty());
    // Delete the certificate so that the test works when run again
    Path path = FileSystems.getDefault().getPath("target/test-classes/certs/xkms/CN-client.cer");
    Files.delete(path);
}
Also used : Path(java.nio.file.Path) Bus(org.apache.cxf.Bus) RegisterResultType(org.apache.cxf.xkms.model.xkms.RegisterResultType) PrototypeKeyBindingType(org.apache.cxf.xkms.model.xkms.PrototypeKeyBindingType) QName(javax.xml.namespace.QName) InputStream(java.io.InputStream) RegisterRequestType(org.apache.cxf.xkms.model.xkms.RegisterRequestType) UseKeyWithType(org.apache.cxf.xkms.model.xkms.UseKeyWithType) Service(javax.xml.ws.Service) XKMSPortType(org.w3._2002._03.xkms_wsdl.XKMSPortType) LocateRequestType(org.apache.cxf.xkms.model.xkms.LocateRequestType) CertificateFactory(java.security.cert.CertificateFactory) URL(java.net.URL) KeyInfoType(org.apache.cxf.xkms.model.xmldsig.KeyInfoType) SpringBusFactory(org.apache.cxf.bus.spring.SpringBusFactory) QueryKeyBindingType(org.apache.cxf.xkms.model.xkms.QueryKeyBindingType) LocateResultType(org.apache.cxf.xkms.model.xkms.LocateResultType) X509Certificate(java.security.cert.X509Certificate) Certificate(java.security.cert.Certificate)

Example 2 with QueryKeyBindingType

use of org.apache.cxf.xkms.model.xkms.QueryKeyBindingType in project cxf by apache.

the class XKMSInvoker method prepareLocateXKMSRequest.

protected LocateRequestType prepareLocateXKMSRequest(List<X509AppId> ids) {
    QueryKeyBindingType queryKeyBindingType = XKMS_OF.createQueryKeyBindingType();
    for (X509AppId id : ids) {
        UseKeyWithType useKeyWithType = XKMS_OF.createUseKeyWithType();
        useKeyWithType.setIdentifier(id.getId());
        useKeyWithType.setApplication(id.getApplication().getUri());
        queryKeyBindingType.getUseKeyWith().add(useKeyWithType);
    }
    LocateRequestType locateRequestType = XKMS_OF.createLocateRequestType();
    locateRequestType.setQueryKeyBinding(queryKeyBindingType);
    setGenericRequestParams(locateRequestType);
    return locateRequestType;
}
Also used : QueryKeyBindingType(org.apache.cxf.xkms.model.xkms.QueryKeyBindingType) UseKeyWithType(org.apache.cxf.xkms.model.xkms.UseKeyWithType) LocateRequestType(org.apache.cxf.xkms.model.xkms.LocateRequestType)

Example 3 with QueryKeyBindingType

use of org.apache.cxf.xkms.model.xkms.QueryKeyBindingType in project cxf by apache.

the class X509LocatorTest method prepareLocateXKMSRequest.

private LocateRequestType prepareLocateXKMSRequest() {
    QueryKeyBindingType queryKeyBindingType = XKMS_OF.createQueryKeyBindingType();
    UseKeyWithType useKeyWithType = XKMS_OF.createUseKeyWithType();
    useKeyWithType.setIdentifier("alice");
    useKeyWithType.setApplication(Applications.PKIX.getUri());
    queryKeyBindingType.getUseKeyWith().add(useKeyWithType);
    LocateRequestType locateRequestType = XKMS_OF.createLocateRequestType();
    locateRequestType.setQueryKeyBinding(queryKeyBindingType);
    setGenericRequestParams(locateRequestType);
    return locateRequestType;
}
Also used : QueryKeyBindingType(org.apache.cxf.xkms.model.xkms.QueryKeyBindingType) UseKeyWithType(org.apache.cxf.xkms.model.xkms.UseKeyWithType) LocateRequestType(org.apache.cxf.xkms.model.xkms.LocateRequestType)

Example 4 with QueryKeyBindingType

use of org.apache.cxf.xkms.model.xkms.QueryKeyBindingType in project cxf by apache.

the class ValidatorCRLTest method prepareValidateXKMSRequest.

/*
     * Method is taken from {@link org.apache.cxf.xkms.client.XKMSInvoker}.
     */
private ValidateRequestType prepareValidateXKMSRequest(X509Certificate cert) {
    JAXBElement<byte[]> x509Cert;
    try {
        x509Cert = DSIG_OF.createX509DataTypeX509Certificate(cert.getEncoded());
    } catch (CertificateEncodingException e) {
        throw new IllegalArgumentException(e);
    }
    X509DataType x509DataType = DSIG_OF.createX509DataType();
    x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName().add(x509Cert);
    JAXBElement<X509DataType> x509Data = DSIG_OF.createX509Data(x509DataType);
    KeyInfoType keyInfoType = DSIG_OF.createKeyInfoType();
    keyInfoType.getContent().add(x509Data);
    QueryKeyBindingType queryKeyBindingType = XKMS_OF.createQueryKeyBindingType();
    queryKeyBindingType.setKeyInfo(keyInfoType);
    ValidateRequestType validateRequestType = XKMS_OF.createValidateRequestType();
    setGenericRequestParams(validateRequestType);
    validateRequestType.setQueryKeyBinding(queryKeyBindingType);
    // temporary
    validateRequestType.setId(cert.getSubjectDN().toString());
    return validateRequestType;
}
Also used : X509DataType(org.apache.cxf.xkms.model.xmldsig.X509DataType) QueryKeyBindingType(org.apache.cxf.xkms.model.xkms.QueryKeyBindingType) CertificateEncodingException(java.security.cert.CertificateEncodingException) KeyInfoType(org.apache.cxf.xkms.model.xmldsig.KeyInfoType) ValidateRequestType(org.apache.cxf.xkms.model.xkms.ValidateRequestType)

Example 5 with QueryKeyBindingType

use of org.apache.cxf.xkms.model.xkms.QueryKeyBindingType in project cxf by apache.

the class X509Locator method parse.

private List<UseKeyWithType> parse(LocateRequestType request) {
    List<UseKeyWithType> keyIDs = new ArrayList<>();
    if (request == null) {
        return keyIDs;
    }
    QueryKeyBindingType query = request.getQueryKeyBinding();
    if (query == null) {
        return keyIDs;
    }
    // http://www.w3.org/TR/xkms2/ [213]
    if (query.getTimeInstant() != null) {
        throw new XKMSException(ResultMajorEnum.HTTP_WWW_W_3_ORG_2002_03_XKMS_RECEIVER, ResultMinorEnum.HTTP_WWW_W_3_ORG_2002_03_XKMS_TIME_INSTANT_NOT_SUPPORTED);
    }
    keyIDs.addAll(parse(query.getKeyInfo()));
    List<UseKeyWithType> useKeyList = query.getUseKeyWith();
    keyIDs.addAll(useKeyList);
    return keyIDs;
}
Also used : XKMSException(org.apache.cxf.xkms.exception.XKMSException) UseKeyWithType(org.apache.cxf.xkms.model.xkms.UseKeyWithType) ArrayList(java.util.ArrayList) QueryKeyBindingType(org.apache.cxf.xkms.model.xkms.QueryKeyBindingType)

Aggregations

QueryKeyBindingType (org.apache.cxf.xkms.model.xkms.QueryKeyBindingType)9 UseKeyWithType (org.apache.cxf.xkms.model.xkms.UseKeyWithType)6 LocateRequestType (org.apache.cxf.xkms.model.xkms.LocateRequestType)5 KeyInfoType (org.apache.cxf.xkms.model.xmldsig.KeyInfoType)4 CertificateEncodingException (java.security.cert.CertificateEncodingException)3 ValidateRequestType (org.apache.cxf.xkms.model.xkms.ValidateRequestType)3 X509DataType (org.apache.cxf.xkms.model.xmldsig.X509DataType)3 BasicIntegrationTest (org.apache.cxf.xkms.itests.BasicIntegrationTest)2 Test (org.junit.Test)2 InputStream (java.io.InputStream)1 URL (java.net.URL)1 Path (java.nio.file.Path)1 Certificate (java.security.cert.Certificate)1 CertificateFactory (java.security.cert.CertificateFactory)1 X509Certificate (java.security.cert.X509Certificate)1 ArrayList (java.util.ArrayList)1 QName (javax.xml.namespace.QName)1 Service (javax.xml.ws.Service)1 Bus (org.apache.cxf.Bus)1 SpringBusFactory (org.apache.cxf.bus.spring.SpringBusFactory)1