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

typedef struct PRes_ {
    asn1set__MessageWrapper        messageWrapper;
    asn1set__PResData              pResData;
    cert_identity                  merchantSignatureCID;

    /* only cardholder uses */
    asn1set__MerchantDataSyntax    merchantData;
    struct AcqCardMsgSeq_         *acqCardMsgSeq;
} *PRes;

PRes safe_cast_PRes(msg)
    set_msg            msg;             /* IN */
DESCRIPTION
PRes contains the data from a SET PRes 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.

PRes message objects of type set_msg can be cast to type PRes using the safe_cast_PRes() routine.

Merchant software should ignore merchantData and acqCardMsgSeq.

FIELDS
See documentation on AcqCardMsg for information on the struct AcqCardMsgSeq_ field.

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
 *    pResData.transIDs
 *    pResData.rrpid
 *    pResData.chall_C
 *    pResData.brandCRLIdentifier (optional)
 *    pResData.pResPayloadSeq->pResPayload.results.acqCardMsg (optional)
 *    acqCardMsgSeq
 *    merchantSignatureCID

It is unwise for applications to change the contents of the fields filled in by the protocol layer.

After calling make_set_msg(), merchant software must fill in the following required fields:

 *    pResData.pResPayloadSeq->pResPayload.completionCode

Non-required fields may be left empty at the discretion of the merchant application, subject to any business constraints placed on the application.

CACHING
Cardholder
      STATE_BACKKEYDATA              get
      STATE_CHALL_C2                 get
      STATE_CHALL_C                  get
      STATE_INQREQ_RRPID             get
      STATE_PREQ_RRPID               get
      STATE_TRANSIDS                 put
Merchant
      STATE_ACQCARDMSG               get
      STATE_CHALL_C2                 get
      STATE_CHALL_C                  get
      STATE_INQREQ_RRPID             get
      STATE_MERCHANT_SIGID           get
      STATE_PREQ_RRPID               get
      STATE_TRANSIDS                 get
      STATE_TRANSIDS                 put
RETURN VALUES
On success, safe_cast_PRes() returns a pointer to a PRes data structure. Objects of type set_msg that were not created with message type asn1set__Message__pRes will cause safe_cast_PRes() to fail. On failure, safe_cast_PRes() returns a 0 pointer.
SEE ALSO
set_msg, AuthReq, AuthRes, CapReq, CapRes, PInitReq, PInitRes, PReq
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 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.
    pRes = safe_cast_PRes(response);
    assert(pRes != 0);
   
    pRes->messageWrapper.messageHeader.swIdent._choice = asn1set__SWIdent__visibleString;
    pRes->messageWrapper.messageHeader.swIdent.u.visibleString = "MerchantCode v1.0b";

    /* ... */
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.