Search in sources :

Example 1 with Wait

use of iso.std.iso_iec._24727.tech.schema.Wait in project open-ecard by ecsec.

the class IfdEventManager method wait.

@Nonnull
protected List<IFDStatusType> wait(@Nonnull List<IFDStatusType> lastKnown) throws WSException {
    Wait wait = new Wait();
    wait.setContextHandle(ctx);
    wait.getIFDStatus().addAll(lastKnown);
    WaitResponse resp = env.getIFD().wait(wait);
    WSHelper.checkResult(resp);
    List<IFDStatusType> result = resp.getIFDEvent();
    return result;
}
Also used : IFDStatusType(iso.std.iso_iec._24727.tech.schema.IFDStatusType) Wait(iso.std.iso_iec._24727.tech.schema.Wait) WaitResponse(iso.std.iso_iec._24727.tech.schema.WaitResponse) Nonnull(javax.annotation.Nonnull)

Example 2 with Wait

use of iso.std.iso_iec._24727.tech.schema.Wait in project open-ecard by ecsec.

the class IFD method establishContext.

@Override
public synchronized EstablishContextResponse establishContext(EstablishContext parameters) {
    EstablishContextResponse response;
    try {
        // on first call, create a new unique handle
        if (ctxHandle == null) {
            // scwrapper = new SCWrapper();
            cm = new ChannelManager();
            ctxHandle = ChannelManager.createCtxHandle();
            env.addIFDCtx(ctxHandle);
            numClients = new AtomicInteger(1);
            // TODO: add custom ThreadFactory to control the thread name
            threadPool = Executors.newCachedThreadPool(new ThreadFactory() {

                private final AtomicInteger num = new AtomicInteger(0);

                private final ThreadGroup group = new ThreadGroup("IFD Wait");

                @Override
                public Thread newThread(Runnable r) {
                    String name = String.format("SCIO Watcher %d", num.getAndIncrement());
                    Thread t = new Thread(group, r, name);
                    t.setDaemon(false);
                    return t;
                }
            });
            asyncWaitThreads = new ConcurrentSkipListMap<>();
            evManager = new IfdEventManager(env, cm, ctxHandle);
            evManager.initialize();
        } else {
            // on second or further calls, increment usage counter
            numClients.incrementAndGet();
        }
        // prepare response
        response = WSHelper.makeResponse(EstablishContextResponse.class, WSHelper.makeResultOK());
        response.setContextHandle(ctxHandle);
        return response;
    } catch (IFDException ex) {
        LOG.warn(ex.getMessage(), ex);
        return WSHelper.makeResponse(EstablishContextResponse.class, ex.getResult());
    }
}
Also used : ThreadFactory(java.util.concurrent.ThreadFactory) ChannelManager(org.openecard.ifd.scio.wrapper.ChannelManager) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) EstablishContextResponse(iso.std.iso_iec._24727.tech.schema.EstablishContextResponse) IfdEventManager(org.openecard.ifd.event.IfdEventManager)

Example 3 with Wait

use of iso.std.iso_iec._24727.tech.schema.Wait in project open-ecard by ecsec.

the class IFD method wait.

@Override
public WaitResponse wait(Wait parameters) {
    WaitResponse response;
    // you thought of a different IFD obviously
    if (!ByteUtils.compare(ctxHandle, parameters.getContextHandle())) {
        String msg = "Invalid context handle specified.";
        Result r = WSHelper.makeResultError(ECardConstants.Minor.IFD.INVALID_CONTEXT_HANDLE, msg);
        response = WSHelper.makeResponse(WaitResponse.class, r);
        return response;
    }
    // get timeout value
    BigInteger timeout = parameters.getTimeOut();
    if (timeout == null) {
        timeout = BigInteger.valueOf(Long.MAX_VALUE);
    }
    if (timeout.signum() == -1 || timeout.signum() == 0) {
        String msg = "Invalid timeout value given, must be strictly positive.";
        Result r = WSHelper.makeResultUnknownError(msg);
        response = WSHelper.makeResponse(WaitResponse.class, r);
        return response;
    }
    long timeoutL;
    try {
        timeoutL = (long) timeout.doubleValue();
    } catch (ArithmeticException ex) {
        LOG.warn("Too big timeout value give, shortening to Long.MAX_VALUE.");
        timeoutL = Long.MAX_VALUE;
    }
    ChannelHandleType callback = parameters.getCallback();
    // callback is only useful with a protocol termination point
    if (callback != null && callback.getProtocolTerminationPoint() == null) {
        callback = null;
    }
    // if callback, generate session id
    String sessionId = null;
    if (callback != null) {
        ChannelHandleType newCallback = new ChannelHandleType();
        newCallback.setBinding(callback.getBinding());
        newCallback.setPathSecurity(callback.getPathSecurity());
        newCallback.setProtocolTerminationPoint(callback.getProtocolTerminationPoint());
        sessionId = ValueGenerators.genBase64Session();
        newCallback.setSessionIdentifier(sessionId);
        callback = newCallback;
    }
    try {
        EventWatcher watcher = new EventWatcher(cm, timeoutL, callback);
        List<IFDStatusType> initialState = watcher.start();
        // get expected status or initial status for all if none specified
        List<IFDStatusType> expectedState = parameters.getIFDStatus();
        if (expectedState.isEmpty()) {
            expectedState = initialState;
        } else {
            for (IFDStatusType s : expectedState) {
                // check that ifdname is present, needed for comparison
                if (s.getIFDName() == null) {
                    String msg = "IFD in a request IFDStatus not known.";
                    Result r = WSHelper.makeResultError(ECardConstants.Minor.IFD.Terminal.UNKNOWN_IFD, msg);
                    response = WSHelper.makeResponse(WaitResponse.class, r);
                    return response;
                }
                // check that at least one slot entry is present
                if (s.getSlotStatus().isEmpty()) {
                    // assume an empty one
                    SlotStatusType slot = new SlotStatusType();
                    slot.setCardAvailable(false);
                    slot.setIndex(BigInteger.ZERO);
                    s.getSlotStatus().add(slot);
                }
            }
        }
        watcher.setExpectedState(expectedState);
        // create the future and fire
        FutureTask<List<IFDStatusType>> future = new FutureTask<>(watcher);
        if (watcher.isAsync()) {
            // add future to async wait list
            asyncWaitThreads.put(sessionId, future);
            // finally run this darn thingy
            threadPool.execute(future);
            // prepare result with session id in it
            response = WSHelper.makeResponse(WaitResponse.class, WSHelper.makeResultOK());
            response.setSessionIdentifier(sessionId);
            return response;
        } else {
            // run wait in a future so it can be easily interrupted
            syncWaitThread = future;
            threadPool.execute(future);
            // get results from the future
            List<IFDStatusType> events = future.get();
            // prepare response
            response = WSHelper.makeResponse(WaitResponse.class, WSHelper.makeResultOK());
            response.getIFDEvent().addAll(events);
            return response;
        }
    } catch (SCIOException ex) {
        String msg = "Unknown SCIO error occured during wait call.";
        LOG.warn(msg, ex);
        Result r = WSHelper.makeResultUnknownError(msg);
        response = WSHelper.makeResponse(WaitResponse.class, r);
        return response;
    } catch (ExecutionException ex) {
        // this is the exception from within the future
        Throwable cause = ex.getCause();
        if (cause instanceof SCIOException) {
            String msg = "Unknown SCIO error occured during wait call.";
            LOG.warn(msg, cause);
            Result r = WSHelper.makeResultUnknownError(msg);
            response = WSHelper.makeResponse(WaitResponse.class, r);
        } else {
            String msg = "Unknown error during wait call.";
            LOG.error(msg, cause);
            Result r = WSHelper.makeResultUnknownError(msg);
            response = WSHelper.makeResponse(WaitResponse.class, r);
        }
        return response;
    } catch (InterruptedException ex) {
        String msg = "Wait interrupted by another thread.";
        LOG.warn(msg, ex);
        Result r = WSHelper.makeResultUnknownError(msg);
        response = WSHelper.makeResponse(WaitResponse.class, r);
        return response;
    }
}
Also used : SCIOException(org.openecard.common.ifd.scio.SCIOException) ChannelHandleType(iso.std.iso_iec._24727.tech.schema.ChannelHandleType) WaitResponse(iso.std.iso_iec._24727.tech.schema.WaitResponse) Result(oasis.names.tc.dss._1_0.core.schema.Result) FutureTask(java.util.concurrent.FutureTask) BigInteger(java.math.BigInteger) IFDStatusType(iso.std.iso_iec._24727.tech.schema.IFDStatusType) List(java.util.List) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) SlotStatusType(iso.std.iso_iec._24727.tech.schema.SlotStatusType) ExecutionException(java.util.concurrent.ExecutionException)

