NAME
InqReq - SET InqReq message data structures and routines
SYNOPSIS
#include <set_msg.h>

typedef struct InqReq_ {
    asn1set__MessageWrapper    messageWrapper;
    asn1set__InqReqData        inqReqData;

    /* only for signed case */
    cert_identity              cardholderSignatureCID;

#define                        InqReq__cardholderSignatureCID    0
    UCHAR                      _present[4];
} *InqReq;

InqReq safe_cast_InqReq(msg)
    set_msg            msg;             /* IN */
DESCRIPTION
InqReq contains the data from a SET InqReq message in native C form. See the asn_types.h and asn1set.h header files for the declarations of the various types. See the SET specification for a description of individual fields.

InqReq message objects of type set_msg can be cast to type InqReq using the safe_cast_InqReq() routine.

FIELDS
A call to make_set_msg() results in the protocol layer filling in the following fields:
 *    messageWrapper.messageHeader.version
 *    messageWrapper.messageHeader.date
 *    messageWrapper.messageHeader.messageIDs
 *    messageWrapper.messageHeader.rrPID
 *    messageWrapper.messageHeader.swIdent
 *    messageWrapper.message._choice
 *    inqReqData.transIDs
 *    inqReqData.rrpid
 *    inqReqData.chall_C2

It is unwise for applications to change the contents of the fields filled in by the protocol layer. Non-required fields may be left empty at the discretion of the cardholder application, subject to any business constraints placed on the application.

OPTIONAL FIELDS

The _present element is used for specifying the presence or absence of optional elements. The macros SET_PRESENT(), IS_PRESENT(), SET_ABSENT(), and IS_ABSENT() are used to specify or query the status of optional elements. See documentation on ASN.1/DER runtime types for additional information.

When sending a message, the presence or absence must be set (using SET_PRESENT() or SET_ABSENT()) prior to calling send_set_msg(). It is usually unnecessary to invoke the SET_ABSENT() macro because absent is the default setting for blank messages.

When receiving a message, presence or absence can be determined (using the IS_PRESENT() or IS_ABSENT() macro) after calling decode_set_msg().

InqReq__cardholderSignatureCID
Cardholder software indicates to SETREF that the InqReq message is to be signed by setting InqReq__cardholderSignatureCID to present.

SETREF indicates to merchant software that the InqReq message was signed by setting InqReq__cardholderSignatureCID to present.

CACHING
Cardholder
      STATE_CHALL_C2                 put
      STATE_INQREQ_RRPID             put
      STATE_PREQ_RRPID               get
      STATE_TRANSIDS                 get
      STATE_TRANSIDS                 put
Merchant
      STATE_CHALL_C2                 put
      STATE_INQREQ_RRPID             put
      STATE_TRANSIDS                 put
RETURN VALUES
On success, safe_cast_InqReq() returns a pointer to an InqReq data structure. Objects of type set_msg that were not created with message type asn1set__Message__inqReq will cause safe_cast_InqReq() to fail. On failure, safe_cast_InqReq() returns a 0 pointer.
SEE ALSO
set_msg, AuthReq, AuthRes, CainqReq, CapRes, PInitReq, PInitRes, PRes
NOTES
There is a difference between non-required and optional. Non-required fields may be omitted according to the SET protocol. Optional fields may be omitted according to ASN.1 encoding rules. In some messages, a field may be optional according to ASN.1, but still required by the SET protocol. In these cases, it is incumbent on the application to fill in these fields.

Optional fields that are filled in require an application of the SET_PRESENT() macro. See documentation on ASN.1/DER runtime types for additional information.

EXAMPLE
A more complete, explicated example is provided in the Implementor's Guide.
    inqReq = safe_cast_InqReq(request);
    assert(inqReq != 0);
   
    inqReq->messageWrapper.messageHeader.swIdent._choice = asn1set__SWIdent__printableString;
    inqReq->messageWrapper.messageHeader.swIdent.u.printableString = "WebTerm v7.2.3alpha";

    /* ... */

BUGS
This document describes a beta implementation. The information contained in this document may be incomplete and is subject to change.

Copyright © 1996, 1997, Visa International Service Association and MasterCard International Incorporated
All Rights Reserved.