int doMsgDump()

in xsec/tools/xklient/xklient.cpp [3807:3947]


int doMsgDump(XKMSMessageAbstractType * msg) {

    if (msg->isSigned()) {

        cout << "Message is signed.  Checking signature ... ";
        try {

            XSECKeyInfoResolverDefault theKeyInfoResolver;
            DSIGSignature * sig = msg->getSignature();

            // The only way we can verify is using keys read directly from the KeyInfo list,
            // so we add a KeyInfoResolverDefault to the Signature.

            sig->setKeyInfoResolver(&theKeyInfoResolver);

            if (sig->verify())
                cout << "OK!" << endl;
            else
                cout << "Bad!" << endl;

        }
    
        catch (const XSECException &e) {
            cout << "Bad!.  Caught exception : " << endl;
            char * msg = XMLString::transcode(e.getMsg());
            cout << msg << endl;
            XSEC_RELEASE_XMLCH(msg);
        }
    }

    int i;

    switch (msg->getMessageType()) {

    case XKMSMessageAbstractType::CompoundRequest :

        cout << "Compound Request\n\n";

        for (i = 0 ; i < ((XKMSCompoundRequest *) (msg))->getRequestListSize(); ++i) {

            cout << "Message " << i << endl;
            doMsgDump(((XKMSCompoundRequest *) msg)->getRequestListItem(i));

        }
        break;
    
    case XKMSMessageAbstractType::CompoundResult :

        cout << "Compound Result\n\n";

        for (i = 0 ; i < ((XKMSCompoundResult *)(msg))->getResultListSize(); ++i) {

            cout << "Message " << i << endl;
            doMsgDump(((XKMSCompoundResult *) msg)->getResultListItem(i));

        }
        break;
    
    case XKMSMessageAbstractType::LocateRequest :

        doLocateRequestDump((XKMSLocateRequest *) msg);
        break;

    case XKMSMessageAbstractType::LocateResult :

        doLocateResultDump((XKMSLocateResult *) msg);
        break;

    case XKMSMessageAbstractType::StatusRequest :

        doStatusRequestDump((XKMSStatusRequest *) msg);
        break;

    case XKMSMessageAbstractType::StatusResult :

        doStatusResultDump((XKMSStatusResult *) msg);
        break;

    case XKMSMessageAbstractType::Result :

        doResultDump((XKMSResult *) msg);
        break;

    case XKMSMessageAbstractType::ValidateRequest :

        doValidateRequestDump((XKMSValidateRequest *) msg);
        break;

    case XKMSMessageAbstractType::ValidateResult :

        doValidateResultDump((XKMSValidateResult *) msg);
        break;

    case XKMSMessageAbstractType::RegisterRequest :

        doRegisterRequestDump((XKMSRegisterRequest *) msg);
        break;

    case XKMSMessageAbstractType::RegisterResult :

        doRegisterResultDump((XKMSRegisterResult *) msg);
        break;

    case XKMSMessageAbstractType::RevokeRequest :

        doRevokeRequestDump((XKMSRevokeRequest *) msg);
        break;

    case XKMSMessageAbstractType::RevokeResult :

        doRevokeResultDump((XKMSRevokeResult *) msg);
        break;

    case XKMSMessageAbstractType::RecoverRequest :

        doRecoverRequestDump((XKMSRecoverRequest *) msg);
        break;

    case XKMSMessageAbstractType::RecoverResult :

        doRecoverResultDump((XKMSRecoverResult *) msg);
        break;

    case XKMSMessageAbstractType::ReissueRequest :

        doReissueRequestDump((XKMSReissueRequest *) msg);
        break;

    case XKMSMessageAbstractType::ReissueResult :

        doReissueResultDump((XKMSReissueResult *) msg);
        break;

    default :

        cout << "Unknown message type!" << endl;

    }

    return 0;
}