Example 4 with Wait

use of iso.std.iso_iec._24727.tech.schema.Wait in project open-ecard by ecsec.

the class IFD method releaseContext.

@Override
public synchronized ReleaseContextResponse releaseContext(ReleaseContext parameters) {
    ReleaseContextResponse response;
    if (ByteUtils.compare(ctxHandle, parameters.getContextHandle())) {
        if (numClients.decrementAndGet() == 0) {
            // last client detaches
            env.removeIFDCtx(ctxHandle);
            ctxHandle = null;
            numClients = null;
            // terminate thread pool
            // wait for threads to die and block new requests
            threadPool.shutdownNow();
            // just assume it worked ... and don't wait
            threadPool = null;
            asyncWaitThreads = null;
        }
        evManager.terminate();
        response = WSHelper.makeResponse(ReleaseContextResponse.class, WSHelper.makeResultOK());
        return response;
    } else {
        String msg = "Invalid context handle specified.";
        Result r = WSHelper.makeResultError(ECardConstants.Minor.IFD.INVALID_CONTEXT_HANDLE, msg);
        response = WSHelper.makeResponse(ReleaseContextResponse.class, r);
        return response;
    }
}
Also used : ReleaseContextResponse(iso.std.iso_iec._24727.tech.schema.ReleaseContextResponse) Result(oasis.names.tc.dss._1_0.core.schema.Result)

Example 5 with Wait

use of iso.std.iso_iec._24727.tech.schema.Wait in project open-ecard by ecsec.

the class AndroidMarshaller method marshal.

@Override
public synchronized Document marshal(Object o) throws MarshallingTypeException {
    Document document = documentBuilder.newDocument();
    document.setXmlStandalone(true);
    Element rootElement = null;
    if (o instanceof DestroyChannel) {
        DestroyChannel destroyChannel = (DestroyChannel) o;
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        Element emSlotHandle = createElementIso(document, "SlotHandle");
        emSlotHandle.appendChild(document.createTextNode(ByteUtils.toHexString(destroyChannel.getSlotHandle())));
        rootElement.appendChild(emSlotHandle);
    } else if (o instanceof DestroyChannelResponse) {
        DestroyChannelResponse response = (DestroyChannelResponse) o;
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        if (response.getProfile() != null) {
            Element emProfile = createElementIso(document, "Profile");
            emProfile.appendChild(document.createTextNode(response.getProfile()));
            rootElement.appendChild(emProfile);
        }
        if (response.getRequestID() != null) {
            Element emRequest = createElementIso(document, "RequestID");
            emRequest.appendChild(document.createElement(response.getRequestID()));
            rootElement.appendChild(emRequest);
        }
        if (response.getResult() != null) {
            Element emResult = marshalResult(response.getResult(), document);
            rootElement.appendChild(emResult);
        }
    } else if (o instanceof EstablishChannel) {
        EstablishChannel establishChannel = (EstablishChannel) o;
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        Element emSlotHandle = createElementIso(document, "SlotHandle");
        emSlotHandle.appendChild(document.createTextNode(ByteUtils.toHexString(establishChannel.getSlotHandle())));
        rootElement.appendChild(emSlotHandle);
        Element emAuthProtData = createElementIso(document, "AuthenticationProtocolData");
        emAuthProtData.setAttribute("Protocol", establishChannel.getAuthenticationProtocolData().getProtocol());
        for (Element e : establishChannel.getAuthenticationProtocolData().getAny()) {
            Element eClone = createElementIso(document, e.getLocalName());
            eClone.setTextContent(e.getTextContent());
            eClone.setAttribute("xmlns", "urn:iso:std:iso-iec:24727:tech:schema");
            emAuthProtData.appendChild(eClone);
        }
        if (establishChannel.getProfile() != null) {
            Element emProfile = createElementIso(document, "Profile");
            emProfile.appendChild(document.createTextNode(establishChannel.getProfile()));
            rootElement.appendChild(emProfile);
        }
        if (establishChannel.getRequestID() != null) {
            Element emRequest = createElementIso(document, "RequestID");
            emRequest.appendChild(document.createElement(establishChannel.getRequestID()));
            rootElement.appendChild(emRequest);
        }
        rootElement.appendChild(emAuthProtData);
    } else if (o instanceof EstablishChannelResponse) {
        EstablishChannelResponse response = (EstablishChannelResponse) o;
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        if (response.getProfile() != null) {
            Element emProfile = createElementIso(document, "Profile");
            emProfile.appendChild(document.createTextNode(response.getProfile()));
            rootElement.appendChild(emProfile);
        }
        if (response.getRequestID() != null) {
            Element emRequest = createElementIso(document, "RequestID");
            emRequest.appendChild(document.createElement(response.getRequestID()));
            rootElement.appendChild(emRequest);
        }
        if (response.getResult() != null) {
            Element emResult = marshalResult(response.getResult(), document);
            rootElement.appendChild(emResult);
        }
        if (response.getAuthenticationProtocolData() != null) {
            Element emAuthProtData = createElementIso(document, "AuthenticationProtocolData");
            emAuthProtData.setAttribute("Protocol", response.getAuthenticationProtocolData().getProtocol());
            for (Element e : response.getAuthenticationProtocolData().getAny()) {
                Element eClone = createElementIso(document, e.getLocalName());
                eClone.setTextContent(e.getTextContent());
                eClone.setAttribute("xmlns", "urn:iso:std:iso-iec:24727:tech:schema");
                emAuthProtData.appendChild(eClone);
            }
        }
    } else if (o instanceof DIDAuthenticate) {
        DIDAuthenticate auth = (DIDAuthenticate) o;
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        Element em;
        if (auth.getConnectionHandle() != null) {
            em = marshalConnectionHandle(auth.getConnectionHandle(), document);
            rootElement.appendChild(em);
        }
        if (auth.getDIDScope() != null) {
            em = createElementIso(document, "DIDScope");
            em.appendChild(document.createTextNode(auth.getDIDScope().value()));
            rootElement.appendChild(em);
        }
        if (auth.getDIDName() != null) {
            em = createElementIso(document, "DIDName");
            em.appendChild(document.createTextNode(auth.getDIDName()));
            rootElement.appendChild(em);
        }
        if (auth.getAuthenticationProtocolData() != null) {
            DIDAuthenticationDataType d = auth.getAuthenticationProtocolData();
            em = createElementIso(document, "AuthenticationProtocolData");
            em.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
            if (d instanceof EAC1OutputType) {
                em.setAttribute("xsi:type", "iso:EAC1OutputType");
            } else if (d instanceof EAC2OutputType) {
                em.setAttribute("xsi:type", "iso:EAC2OutputType");
            } else if (d instanceof EAC1InputType) {
                em.setAttribute("xsi:type", "iso:EAC1InputType");
            } else if (d instanceof EAC2InputType) {
                em.setAttribute("xsi:type", "iso:EAC2InputType");
            } else {
                String msg = "Marshalling a DIDAuthenticationDataType of " + d.getClass().getName() + " in DIDAuthentication is not supported";
                LOG.error(msg);
                throw new MarshallingTypeException(msg);
            }
            for (Element e : d.getAny()) {
                Element elemCopy = createElementIso(document, e.getLocalName());
                elemCopy.setTextContent(e.getTextContent());
                em.appendChild(elemCopy);
            }
            for (Map.Entry<QName, String> entry : d.getOtherAttributes().entrySet()) {
                em.setAttribute(entry.getKey().getNamespaceURI(), entry.getValue());
            }
            if (d.getProtocol() != null) {
                em.setAttribute("Protocol", d.getProtocol());
            }
            rootElement.appendChild(em);
        }
        if (auth.getSAMConnectionHandle() != null) {
            em = marshalConnectionHandle(auth.getSAMConnectionHandle(), document);
            rootElement.appendChild(em);
        }
        if (auth.getProfile() != null) {
            Element emProfile = createElementIso(document, "Profile");
            emProfile.appendChild(document.createTextNode(auth.getProfile()));
            rootElement.appendChild(emProfile);
        }
        if (auth.getRequestID() != null) {
            Element emRequest = createElementIso(document, "RequestID");
            emRequest.appendChild(document.createElement(auth.getRequestID()));
            rootElement.appendChild(emRequest);
        }
    } else if (o instanceof DIDAuthenticateResponse) {
        DIDAuthenticateResponse didAuthenticateResponse = (DIDAuthenticateResponse) o;
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        rootElement.appendChild(marshalResult(didAuthenticateResponse.getResult(), document));
        if (didAuthenticateResponse.getAuthenticationProtocolData() != null) {
            DIDAuthenticationDataType didAuthenticationDataType = didAuthenticateResponse.getAuthenticationProtocolData();
            Element elemEACOutput = createElementIso(document, "AuthenticationProtocolData");
            elemEACOutput.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
            if (didAuthenticationDataType instanceof EAC1OutputType) {
                elemEACOutput.setAttribute("xsi:type", "iso:EAC1OutputType");
            } else if (didAuthenticationDataType instanceof EAC2OutputType) {
                elemEACOutput.setAttribute("xsi:type", "iso:EAC2OutputType");
            } else {
                String msg = "Marshalling a DIDAuthenticationDataType of " + didAuthenticationDataType.getClass().getName() + " in DIDAuthentication is not supported";
                throw new MarshallingTypeException(msg);
            }
            for (Element e : didAuthenticationDataType.getAny()) {
                Element elemCopy = createElementIso(document, e.getLocalName());
                elemCopy.setTextContent(e.getTextContent());
                elemEACOutput.appendChild(elemCopy);
            }
            rootElement.appendChild(elemEACOutput);
        }
    // else only the result (with error) is returned
    } else if (o instanceof InitializeFrameworkResponse) {
        InitializeFrameworkResponse initializeFrameworkResponse = (InitializeFrameworkResponse) o;
        rootElement = createElementEcapi(document, o.getClass().getSimpleName());
        rootElement.appendChild(marshalResult(initializeFrameworkResponse.getResult(), document));
        Element emVersion = createElementEcapi(document, "Version");
        Element emMajor = createElementEcapi(document, "Major");
        emMajor.appendChild(document.createTextNode(initializeFrameworkResponse.getVersion().getMajor().toString()));
        emVersion.appendChild(emMajor);
        Element emMinor = createElementEcapi(document, "Minor");
        emMinor.appendChild(document.createTextNode(initializeFrameworkResponse.getVersion().getMinor().toString()));
        emVersion.appendChild(emMinor);
        Element emSubMinor = createElementEcapi(document, "SubMinor");
        emSubMinor.appendChild(document.createTextNode(initializeFrameworkResponse.getVersion().getSubMinor().toString()));
        emVersion.appendChild(emSubMinor);
        rootElement.appendChild(emVersion);
    } else if (o instanceof InternationalStringType) {
        InternationalStringType internationalStringType = (InternationalStringType) o;
        rootElement = marshalInternationStringType(internationalStringType, document, internationalStringType.getClass().getSimpleName());
    } else if (o instanceof Result) {
        Result r = (Result) o;
        rootElement = marshalResult(r, document);
    } else if (o instanceof iso.std.iso_iec._24727.tech.schema.StartPAOS) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        StartPAOS startPAOS = (StartPAOS) o;
        Element em = createElementIso(document, "SessionIdentifier");
        em.appendChild(document.createTextNode(startPAOS.getSessionIdentifier()));
        rootElement.appendChild(em);
        rootElement.appendChild(marshalConnectionHandle(startPAOS.getConnectionHandle().get(0), document));
    } else if (o instanceof TransmitResponse) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        TransmitResponse transmitResponsePOJO = (TransmitResponse) o;
        Element em = marshalResult(transmitResponsePOJO.getResult(), document);
        rootElement.appendChild(em);
        for (int i = 0; i < transmitResponsePOJO.getOutputAPDU().size(); i++) {
            em = createElementIso(document, "OutputAPDU");
            em.appendChild(document.createTextNode(ByteUtils.toHexString(transmitResponsePOJO.getOutputAPDU().get(i))));
            rootElement.appendChild(em);
        }
    } else if (o instanceof EstablishContext) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
    } else if (o instanceof EstablishContextResponse) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        EstablishContextResponse establishContextResponse = (EstablishContextResponse) o;
        Element em = createElementIso(document, "ContextHandle");
        em.appendChild(document.createTextNode(ByteUtils.toHexString(establishContextResponse.getContextHandle())));
        rootElement.appendChild(em);
        em = marshalResult(establishContextResponse.getResult(), document);
        rootElement.appendChild(em);
    } else if (o instanceof GetStatus) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        GetStatus getStatus = (GetStatus) o;
        Element em = createElementIso(document, "ContextHandle");
        em.appendChild(document.createTextNode(ByteUtils.toHexString(getStatus.getContextHandle())));
        rootElement.appendChild(em);
        if (getStatus.getIFDName() != null) {
            em = createElementIso(document, "IFDName");
            em.appendChild(document.createTextNode(getStatus.getIFDName()));
            rootElement.appendChild(em);
        }
    } else if (o instanceof Wait) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        Wait w = (Wait) o;
        Element em = createElementIso(document, "ContextHandle");
        em.appendChild(document.createTextNode(ByteUtils.toHexString(w.getContextHandle())));
        rootElement.appendChild(em);
        if (w.getTimeOut() != null) {
            em = createElementIso(document, "TimeOut");
            em.appendChild(document.createTextNode(w.getTimeOut().toString(16)));
            rootElement.appendChild(em);
        }
        if (w.getCallback() != null) {
            ChannelHandleType callback = w.getCallback();
            em = createElementIso(document, "Callback");
            if (callback.getBinding() != null) {
                Element em2 = createElementIso(document, "Binding");
                em2.appendChild(document.createTextNode(callback.getBinding()));
                em.appendChild(em2);
            }
            if (callback.getSessionIdentifier() != null) {
                Element em2 = createElementIso(document, "SessionIdentifier");
                em2.appendChild(document.createTextNode(callback.getSessionIdentifier()));
                em.appendChild(em2);
            }
            if (callback.getProtocolTerminationPoint() != null) {
                Element em2 = createElementIso(document, "ProtocolTerminationPoint");
                em2.appendChild(document.createTextNode(callback.getProtocolTerminationPoint()));
                em.appendChild(em2);
            }
            if (callback.getPathSecurity() != null) {
                PathSecurityType pathSecurityType = callback.getPathSecurity();
                Element em2 = createElementIso(document, "PathSecurity");
                Element em3 = createElementIso(document, "Protocol");
                em3.appendChild(document.createTextNode(pathSecurityType.getProtocol()));
                em2.appendChild(em3);
                if (pathSecurityType.getParameters() != null) {
                    em3 = createElementIso(document, "Parameters");
                    em3.appendChild(document.createTextNode(pathSecurityType.getParameters().toString()));
                    em2.appendChild(em3);
                }
                em.appendChild(em2);
            }
            rootElement.appendChild(em);
        }
    } else if (o instanceof Connect) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        Connect c = (Connect) o;
        Element em = createElementIso(document, "ContextHandle");
        em.appendChild(document.createTextNode(ByteUtils.toHexString(c.getContextHandle())));
        rootElement.appendChild(em);
        em = createElementIso(document, "IFDName");
        em.appendChild(document.createTextNode(c.getIFDName()));
        rootElement.appendChild(em);
        em = createElementIso(document, "Slot");
        em.appendChild(document.createTextNode(c.getSlot().toString()));
        rootElement.appendChild(em);
        if (c.isExclusive() != null) {
            em = createElementIso(document, "Exclusive");
            em.appendChild(document.createTextNode(c.isExclusive().toString()));
            rootElement.appendChild(em);
        }
    } else if (o instanceof ConnectResponse) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        ConnectResponse cr = (ConnectResponse) o;
        Element em = createElementIso(document, "SlotHandle");
        if (cr.getSlotHandle() != null) {
            em.appendChild(document.createTextNode(ByteUtils.toHexString(cr.getSlotHandle())));
            rootElement.appendChild(em);
        }
        em = marshalResult(cr.getResult(), document);
        rootElement.appendChild(em);
    } else if (o instanceof ListIFDs) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        ListIFDs c = (ListIFDs) o;
        Element em = createElementIso(document, "ContextHandle");
        em.appendChild(document.createTextNode(ByteUtils.toHexString(c.getContextHandle())));
        rootElement.appendChild(em);
    } else if (o instanceof ListIFDsResponse) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        ListIFDsResponse listIFDsResponse = (ListIFDsResponse) o;
        for (String s : listIFDsResponse.getIFDName()) {
            Element em = createElementIso(document, "IFDName");
            em.appendChild(document.createTextNode(s));
            rootElement.appendChild(em);
        }
        Element em = marshalResult(listIFDsResponse.getResult(), document);
        rootElement.appendChild(em);
    } else if (o instanceof Transmit) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        rootElement.setAttribute("xmlns:iso", "urn:iso:std:iso-iec:24727:tech:schema");
        Transmit t = (Transmit) o;
        Element em = createElementIso(document, "SlotHandle");
        em.appendChild(document.createTextNode(ByteUtils.toHexString(t.getSlotHandle())));
        rootElement.appendChild(em);
        for (int i = 0; i < t.getInputAPDUInfo().size(); i++) {
            em = createElementIso(document, "InputAPDUInfo");
            rootElement.appendChild(em);
            Element em2 = createElementIso(document, "InputAPDU");
            em2.appendChild(document.createTextNode(ByteUtils.toHexString(t.getInputAPDUInfo().get(i).getInputAPDU())));
            em.appendChild(em2);
            for (int y = 0; y < t.getInputAPDUInfo().get(i).getAcceptableStatusCode().size(); y++) {
                em2 = createElementIso(document, "AcceptableStatusCode");
                em2.appendChild(document.createTextNode(ByteUtils.toHexString(t.getInputAPDUInfo().get(i).getAcceptableStatusCode().get(y))));
                em.appendChild(em2);
            }
        }
    } else if (o instanceof RecognitionTree) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        RecognitionTree recognitionTree = (RecognitionTree) o;
        for (CardCall c : recognitionTree.getCardCall()) {
            rootElement.appendChild(marshalCardCall(c, document));
        }
    } else if (o instanceof CardCall) {
        CardCall c = (CardCall) o;
        rootElement = (Element) marshalCardCall(c, document);
    } else if (o instanceof Disconnect) {
        Disconnect d = (Disconnect) o;
        rootElement = createElementIso(document, d.getClass().getSimpleName());
        Element em = createElementIso(document, "SlotHandle");
        em.appendChild(document.createTextNode(ByteUtils.toHexString(d.getSlotHandle())));
        rootElement.appendChild(em);
        if (d.getAction() != null) {
            em = createElementIso(document, "Action");
            em.appendChild(document.createTextNode(d.getAction().value()));
        }
    } else if (o instanceof DisconnectResponse) {
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        DisconnectResponse response = (DisconnectResponse) o;
        String profile = response.getProfile();
        if (profile != null) {
            Element emProfile = createElementIso(document, "Profile");
            emProfile.appendChild(document.createTextNode(profile));
            rootElement.appendChild(emProfile);
        }
        String requestID = response.getRequestID();
        if (requestID != null) {
            Element emRequest = createElementIso(document, "RequestID");
            emRequest.appendChild(document.createElement(requestID));
            rootElement.appendChild(emRequest);
        }
        Element emResult = marshalResult(response.getResult(), document);
        rootElement.appendChild(emResult);
    } else if (o instanceof GetIFDCapabilities) {
        GetIFDCapabilities getIFDCapabilities = (GetIFDCapabilities) o;
        rootElement = createElementIso(document, o.getClass().getSimpleName());
        Element emContextHandle = createElementIso(document, "ContextHandle");
        emContextHandle.appendChild(document.createTextNode(ByteUtils.toHexString(getIFDCapabilities.getContextHandle())));
        rootElement.appendChild(emContextHandle);
        Element emIFDName = createElementIso(document, "IFDName");
        emIFDName.appendChild(document.createTextNode(getIFDCapabilities.getIFDName()));
        rootElement.appendChild(emIFDName);
    } else if (o instanceof GetIFDCapabilitiesResponse) {
        try {
            GetIFDCapabilitiesResponse response = (GetIFDCapabilitiesResponse) o;
            rootElement = createElementIso(document, o.getClass().getSimpleName());
            String profile = response.getProfile();
            if (profile != null) {
                Element emProfile = createElementIso(document, "Profile");
                emProfile.appendChild(document.createTextNode(profile));
                rootElement.appendChild(emProfile);
            }
            String requestID = response.getRequestID();
            if (requestID != null) {
                Element emRequest = createElementIso(document, "RequestID");
                emRequest.appendChild(document.createElement(requestID));
                rootElement.appendChild(emRequest);
            }
            Element emResult = marshalResult(response.getResult(), document);
            rootElement.appendChild(emResult);
            if (response.getIFDCapabilities() != null) {
                Element emIFDCaps = marshalIFDCapabilities(response.getIFDCapabilities(), document);
                rootElement.appendChild(emIFDCaps);
            }
        } catch (Exception ex) {
            LOG.error(ex.getMessage(), ex);
        }
    } else if (o instanceof TCTokenType) {
        TCTokenType tctoken = (TCTokenType) o;
        rootElement = document.createElement(o.getClass().getSimpleName());
        Element em = document.createElement("ServerAddress");
        em.appendChild(document.createTextNode(tctoken.getServerAddress()));
        rootElement.appendChild(em);
        em = document.createElement("SessionIdentifier");
        em.appendChild(document.createTextNode(tctoken.getSessionIdentifier()));
        rootElement.appendChild(em);
        em = document.createElement("RefreshAddress");
        em.appendChild(document.createTextNode(tctoken.getRefreshAddress()));
        rootElement.appendChild(em);
        // Optional element CommunicationErrorAddress
        String communicationErrorAddress = tctoken.getCommunicationErrorAddress();
        if (communicationErrorAddress != null) {
            em = document.createElement("CommunicationErrorAddress");
            em.appendChild(document.createTextNode(tctoken.getCommunicationErrorAddress()));
            rootElement.appendChild(em);
        }
        em = document.createElement("Binding");
        em.appendChild(document.createTextNode(tctoken.getBinding()));
        rootElement.appendChild(em);
        // Optional element PathSecurity-Protocol
        String pathSecurityProtocol = tctoken.getPathSecurityProtocol();
        if (pathSecurityProtocol != null) {
            em = document.createElement("PathSecurity-Protocol");
            em.appendChild(document.createTextNode(tctoken.getPathSecurityProtocol()));
            rootElement.appendChild(em);
        }
        // Optional element PathSecurity-Parameters
        TCTokenType.PathSecurityParameters pathSecurityParameters = tctoken.getPathSecurityParameters();
        if (pathSecurityParameters != null) {
            em = document.createElement("PSK");
            em.appendChild(document.createTextNode(ByteUtils.toHexString(pathSecurityParameters.getPSK())));
            Element em1 = document.createElement("PathSecurity-Parameters");
            em1.appendChild(em);
            rootElement.appendChild(em1);
        }
    } else if (o instanceof CardApplicationPath) {
        CardApplicationPath p = (CardApplicationPath) o;
        rootElement = createElementIso(document, "CardApplicationPath");
        Element em = createElementIso(document, "CardAppPathRequest");
        String profile = p.getProfile();
        if (profile != null) {
            Element emProfile = createElementIso(document, "Profile");
            emProfile.appendChild(document.createTextNode(profile));
            rootElement.appendChild(emProfile);
        }
        String requestID = p.getRequestID();
        if (requestID != null) {
            Element emRequest = createElementIso(document, "RequestID");
            emRequest.appendChild(document.createElement(requestID));
            rootElement.appendChild(emRequest);
        }
        // ChannelHandle
        ChannelHandleType h = p.getCardAppPathRequest().getChannelHandle();
        Element emChild = createElementIso(document, "ChannelHandle");
        em.appendChild(emChild);
        Element emChildOfCH;
        if (h.getProtocolTerminationPoint() != null) {
            emChildOfCH = createElementIso(document, "ProtocolTerminationPoint");
            emChildOfCH.appendChild(document.createTextNode(h.getProtocolTerminationPoint()));
            emChild.appendChild(emChildOfCH);
        }
        if (h.getSessionIdentifier() != null) {
            emChildOfCH = createElementIso(document, "SessionIdentifier");
            emChildOfCH.appendChild(document.createTextNode(h.getSessionIdentifier()));
            emChild.appendChild(emChildOfCH);
        }
        if (h.getBinding() != null) {
            emChildOfCH = createElementIso(document, "Binding");
            emChildOfCH.appendChild(document.createTextNode(h.getBinding()));
            emChild.appendChild(emChildOfCH);
        }
        PathSecurityType ps = h.getPathSecurity();
        if (ps != null) {
            emChildOfCH = createElementIso(document, "PathSecurity");
            Element emChildOfPS = createElementIso(document, "Protocol");
            emChildOfPS.appendChild(document.createTextNode(ps.getProtocol()));
            emChildOfCH.appendChild(emChildOfPS);
            // TODO here any type parsen
            LOG.error("AnyType of CardApplicationPath: " + ps.getParameters().toString());
            emChild.appendChild(emChildOfCH);
        }
        // context handle
        emChild = createElementIso(document, "ContextHandle");
        emChild.appendChild(document.createTextNode(ByteUtils.toHexString(p.getCardAppPathRequest().getContextHandle())));
        em.appendChild(emChild);
        // IFDName
        emChild = createElementIso(document, "IFDName");
        emChild.appendChild(document.createTextNode(p.getCardAppPathRequest().getIFDName()));
        em.appendChild(emChild);
        // SlotIndex
        emChild = createElementIso(document, "SlotIndex");
        emChild.appendChild(document.createTextNode(p.getCardAppPathRequest().getSlotIndex().toString()));
        em.appendChild(emChild);
        // Card Application
        emChild = createElementIso(document, "CardApplication");
        emChild.appendChild(document.createTextNode(ByteUtils.toHexString(p.getCardAppPathRequest().getCardApplication())));
        em.appendChild(emChild);
        rootElement.appendChild(em);
    } else if (o instanceof CardApplicationPathResponse) {
        CardApplicationPathResponse resp = (CardApplicationPathResponse) o;
        rootElement = createElementIso(document, "CardApplicationPathResponse");
        String profile = resp.getProfile();
        if (profile != null) {
            Element emProfile = createElementIso(document, "Profile");
            emProfile.appendChild(document.createTextNode(profile));
            rootElement.appendChild(emProfile);
        }
        String requestID = resp.getRequestID();
        if (requestID != null) {
            Element emRequest = createElementIso(document, "RequestID");
            emRequest.appendChild(document.createElement(requestID));
            rootElement.appendChild(emRequest);
        }
        Result result = resp.getResult();
        if (result != null) {
            Element emResult = marshalResult(resp.getResult(), document);
            rootElement.appendChild(emResult);
        }
        Element em = createElementIso(document, "CardAppPathResultSet");
        for (CardApplicationPathType path : resp.getCardAppPathResultSet().getCardApplicationPathResult()) {
            em.appendChild(marshalCardApplicationPathResult(path, document, "CardAppPathRequest"));
        }
        rootElement.appendChild(em);
    } else if (o instanceof BeginTransaction) {
        BeginTransaction t = (BeginTransaction) o;
        rootElement = createElementIso(document, "BeginTransaction");
        Element em = createElementIso(document, "SlotHandle");
        em.appendChild(document.createTextNode(ByteUtils.toHexString(t.getSlotHandle())));
        rootElement.appendChild(em);
    } else if (o instanceof BeginTransactionResponse) {
        BeginTransactionResponse response = (BeginTransactionResponse) o;
        rootElement = createElementIso(document, "BeginTransactionResponse");
        String profile = response.getProfile();
        if (profile != null) {
            Element emProfile = createElementIso(document, "Profile");
            emProfile.appendChild(document.createTextNode(profile));
            rootElement.appendChild(emProfile);
        }
        String requestID = response.getRequestID();
        if (requestID != null) {
            Element emRequest = createElementIso(document, "RequestID");
            emRequest.appendChild(document.createElement(requestID));
            rootElement.appendChild(emRequest);
        }
        Element emResult = marshalResult(response.getResult(), document);
        rootElement.appendChild(emResult);
    } else if (o instanceof EndTransaction) {
        EndTransaction end = (EndTransaction) o;
        rootElement = createElementIso(document, "EndTransaction");
        Element em = createElementIso(document, "SlotHandle");
        em.appendChild(document.createTextNode(ByteUtils.toHexString(end.getSlotHandle())));
        rootElement.appendChild(em);
    } else if (o instanceof EndTransactionResponse) {
        EndTransactionResponse response = (EndTransactionResponse) o;
        rootElement = createElementIso(document, "EndTransactionResponse");
        String profile = response.getProfile();
        if (profile != null) {
            Element emProfile = createElementIso(document, "Profile");
            emProfile.appendChild(document.createTextNode(profile));
            rootElement.appendChild(emProfile);
        }
        String requestID = response.getRequestID();
        if (requestID != null) {
            Element emRequest = createElementIso(document, "RequestID");
            emRequest.appendChild(document.createElement(requestID));
            rootElement.appendChild(emRequest);
        }
        Element emResult = marshalResult(response.getResult(), document);
        rootElement.appendChild(emResult);
    } else if (o instanceof CardApplicationConnect) {
        CardApplicationConnect c = (CardApplicationConnect) o;
        rootElement = createElementIso(document, "CardApplicationConnect");
        // Card Application Path
        rootElement.appendChild(marshalCardApplicationPathResult(c.getCardApplicationPath(), document, "CardApplicationPath"));
        Element em;
        if (c.getOutput() != null) {
            em = createElementIso(document, "Output");
            em.appendChild(marshalOutput(c.getOutput(), document));
            rootElement.appendChild(em);
        }
        // Exclusive Use
        if (c.isExclusiveUse() != null) {
            em = createElementIso(document, "ExclusiveUse");
            em.appendChild(document.createTextNode(Boolean.toString(c.isExclusiveUse())));
            rootElement.appendChild(em);
        }
    } else if (o instanceof CardApplicationConnectResponse) {
        CardApplicationConnectResponse resp = (CardApplicationConnectResponse) o;
        rootElement = createElementIso(document, "CardApplicationConnectResponse");
        appendResponseValues(resp.getProfile(), resp.getRequestID(), resp.getResult(), rootElement, document);
        ConnectionHandleType ch = resp.getConnectionHandle();
        if (ch != null) {
            Element em = marshalConnectionHandle(ch, document);
            rootElement.appendChild(em);
        }
    } else if (o instanceof CardApplicationDisconnect) {
        CardApplicationDisconnect c = (CardApplicationDisconnect) o;
        rootElement = createElementIso(document, "CardApplicationDisconnect");
        if (c.getConnectionHandle() != null) {
            rootElement.appendChild(marshalConnectionHandle(c.getConnectionHandle(), document));
        }
        if (c.getAction() != null) {
            Element em = createElementIso(document, "Action");
            em.appendChild(document.createTextNode(c.getAction().value()));
            rootElement.appendChild(em);
        }
        String profile = c.getProfile();
        if (profile != null) {
            Element emProfile = createElementIso(document, "Profile");
            emProfile.appendChild(document.createTextNode(profile));
            rootElement.appendChild(emProfile);
        }
        String requestID = c.getRequestID();
        if (requestID != null) {
            Element emRequest = createElementIso(document, "RequestID");
            emRequest.appendChild(document.createElement(requestID));
            rootElement.appendChild(emRequest);
        }
    } else if (o instanceof CardApplicationDisconnectResponse) {
        CardApplicationDisconnectResponse response = (CardApplicationDisconnectResponse) o;
        rootElement = createElementIso(document, "CardApplicationDisconnectResponse");
        String profile = response.getProfile();
        if (profile != null) {
            Element emProfile = createElementIso(document, "Profile");
            emProfile.appendChild(document.createTextNode(profile));
            rootElement.appendChild(emProfile);
        }
        String requestID = response.getRequestID();
        if (requestID != null) {
            Element emRequest = createElementIso(document, "RequestID");
            emRequest.appendChild(document.createElement(requestID));
            rootElement.appendChild(emRequest);
        }
        if (response.getResult() != null) {
            Element emResult = marshalResult(response.getResult(), document);
            rootElement.appendChild(emResult);
        }
    } else {
        throw new IllegalArgumentException("Cannot marshal " + o.getClass().getSimpleName());
    }
    document.appendChild(rootElement);
    return document;
}
Also used : TCTokenType(generated.TCTokenType) ConnectionHandleType(iso.std.iso_iec._24727.tech.schema.ConnectionHandleType) MarshallingTypeException(org.openecard.ws.marshal.MarshallingTypeException) LocalizedString(org.openecard.addon.manifest.LocalizedString) ChannelHandleType(iso.std.iso_iec._24727.tech.schema.ChannelHandleType) Document(org.w3c.dom.Document) StartPAOS(iso.std.iso_iec._24727.tech.schema.StartPAOS) StreamResult(javax.xml.transform.stream.StreamResult) Result(oasis.names.tc.dss._1_0.core.schema.Result) GetIFDCapabilities(iso.std.iso_iec._24727.tech.schema.GetIFDCapabilities) BeginTransaction(iso.std.iso_iec._24727.tech.schema.BeginTransaction) PathSecurityType(iso.std.iso_iec._24727.tech.schema.PathSecurityType) CardApplicationConnect(iso.std.iso_iec._24727.tech.schema.CardApplicationConnect) EstablishContext(iso.std.iso_iec._24727.tech.schema.EstablishContext) GetStatus(iso.std.iso_iec._24727.tech.schema.GetStatus) EndTransaction(iso.std.iso_iec._24727.tech.schema.EndTransaction) CardApplicationPathResponse(iso.std.iso_iec._24727.tech.schema.CardApplicationPathResponse) EstablishChannelResponse(iso.std.iso_iec._24727.tech.schema.EstablishChannelResponse) CardApplicationConnect(iso.std.iso_iec._24727.tech.schema.CardApplicationConnect) Connect(iso.std.iso_iec._24727.tech.schema.Connect) DIDAuthenticationDataType(iso.std.iso_iec._24727.tech.schema.DIDAuthenticationDataType) EstablishContextResponse(iso.std.iso_iec._24727.tech.schema.EstablishContextResponse) DestroyChannelResponse(iso.std.iso_iec._24727.tech.schema.DestroyChannelResponse) BeginTransactionResponse(iso.std.iso_iec._24727.tech.schema.BeginTransactionResponse) EstablishChannel(iso.std.iso_iec._24727.tech.schema.EstablishChannel) EAC2InputType(iso.std.iso_iec._24727.tech.schema.EAC2InputType) GetIFDCapabilitiesResponse(iso.std.iso_iec._24727.tech.schema.GetIFDCapabilitiesResponse) Wait(iso.std.iso_iec._24727.tech.schema.Wait) Map(java.util.Map) EAC2OutputType(iso.std.iso_iec._24727.tech.schema.EAC2OutputType) ListIFDs(iso.std.iso_iec._24727.tech.schema.ListIFDs) CardApplicationDisconnect(iso.std.iso_iec._24727.tech.schema.CardApplicationDisconnect) ConnectResponse(iso.std.iso_iec._24727.tech.schema.ConnectResponse) CardApplicationConnectResponse(iso.std.iso_iec._24727.tech.schema.CardApplicationConnectResponse) JAXBElement(javax.xml.bind.JAXBElement) Element(org.w3c.dom.Element) EndTransactionResponse(iso.std.iso_iec._24727.tech.schema.EndTransactionResponse) EAC1OutputType(iso.std.iso_iec._24727.tech.schema.EAC1OutputType) CardApplicationPathType(iso.std.iso_iec._24727.tech.schema.CardApplicationPathType) StartPAOS(iso.std.iso_iec._24727.tech.schema.StartPAOS) Disconnect(iso.std.iso_iec._24727.tech.schema.Disconnect) CardApplicationDisconnect(iso.std.iso_iec._24727.tech.schema.CardApplicationDisconnect) DisconnectResponse(iso.std.iso_iec._24727.tech.schema.DisconnectResponse) CardApplicationDisconnectResponse(iso.std.iso_iec._24727.tech.schema.CardApplicationDisconnectResponse) DestroyChannel(iso.std.iso_iec._24727.tech.schema.DestroyChannel) EAC1InputType(iso.std.iso_iec._24727.tech.schema.EAC1InputType) RecognitionTree(iso.std.iso_iec._24727.tech.schema.RecognitionTree) DIDAuthenticate(iso.std.iso_iec._24727.tech.schema.DIDAuthenticate) Transmit(iso.std.iso_iec._24727.tech.schema.Transmit) ListIFDsResponse(iso.std.iso_iec._24727.tech.schema.ListIFDsResponse) QName(javax.xml.namespace.QName) CardApplicationDisconnectResponse(iso.std.iso_iec._24727.tech.schema.CardApplicationDisconnectResponse) CardApplicationConnectResponse(iso.std.iso_iec._24727.tech.schema.CardApplicationConnectResponse) InternationalStringType(oasis.names.tc.dss._1_0.core.schema.InternationalStringType) DatatypeConfigurationException(javax.xml.datatype.DatatypeConfigurationException) MarshallingTypeException(org.openecard.ws.marshal.MarshallingTypeException) TransformerException(javax.xml.transform.TransformerException) IOException(java.io.IOException) RuntimeCryptoException(org.openecard.bouncycastle.crypto.RuntimeCryptoException) WSMarshallerException(org.openecard.ws.marshal.WSMarshallerException) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) SAXException(org.xml.sax.SAXException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) SOAPException(org.openecard.ws.soap.SOAPException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) DIDAuthenticateResponse(iso.std.iso_iec._24727.tech.schema.DIDAuthenticateResponse) CardApplicationPath(iso.std.iso_iec._24727.tech.schema.CardApplicationPath) InitializeFrameworkResponse(de.bund.bsi.ecard.api._1.InitializeFrameworkResponse) TransmitResponse(iso.std.iso_iec._24727.tech.schema.TransmitResponse) CardCall(iso.std.iso_iec._24727.tech.schema.CardCall)

Aggregations

ConnectionHandleType (iso.std.iso_iec._24727.tech.schema.ConnectionHandleType)6 Result (oasis.names.tc.dss._1_0.core.schema.Result)5 Disconnect (iso.std.iso_iec._24727.tech.schema.Disconnect)4 ArrayList (java.util.ArrayList)4 ChannelHandleType (iso.std.iso_iec._24727.tech.schema.ChannelHandleType)3 EstablishContextResponse (iso.std.iso_iec._24727.tech.schema.EstablishContextResponse)3 IFDStatusType (iso.std.iso_iec._24727.tech.schema.IFDStatusType)3 Wait (iso.std.iso_iec._24727.tech.schema.Wait)3 BeginTransaction (iso.std.iso_iec._24727.tech.schema.BeginTransaction)2 BeginTransactionResponse (iso.std.iso_iec._24727.tech.schema.BeginTransactionResponse)2 DIDAuthenticate (iso.std.iso_iec._24727.tech.schema.DIDAuthenticate)2 DIDAuthenticateResponse (iso.std.iso_iec._24727.tech.schema.DIDAuthenticateResponse)2 DIDAuthenticationDataType (iso.std.iso_iec._24727.tech.schema.DIDAuthenticationDataType)2 PathSecurityType (iso.std.iso_iec._24727.tech.schema.PathSecurityType)2 Transmit (iso.std.iso_iec._24727.tech.schema.Transmit)2 TransmitResponse (iso.std.iso_iec._24727.tech.schema.TransmitResponse)2 WaitResponse (iso.std.iso_iec._24727.tech.schema.WaitResponse)2 BigInteger (java.math.BigInteger)2 WSException (org.openecard.common.WSHelper.WSException)2 Document (org.w3c.dom.Document)2