home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 1800s / rfc1898.txt < prev    next >
Text File  |  1996-02-13  |  114KB  |  2,916 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                    D. Eastlake 3rd
  8. Request for Comments: 1898                                     CyberCash
  9. Category: Informational                                        B. Boesch
  10.                                                                CyberCash
  11.                                                               S. Crocker
  12.                                                                CyberCash
  13.                                                                 M. Yesil
  14.                                                                CyberCash
  15.                                                            February 1996
  16.  
  17.  
  18.                CyberCash Credit Card Protocol Version 0.8
  19.  
  20. Status of this Memo
  21.  
  22.    This memo provides information for the Internet community.  This memo
  23.    does not specify an Internet standard of any kind.  Distribution of
  24.    this memo is unlimited.
  25.  
  26. Abstract
  27.  
  28.    CyberCash is developing a general payments system for use over the
  29.    Internet.  The structure and communications protocols of version 0.8
  30.    are described.  This version includes credit card payments only.
  31.    Additional capabilities are planned for future versions.
  32.  
  33.    This document covers only the current CyberCash system which is one
  34.    of the few operational systems in the rapidly evolving area of
  35.    Internet payments. CyberCash is committed to the further development
  36.    of its system and to cooperation with the Internet Engineering Task
  37.    Force and other standards organizations.
  38.  
  39. Acknowledgements
  40.  
  41.    The significant contributions of the following persons (in alphabetic
  42.    order) to this protocol are gratefully acknowledged:
  43.  
  44.         Bruce Binder, Judith Grass, Alden Hart, Steve Kiser, Steve
  45.         Klebe, Garry Knox, Tom Lee, Bob Lindenberg, Jim Lum, Bill
  46.         Melton, Denise Paredes, Prasad Chintamaneni, Fred Silverman,
  47.         Bruce Wilson, Garland Wong, Wei Wu, Mark Zalewski.
  48.  
  49.    In addition, Jeff Stapleton and Peter Wagner made useful comments on
  50.    the first version of this memo.
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Eastlake, et al              Informational                      [Page 1]
  59.  
  60. RFC 1898                 CyberCash Version 0.8             February 1996
  61.  
  62.  
  63. History
  64.  
  65.    For historic purposes, it should be noted that this document was
  66.    first posted as an Internet draft, and thus made publicly available,
  67.    on 8 July 1995.
  68.  
  69. Table of Contents
  70.  
  71.       1. Overall System..........................................3
  72.       1.1 System Overview........................................3
  73.       1.2 Security Approach......................................5
  74.       1.2.1 Authentication and Persona Identity..................5
  75.       1.2.2 Privacy..............................................6
  76.       1.3 Credit Card Operation..................................6
  77.       2. General Message Wrapper Format..........................7
  78.       2.1 Message Format.........................................7
  79.       2.2 Details of Format......................................8
  80.       2.3 Body Parts.............................................8
  81.       2.4 Transparent Part.......................................9
  82.       2.5 Opaque Part...........................................10
  83.       2.6 Trailer...............................................10
  84.       2.7 Example Messages......................................11
  85.       3. Signatures and Hashes..................................12
  86.       3.1 Digital Signatures....................................12
  87.       3.2 Hash Codes............................................13
  88.       4. Specific Message Formats...............................13
  89.       4.1 Persona Registration and Application Retrieval........14
  90.       4.1.1 R1 - registration...................................14
  91.       4.1.2 R2 - registration-response..........................15
  92.       4.1.3 GA1 - get-application...............................16
  93.       4.1.4 GA2 - get-application-response......................17
  94.       4.2 Binding Credit Cards..................................18
  95.       4.2.1 BC1 - bind-credit-card..............................18
  96.       4.2.2 BC4 - bind-credit-card-response.....................20
  97.       4.3 Customer Credit Card Purchasing Messages..............21
  98.       4.3.1 PR1 - payment-request...............................21
  99.       4.3.2 CH1 - credit-card-payment...........................23
  100.       4.3.3 CH2 - charge-card-response..........................24
  101.       4.4 Merchant Credit Card Purchasing Messages..............25
  102.       4.4.1 CM1 - auth-only.....................................26
  103.       4.4.2 CM2 - auth-capture..................................28
  104.       3.4.3 CM3 - post-auth-capture.............................28
  105.       4.4.4 CM4 - void..........................................30
  106.       4.4.5 CM5 - return........................................32
  107.       4.4.6 CM6 - charge-action-response........................32
  108.       4.4.7 The MM* Message Series..............................34
  109.       4.4.8 CD1 - card-data-request.............................35
  110.       4.4.9 CD2 - card-data-response............................37
  111.  
  112.  
  113.  
  114. Eastlake, et al              Informational                      [Page 2]
  115.  
  116. RFC 1898                 CyberCash Version 0.8             February 1996
  117.  
  118.  
  119.       4.5 Utility and Error Messges.............................38
  120.       4.5.1 P1 - ping...........................................39
  121.       4.5.2 P2 - ping-response..................................39
  122.       4.5.3 TQ1 - transaction-query.............................40
  123.       4.5.4 TQ2 - transaction-cancel............................41
  124.       4.5.5 TQ3 - transaction-response..........................42
  125.       4.5.6 UNK1 - unknown-error................................44
  126.       4.5.7 DL1 - diagnostic-log................................46
  127.       4.5.8 DL2 - merchant-diagnostic-log.......................47
  128.       4.6 Table of Messages Described...........................48
  129.       5. Future Development.....................................49
  130.       5.1 The Credit Card Authorization/Clearance Process.......49
  131.       5.2 Lessons Learned.......................................50
  132.       6. Security Considerations................................51
  133.       References................................................51
  134.       Authors' Addresses........................................52
  135.  
  136. 1. Overall System
  137.  
  138.    CyberCash, Inc. of Reston, Virginia was founded in August of 1994 to
  139.    partner with financial institutions and providers of goods and
  140.    services to deliver a safe, convenient and inexpensive system for
  141.    making payments on the Internet.  The CyberCash approach is based on
  142.    establishing a trusted link between the new world of cyberspace and
  143.    the traditional banking world.  CyberCash serves as a conduit through
  144.    which payments can be transported quickly, easily and safely between
  145.    buyers, sellers and their banks.  Significantly - much as it is the
  146.    real world of commerce - the buyer and seller need not have any prior
  147.    existing relationship.
  148.  
  149.    As a neutral third party whose sole concern is ensuring the delivery
  150.    of payments from one party to another, CyberCash is the linchpin in
  151.    delivering spontaneous consumer electronic commerce on the Internet.
  152.  
  153. 1.1 System Overview
  154.  
  155.    The CyberCash system will provide several separate payment services
  156.    on the Internet including credit card and electronic cash.  To gain
  157.    access to CyberCash services, consumers need only a personal computer
  158.    with a network connection.  Similarly, merchants and banks need make
  159.    only minimal changes to their current operating procedures in order
  160.    to process CyberCash transactions, enabling them to more quickly
  161.    integrate safe on-line payments into their existing service
  162.    offerings.  Communications with banks are over existing financial
  163.    communications networks.
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Eastlake, et al              Informational                      [Page 3]
  171.  
  172. RFC 1898                 CyberCash Version 0.8             February 1996
  173.  
  174.  
  175.    To get started, consumers download free software from CyberCash on
  176.    the Internet.  This software establishes the electronic link between
  177.    consumers, merchants and their banks as well as between individuals.
  178.    To make gaining access to the CyberCash system even easier, CyberCash
  179.    "PAY" buttons may be incorporated into popular on-line service and
  180.    software graphical user interfaces so that consumers using these
  181.    products can easily enter the CyberCash system when they are ready to
  182.    make payments for goods and services.  Consumers need not have any
  183.    prior relationship with CyberCash to use the CyberCash system.  They
  184.    can easily set up their CyberCash persona on-line.
  185.  
  186.    Transactions are automated in that once the consumer enters
  187.    appropriate information into his own computer, no manual steps are
  188.    required to process authorization or clearance transactions through
  189.    the entire system.  The consumer need only initiate payment for each
  190.    transaction by exercising the pay option on an electronic form.
  191.    Transactions are safe in that they are cryptographicly protected from
  192.    tampering and modification by eavesdroppers. And they are private in
  193.    that information about the consumer not relevant to the transaction
  194.    is not visible to the merchant.
  195.  
  196.       +------------+            +------------+
  197.       |            |            |            |
  198.       |  Internet  |            |  Internet  |
  199.       |  customer  +------------+  merchant  +
  200.       |            |            |  /         |
  201.       +------------+            +------------+
  202.                                 /
  203.                                /
  204.                    +------------|-+
  205.                    | CyberCash  | |
  206.                    |     server | |
  207.                    +-----+------|-+
  208.                          |      |
  209.                          |      |
  210.           +--------------+------|---------+
  211.           | +--------+       +--+-------+ |
  212.           | | card   +-------+ / charge | |
  213.           | | issuer |       | acquirer | |
  214.           | +--------+       +----------+ |
  215.           |                               |
  216.           |      The Banking System       |
  217.           +-------------------------------+
  218.  
  219.                    SYSTEM OVERVIEW
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Eastlake, et al              Informational                      [Page 4]
  227.  
  228. RFC 1898                 CyberCash Version 0.8             February 1996
  229.  
  230.  
  231. 1.2 Security Approach
  232.  
  233.    The CyberCash system pays special attention to security issues.  It
  234.    uses encryption technology from the world's leading sources of
  235.    security technology and is committed over time to employing new
  236.    security technologies as they emerge.
  237.  
  238. 1.2.1 Authentication and Persona Identity
  239.  
  240.    Authentication of messages is based on Public Key encryption as
  241.    developed by RSA.  The CyberCash Server maintains records of the
  242.    public key associated with every customer and merchant persona.  It
  243.    is thus able to authenticate any information digitally signed by a
  244.    customer or merchant regardless of the path the data followed on its
  245.    way to the server.  The corresponding private key, which is needed to
  246.    create such digital signatures, will be held by the customer or
  247.    merchant and never revealed to other parties.  In customer software,
  248.    the private key is only stored in an encrypted form protected by a
  249.    passphrase.
  250.  
  251.    While the true CyberCash identity of a customer or merchant is
  252.    recognized by their public/private key pair, such keys are too
  253.    cumbersome (over 100 hex digits) to be remembered or typed by people.
  254.    So, the user interface utilizes short alphanumeric ID's selected by
  255.    the user or merchant for purposes of specifying a persona.  CyberCash
  256.    adds check digits to the requested ID to minimize the chance of
  257.    accidental wrong persona selection.  Persona IDUs are essentially
  258.    public information.  Possession of an persona ID without the
  259.    corresponding private key is of no benefit in the current system.
  260.  
  261.    Individuals or organizations may establish one or more CyberCash
  262.    customer personas directly with CyberCash.  Thus, an individual may
  263.    have several unrelated CyberCash personas or share a CyberCash
  264.    persona with other individuals.  This approach provides a degree of
  265.    privacy consistent with Internet presence generally and with cash
  266.    transactions specifically.  However, persona holders who wish to use
  267.    a credit card for purchases in conjunction with their CyberCash
  268.    persona must first meet such on-line identification criteria as the
  269.    card issuing organization requires.
  270.  
  271.    Control over a CyberCash persona is normally available only to an
  272.    entity that possesses the private key for that persona.  However, a
  273.    special provision is made to associate an emergency close out
  274.    passphrase with a CyberCash persona.  On receipt of the emergency
  275.    close out passphrase, even if received over insecure channels such as
  276.    a telephone call or ordinary email, CyberCash will suspend activity
  277.    for the CyberCash persona.  This emergency close-out passphrase can
  278.    be stored separately from and with somewhat less security than the
  279.  
  280.  
  281.  
  282. Eastlake, et al              Informational                      [Page 5]
  283.  
  284. RFC 1898                 CyberCash Version 0.8             February 1996
  285.  
  286.  
  287.    private key for the persona since the emergency passphrase can not be
  288.    used to divert funds to others. This provides some protection against
  289.    loss or misappropriation of the private key or the passphrase under
  290.    which the private key in kept encrypted.  In the cash system, the
  291.    emergency close-out passpharase may also transfer the persona balance
  292.    to a designated bank account.
  293.  
  294. 1.2.2 Privacy
  295.  
  296.    Encryption of messages use the Digital Encryption Standard (DES),
  297.    commonly used in electronic payment systems today.  It is planned to
  298.    superencrypt (i.e., encrypted more than one level) particularly
  299.    sensitive information, such as PIN numbers, and handle them so that
  300.    the plain text readable version never exists in the CyberCash system
  301.    except momentarily, within special purpose secure cryptographic
  302.    hardware that is part of the server, before being re-encrypted under
  303.    another key.
  304.  
  305.    The processing of card charges through the CyberCash system is
  306.    organized so that the merchant never learns the customerUs credit
  307.    card number unless the merchantUs bank chooses to release this
  308.    information to the merchant or it is required for dispute resolution.
  309.    In addition, the server maintains no permanent storage of card
  310.    numbers.  They are only present while a transaction involving that
  311.    card is in progress.  These practices greatly reduce the chance of
  312.    card number misappropriation.
  313.  
  314. 1.3 Credit Card Operation
  315.  
  316.    Using the CyberCash system for credit card transactions, once price
  317.    has been negotiated and the consumer is ready to purchase, the
  318.    consumer simply clicks on the CyberCash "PAY" button displayed on the
  319.    merchant interface, which invokes the merchant CyberCash software.
  320.    The merchant sends the consumer an on-line invoice that includes
  321.    relevant purchase information which appears on the customerUs screen.
  322.    (See PR1 message.)  The consumer adds his credit card number and
  323.    other information by simply selecting from a list of credit cards he
  324.    has registered to his CyberCash persona.  All this information is
  325.    digitally signed by the customer's CyberCash software, encrypted, and
  326.    passed, along with a hash code of the invoice as seen by the
  327.    customer, to the merchant.  (See CH1 message.)
  328.  
  329.    Upon receipt, the merchant adds additional authorization information
  330.    which is then encrypted, electronically signed by the merchant, and
  331.    sent to the CyberCash Server.  (See CM1 & CM2 messages.)  The
  332.    CyberCash Server can authenticate all the signatures and be sure that
  333.    the customer and merchant agree on the invoice and charge amount.
  334.    The CyberCash Server then forwards the relevant information to the
  335.  
  336.  
  337.  
  338. Eastlake, et al              Informational                      [Page 6]
  339.  
  340. RFC 1898                 CyberCash Version 0.8             February 1996
  341.  
  342.  
  343.    acquiring bank along with a request on behalf of the merchant for a
  344.    specific banking operation such as charge authorization.  The bank
  345.    decrypts and then processes the received data as it would normally
  346.    process a credit card transaction.  The bank's response is returned
  347.    to the CyberCash Server which returns an electronic receipt to the
  348.    merchant (see CM6 message) part of which the merchant is expected to
  349.    forward to the customer (see CH2 message).  The transaction is
  350.    complete.
  351.  
  352. 2. General Message Wrapper Format
  353.  
  354.    Version 0.8 of the external format for the encoding of CyberCash
  355.    messages is described below.  CyberCash messages are stylized
  356.    documents for the transmission of financial data over the Internet.
  357.  
  358.    While there are numerous schemes for sending information over the
  359.    Internet (HTTP, SMTP, and others), each is attached to a specific
  360.    transmission mechanism.  Because CyberCash messages will need to
  361.    travel over each of these media (as well as others) a transmission
  362.    independent mechanism is needed.
  363.  
  364. 2.1 Message Format
  365.  
  366.    CyberCash messages consist of the following components:
  367.  
  368.    1. Header - defines the start of the CyberCash message and includes
  369.       version information.
  370.  
  371.    2. Transparent Part - contains information that is not private.
  372.  
  373.    3. Opaque Part(s) - contains the financial information in the
  374.       message and is both privacy protected as well as tamper protected.
  375.       An opaque part is not present in some messages. When present, the
  376.       opaque part usually provides tamper protection for the transparent
  377.       part.
  378.  
  379.    4. Trailer - defines the end of the CyberCash message and includes a
  380.       check value to enable the receiver to determine that the message
  381.       has arrived undamaged. Note: this check value is intended only to
  382.       detect accidental damage to the message, not deliberate tampering.
  383.  
  384.       No null characters (zero value) or characters with the eighth bit
  385.       on are permitted inside a CyberCash message.  "Binary" quantities
  386.       that might have such byte values in them are encoded in base64 as
  387.       described in RFC 1521.
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Eastlake, et al              Informational                      [Page 7]
  395.  
  396. RFC 1898                 CyberCash Version 0.8             February 1996
  397.  
  398.  
  399. 2.2 Details of Format
  400.  
  401.    The header consists of a single line which looks approximately like
  402.    this
  403.  
  404.         $$-CyberCash-0.8-$$
  405.  
  406.    or like this
  407.  
  408.         $$-CyberCash-1.2.3-Extra-$$
  409.  
  410.    It includes a number of fields separated with the minus character "-"
  411.  
  412.    1. "$$" - the literal string with the initial $ in column 1.
  413.  
  414.    2. "CyberCash" - the literal string (case insensitive)
  415.  
  416.    3. x.y or x.y.z - the version number of the message format.  x is the
  417.    primary version number.  y is a subversion number.  z, if present, is
  418.    a subsubversion number.
  419.  
  420.    4. "Extra" - an optional additional alphanumeric string.
  421.  
  422.    5.  "$$" - the literal string
  423.  
  424.    Version numbers start at 0.7 and count up.  The ".z" is omitted when
  425.    z is zero.  0.7 and 0.8 are the test and initial shipped version of
  426.    the credit card system. 0.9 and 1.0 are expected to also incorporate
  427.    the test and initial shipped versions of the cash facilities as well
  428.    as improvements to the credit card system.
  429.  
  430.    The "Extra" string is used within secure environments so that one
  431.    subcomponent can scribble a note to another with minimum overhead.
  432.    For example, a server firewall could put "HTTP" or "SMTP" here before
  433.    forwarding the message to the core server within the firewall
  434.    perimeter.
  435.  
  436. 2.3 Body Parts
  437.  
  438.    The body parts of the message (both transparent and opaque) consist
  439.    of attribute value pairs in formats that are reminiscent of the
  440.    standard electronic mail header (RFC822) format. However, there are
  441.    some differences.
  442.  
  443.    Attribute names start with and are composed predominantly of letters
  444.    and internal hyphens except that they sometimes end with a hyphen
  445.    followed by a number.  Such a trailing number is used when there is
  446.    logically an indexed vector of values.  Attribute names are
  447.  
  448.  
  449.  
  450. Eastlake, et al              Informational                      [Page 8]
  451.  
  452. RFC 1898                 CyberCash Version 0.8             February 1996
  453.  
  454.  
  455.    frequently referred to as labels.
  456.  
  457.    If the label ends with a ":", then RFC822 processing is done.  While
  458.    the existence of trailing white space is significant, all leading
  459.    white space on continuation lines is stripped.  Such lines are
  460.    wrapped at 64 characters in length, excluding any line termination
  461.    character(s).
  462.  
  463.    However, if the label is terminated with a ";", this indicates a
  464.    free-form field where new-line characters and any leading white
  465.    space, after the initial space that indicates a continuation line, is
  466.    significant.  Such lines should not be wrapped except that, to avoid
  467.    other processing problems, they are forcibly wrapped at 200
  468.    characters.
  469.  
  470.    Blank lines are ignored and do not signify a change  to  a  different
  471.    mode of line handling.
  472.  
  473.    Another way of looking at the above is as follows: after having found
  474.    an initial $$ start line, you can treat any following lines according
  475.    to the first character.  If it is alphanumeric, it is a new label
  476.    which should be terminated with a ":" or ";" and indicates a new
  477.    label-value pair.  If it is a white space character, it indicates the
  478.    continuation of the value for the preceding new label line.  (Exactly
  479.    how the continuation is processed depends on the label termination
  480.    character.)  If it is "$", it should be the end line for the message.
  481.    If it is #, it is a comment line and should be ignored.  Other
  482.    initial characters are undefined.  (As of this date, no software
  483.    sends CyberCash messages with # lines but they are convenient for
  484.    commenting messages stored in files.)
  485.  
  486. 2.4 Transparent Part
  487.  
  488.    The transparent part includes any clear-text data associated with the
  489.    financial transaction as well as information needed by CyberCash and
  490.    others to decrypt the opaque part(s).  It always includes a
  491.    transaction field which is the transaction number generated by the
  492.    requester and which is repeated in the response.  It always includes
  493.    a date field that is the local date and time at the requester and is
  494.    repeated in the response.  In all cases other than an initial
  495.    registration to establish a persona ID, it includes the requester's
  496.    persona ID.
  497.  
  498.    On messages bound for the server, there is a "cyberkey:" field that
  499.    identifies which server public key was used to encrypt the session
  500.    key.
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Eastlake, et al              Informational                      [Page 9]
  507.  
  508. RFC 1898                 CyberCash Version 0.8             February 1996
  509.  
  510.  
  511. 2.5 Opaque Part
  512.  
  513.    The opaque part consists of a single block of characters encoded
  514.    using base64 encoding (see RFC 1521). The data in the opaque section
  515.    is always encrypted before encoding.
  516.  
  517.    The label "opaque" or "merchant-opaque" precedes the opaque part
  518.    depending on whether the data was encrypted by the client or merchant
  519.    software.
  520.  
  521.    On messages inbound to the server, the data to be opaqued is DES CBC
  522.    encrypted under a random transacton key and then that DES key is RSA
  523.    encrypted under one of the server's public keys.  The RSA encrypted
  524.    DES key appears as the first part of the base64 encoded field and is
  525.    not broken out as a separate value in the message.  The corresponding
  526.    outbound reply from the server can simply be DES encrypted under this
  527.    transaction key as there is enough plain text information to identify
  528.    the transaction and the customer or merchant will have remembered the
  529.    transaction key from the inbound message.
  530.  
  531.    A signature is not generally necessary in the opaque part of a reply
  532.    message.  Knowledge of the transaction key is adequate
  533.    authentication.  In order for someone to forge the response, they
  534.    would have to know the server's private key to be able to get at the
  535.    transaction key.  It is assumed that if anyone tampered with the
  536.    response opaque part, the probability that it would decrypt to
  537.    something that would parse is insignificant.  (Just the fact that the
  538.    8th bit has to be off means a chance of 1 in 2**n where there are n
  539.    characters and that's ignoring the rest of the formatting.)  While
  540.    someone can tamper with the transparent part, this usually either has
  541.    no effect or means that the client won't find the transaction key, in
  542.    which case it's just a particular example of denial of service by
  543.    damaging a message.
  544.  
  545. 2.6 Trailer
  546.  
  547.    The trailer is intended to close the message and provide a definitive
  548.    and parseable end of the message.
  549.  
  550.    The trailer consists of several fields separated by "-" as in header.
  551.  
  552.    1. "$$" - literal string.
  553.  
  554.    2. "CyberCash" - literal string (case insensitive).
  555.  
  556.    3. "End" - literal string (case insensitive).
  557.  
  558.    4. transmission checksum.
  559.  
  560.  
  561.  
  562. Eastlake, et al              Informational                     [Page 10]
  563.  
  564. RFC 1898                 CyberCash Version 0.8             February 1996
  565.  
  566.  
  567.    5.  "$$" - literal string.
  568.  
  569.    The transmission checksum is the MD5 has of all printable characters
  570.    in the version number in the start line and those appearing after the
  571.    second $$ of the start line and before the first $$ of the trailer
  572.    line as transmitted.  Note that all white space is left out of this
  573.    hash, including any new-lines, spaces, tabs, carriage returns, etc.
  574.    The exact label terminators actually used (: or ;) are included as
  575.    would any # comment line.  Note that the optional "Extra" string in
  576.    the $ start line is not included.  The idea is to check correct
  577.    transmission while avoiding sensitivity to gateways or processing
  578.    that might change the line terminator sequence, convert tabs to
  579.    spaces, or the like.
  580.  
  581. 2.7 Example Messages
  582.  
  583.    Simple message from a client:
  584.  
  585.    $$-CyberCash-0.8-$$
  586.    id: DONALD-69
  587.    transaction: 918273645
  588.    date: 199512250102
  589.    cyberkey:CC1001
  590.    opaque:
  591.     GpOJvDpLH62z+eZlbVkhZJXtTneZH32Qj4T4IwJqv6kjAeMRZw6nR4f0OhvbTFfPm+GG
  592.     aXmoxyUlwVnFkYcOyTbSOidqrwOjnAwLEVGJ/wa4ciKKI2PsNPA4sThpV2leFp2Vmkm4
  593.     elmZdS0Qe350g6OPrkC7TKpqQKHjzczRRytWbFvE+zSi44wMF/ngzmiVsUCW01FXc8T9
  594.     EB8KjHEzVSRfZDn+lP/c1nTLTwPrQ0DYiN1lGy9nwM1ImXifijHR19LZIHlRXy8=
  595.    $$-End-CyberCash-End-jkn38fD3+/DFDF3434mn10==-$$
  596.  
  597.  
  598.    Message from a merchant:
  599.  
  600.    $$-CyberCash-a.b.c-extra-$$
  601.    merchant-ccid: acme-69
  602.    merchant-date: 19951231115959
  603.    merchant-transaction: 987654321
  604.    label: value
  605.  
  606.    labelx: multiple line
  607.       value...
  608.    # comment
  609.    # another comment line
  610.    label; text with a real
  611.      multi-line
  612.         format !
  613.    merchant-cyberkey: CC1001
  614.    merchant-opaque:
  615.  
  616.  
  617.  
  618. Eastlake, et al              Informational                     [Page 11]
  619.  
  620. RFC 1898                 CyberCash Version 0.8             February 1996
  621.  
  622.  
  623.     C1Q96lU7n9snKN5nv+1SWpDZumJPJY+QNXGAm3SPgB/dlXlTDHwYJ4HDWKZMat+VIJ8y
  624.     /iomz6/+LgX+Dn0smoAge7W+ESJ6d6Ge3kRAQKVCSpbOVLXF6E7mshlyXgQYmtwIVN2J
  625.     66fJMQpo31ErrdPVdtq6MufynN8rJyJtu8xSNolXlqIYNQy5G2I3XCc6D3UnSErPx1VJ
  626.     6cbwjLuIHHv58Nk+xxt/FyW7yAMwUb9YNcmOj//6Ru0NiOA9P/IiWczDe2mJRK1uqVpC
  627.     sDrWehG/UbFTPD26trlYRnnY
  628.    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$
  629.  
  630. 3. Signatures and Hashes
  631.  
  632.    Inbound CyberCash request messages normally have a signature, as
  633.    described below, of all of the messages fields outside of the
  634.    signature.  This signature is transmitted inside the opaque part of
  635.    the message.  It enables the server to authenticate the source of the
  636.    message.
  637.  
  638.    Messages from a merchant to a client initiating a purchase sequence
  639.    have fields signed by the merchant.  These fields and this signature
  640.    are included by the client in the opaque part of their card purchase
  641.    message to the merchant so that, when all is passed on to the server,
  642.    it can verify that the client saw the information the merchant
  643.    intended.
  644.  
  645.    More information on CyberCash signatures and the hash codes they are
  646.    based on, is given below.
  647.  
  648. 3.1 Digital Signatures
  649.  
  650.    Digital signatures are a means of authenticating information.  In
  651.    CyberCash messages, they are calculated by first taking the hash of
  652.    the data to be authenticated, as described below, and then encoding
  653.    the hash using an RSA private key.
  654.  
  655.    Anyone possessing the corresponding public key can then decrypt the
  656.    hash and compare it with the message hash.  If they match, then you
  657.    can be sure that the signature was generated by someone possessing
  658.    the private key which corresponded with the public key you used and
  659.    that the message was not tampered with.
  660.  
  661.    In the CyberCash system, clients, merchants, and the server have
  662.    public-private key pairs.  By keeping the private key secret and
  663.    registering their public key with the server (for a merchant or
  664.    client) or publishing their public key or keys (for the server), they
  665.    can provide high quality authentication by signing parts of messages.
  666.  
  667.    An RSA digital signature is approximately the size of the modulus
  668.    used.  For example, if that is 768 bits long, then the binary digital
  669.    signature would be 768 bits or 96 bytes long and its base 64 encoding
  670.    would be 128 bytes.
  671.  
  672.  
  673.  
  674. Eastlake, et al              Informational                     [Page 12]
  675.  
  676. RFC 1898                 CyberCash Version 0.8             February 1996
  677.  
  678.  
  679. 3.2 Hash Codes
  680.  
  681.    The hashes used in CyberCash messages are message digests.  That is,
  682.    a non-invertable fingerprint of a message such that it is
  683.    computationally infeasible to find an alternate message with the same
  684.    hash.  Thus the relatively small hash can be used to secure a larger
  685.    message.  If you are confident in the authenticity of the hash and
  686.    are presented with a message which matches the hash, you can be sure
  687.    it is the original message, at least as regards all aspects that have
  688.    been included in the hash.
  689.  
  690.    The hash is calculated using the MD5 algorithm (see RFC 1321) on a
  691.    synthetic message.  The synthetic message is composed of the labels
  692.    and values specified in a list for the particular hash.  Since the
  693.    hash is input order dependent, it is essential that the label-value
  694.    pairs be assembled in the order specified.  In some cases, a range of
  695.    matching labels is specified.  For example, "card*" to match card-
  696.    number, card-expiration-date, and all other labels starting with
  697.    "card".  In such cases, all existing matching labels are used in
  698.    ascending alphabetic order by ASCII character code.
  699.  
  700.    If a label is specified in a signature list but is not present in the
  701.    label-value data on which the hash is being calculated, it is not
  702.    included in the hash at all.  That is, even the label and label
  703.    terminator are omitted from the synthetic message.
  704.  
  705.    Before being hashed, the text of the synthetic message is processed
  706.    to remove all "white space" characters.  White space characters are
  707.    defined as any with an ASCII value of 32 (space) or less or 127
  708.    (rubout) or greater.  Thus all forms of new-line/carriage-return and
  709.    distinctions such as blank lines, trailing spaces, replacement of a
  710.    horizontal tab character by multiple spaces, etc., are ignored for
  711.    hash purposes.
  712.  
  713.    MD5 hashes are 16 bytes long.  This means that the base 64 encoding
  714.    of such a hash will be 24 characters (of which the last two will
  715.    always be padding equal signs).
  716.  
  717. 4. Specific Message Formats
  718.  
  719.    This section describes the formats of the Verison 0.8 CyberCash
  720.    messages by example with comments.  The reader in assumed to be
  721.    familiar with terms such as "acquirer", "PAN" (primary account
  722.    number), etc., defined in ISO 8583, and currency designations as
  723.    defined in ISO 4217. A few fields not relevant to current operations
  724.    have been removed to simplify this exposition.
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Eastlake, et al              Informational                     [Page 13]
  731.  
  732. RFC 1898                 CyberCash Version 0.8             February 1996
  733.  
  734.  
  735.    In the following example messages, signatures, hashes, and encrypted
  736.    sections are fake nonsense text and ids are fictitious.
  737.  
  738. 4.1 Persona Registration and Application Retrieval
  739.  
  740.    The first step in customer use of CyberCash is registering a persona
  741.    using the customer application.  This is done with the R1 message
  742.    defined below.  The CyberCash server responds with the R2 message.
  743.  
  744.    When the customer application learns that it is out of date, it can
  745.    use the GA1 request message to the server and its GA2 response to
  746.    download a new signed version of itself.
  747.  
  748. 4.1.1 R1 - registration
  749.  
  750.    Description: This is the initial message sent to create a new
  751.        CyberCash persona.
  752.  
  753.    #####################################################################
  754.    Sender: CyberApp
  755.    Receiver: CyberServer
  756.    #####################################################################
  757.    Sample Message:
  758.  
  759.    $$-CyberCash-0.8-$$
  760.    transaction: 123123213
  761.    date: 19950121100505.nnn
  762.    cyberkey: CC1001
  763.    opaque:
  764.     FrYOQrD16lEfrvkrqGWkajM1IZOsLbcouB43A4HzIpV3/EBQM5WzkRJGzYPM1r3noBUc
  765.     MJ4zvpG0xlroY1de6DccwO9j/0aAZgDi9bcQWV4PFLjsN604j3qxWdYn9evIGQGbqGjF
  766.     vn1qI1Ckrz/4/eT1oRkBBILbrWsuwTltFd84plvTy+bo5WE3WnhVKsCUJAlkKpXMaX73
  767.     JRPoOEVQ3YEmhmD8itutafqvC90atX7ErkfUGDNqcB9iViRQ7HSvGDnKwaihRyfirkgN
  768.     +lhOg6xSEw2AmYlNiFL5d/Us9eNG8cZM5peTow==
  769.    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$
  770.  
  771.    #####################################################################
  772.  
  773.    Opaque Key: Generated using CyberCash encrypting public key
  774.        identified in CyberKey.
  775.  
  776.    #####################################################################
  777.    Opaque Section Contents:
  778.  
  779.    type: registration
  780.    swversion: 0.8win
  781.    content-language: en-us
  782.    requested-id: MyRequestedCCID
  783.  
  784.  
  785.  
  786. Eastlake, et al              Informational                     [Page 14]
  787.  
  788. RFC 1898                 CyberCash Version 0.8             February 1996
  789.  
  790.  
  791.    email: myemail@myemailhost.com
  792.    pubkey:
  793.     0VdP1eAUZRrqt3Rlg460Go/TTs4gZYZ+mvI7OlS3l08BVeoms8nELqL1RG1pVYdDrTsX
  794.     E5L+wcGCLEo5+XU5zTKkdRUnGRW4ratrqtcte7e94F+4gkCN06GlzM/Hux94
  795.    signature:
  796.     v6JGmxIwRiB6iXUK7XAIiHZRQsZwkbLV0L0OpVEvan9l59hVJ3nia/cZc/r5arkLIYEU
  797.     dw6Uj/R4Z7ZdqO/fZZHldpd9+XPaqNHw/y8Arih6VbwrO5pKerLQfuuPbIom
  798.  
  799.    #####################################################################
  800.    signature is of the following fields: transaction, date, cyberkey,
  801.        type, swversion, content-language, requested-id, email, pubkey
  802.  
  803.    #####################################################################
  804.    Explanation:
  805.    content-language is taken from the MIME header field (see RFC1766)
  806.        and is the language text messages should be generated in.  (only
  807.        en-us implemented at this time.
  808.    swversion used to check if client application is old.
  809.  
  810.  
  811. 4.1.2 R2 - registration-response
  812.  
  813.    Description: This message gives the success/failure response to R1.
  814.  
  815.    #####################################################################
  816.    Sender: CyberServer
  817.    Receiver: CyberApp
  818.    #####################################################################
  819.    Sample Message:
  820.  
  821.    $$-CyberCash-0.8-$$
  822.    transaction: 12312313
  823.    date: 19950121100505.nnn
  824.    opaque:
  825.     r1XfjSQt+KJYUVOGU60r7voFrm55A8fP5DjJZuPzWdPQjGBIu3B6Geya8AlJfHsW11u8
  826.     dIv1yQeeYj/+l9TD1dXW21/1cUDFFK++J2gUMVv8mX1Z6Mi4OU8AfsgoCliwSkWmjSOb
  827.     kE62sAlZTnw998cKzMFp70TSlI3PEBtvIfpLq5lDCNbWidX8vFZV0ENUmMQ9DTP3du9w
  828.     fsFGvz1mvtHLT/Gj8GNQRYKF4xiyx4HYzTkSMhgU5B/QDLPS/SawIJuR86b9X0mwsr0a
  829.     gbGTzECPJTiKkrhxxMG/eymptsVQSLqNaTCx6w==
  830.    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$
  831.  
  832.    #####################################################################
  833.    Opaque Key: Same as session key for R1 for same Transaction and
  834.        connection (there may be no ID!).
  835.  
  836.    #####################################################################
  837.    Opaque Section Contents:
  838.  
  839.  
  840.  
  841.  
  842. Eastlake, et al              Informational                     [Page 15]
  843.  
  844. RFC 1898                 CyberCash Version 0.8             February 1996
  845.  
  846.  
  847.    type: registration-response
  848.    server-date: 19950121100506.nnn
  849.    requested-id: MyRequestedCCID
  850.    response-id: CyberCashHandle
  851.    email: myemail@myemailhost.com
  852.    response-code: success/failure/etc.
  853.    pubkey:
  854.     0VdP1eAUZRrqt3Rlg460Go/TTs4gZYZ+mvI7OlS3l08BVeoms8nELqL1RG1pVYdDrTsX
  855.     E5L+wcGCLEo5+XU5zTKkdRUnGRW4ratrqtcte7e94F+4gkCN06GlzM/Hux94
  856.    swseverity: fatal/warning  [absent if ok]
  857.    swmessage; Tells CyberApp that it is obsolete.  Display this
  858.     text to the user.  [only present if SWSeverity present]
  859.    message;
  860.           Free text of the error/success condition.
  861.           This text is to be displayed to the person
  862.           by the CyberCash application...
  863.  
  864.           In general this includes: duplicate-id, bad-signature,
  865.           or ill-formed-registration
  866.  
  867.    #####################################################################
  868.    Signature is of the following fields: no-signature
  869.  
  870.    #####################################################################
  871.    Explanation:
  872.    responseid is used to suggest a unique ID if the failure was due
  873.        to the requested ID being already in use... If the reason for
  874.        failure was not due to duplicate ID then this field may be
  875.        omitted.
  876.    responseid gives the actual ID with check characters appended if
  877.        success.
  878.    swseverity can warn user of old client application or indicate
  879.        failure due to old or known buggy version.
  880.  
  881.  
  882. 4.1.3 GA1 - get-application
  883.  
  884.    Description: Used by CyberApp to get an updated version.
  885.  
  886.    #####################################################################
  887.    Sender: CyberApp
  888.    Receiver: CyberServer
  889.    #####################################################################
  890.    Sample Message:
  891.  
  892.    $$-CyberCash-0.8-$$
  893.    transaction: 123123213
  894.    date: 19950121100505.nnn
  895.  
  896.  
  897.  
  898. Eastlake, et al              Informational                     [Page 16]
  899.  
  900. RFC 1898                 CyberCash Version 0.8             February 1996
  901.  
  902.  
  903.    cyberkey: CC1001
  904.    opaque:
  905.     VHMS611wGkUmR6bKoI+ODoSbl7L5PKtEo6aM88LCidqN+H/8B4xM3LxdwUiLn7rMPkZi
  906.     xOGb+5d1lRV7WeTp21QYlqJr8emc6FAnGd5c0csPmcnEpTFh9xZDJaStarxxmSEwm2mw
  907.     l2VjEUODH6321vjoMAOFQWn7ER0o
  908.    $$-CyberCash-End-0QXqLlNxrn4GNQPPk9AO1Q==-$$
  909.  
  910.    #####################################################################
  911.    Opaque Key: Generated using CyberCash encrypting public key identified
  912.       in CyberKey.
  913.  
  914.    #####################################################################
  915.    Opaque Section Contents:
  916.  
  917.    type: get-application
  918.    swversion: 0.8win
  919.  
  920.    #####################################################################
  921.    Signature is of the following fields: no signature
  922.  
  923.    #####################################################################
  924.    Explanation:
  925.    There may not be a customer persona so there is no ID.  There
  926.        may not be a customer public/private key pair so there is
  927.        no signature.  The swversion is mandatory so the server can
  928.        tell what to return.
  929.  
  930.  
  931. 4.1.4 GA2 - get-application-response
  932.  
  933.    Description: Return success and URL of up to date copy of CyberApp
  934.        or failure.
  935.  
  936.    #####################################################################
  937.    Sender: CyberServer
  938.    Receiver: CyberApp
  939.    #####################################################################
  940.    Sample Message:
  941.  
  942.    $$-CyberCash-0.8-$$
  943.    transaction: 12312313
  944.    date: 19950110102333.nnn
  945.    opaque:
  946.     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb
  947.     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV
  948.     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs
  949.     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo
  950.     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==
  951.  
  952.  
  953.  
  954. Eastlake, et al              Informational                     [Page 17]
  955.  
  956. RFC 1898                 CyberCash Version 0.8             February 1996
  957.  
  958.  
  959.    $$-CyberCash-End-0QXqLlNxrn4GNQPPk9AO1Q==-$$
  960.  
  961.  
  962.    #####################################################################
  963.    Opaque Key: session key from GA1
  964.  
  965.    #####################################################################
  966.    Opaque Section Contents:
  967.  
  968.    type: get-application-response
  969.    server-date: 19950110102334.nnn
  970.    response-code: success/failure/etc.
  971.    message; Text message to be displayed to the user providing more
  972.        information on the success/failure.
  973.    swversion: 0.8win
  974.    application-url: http://foo.cybercash.com/server/0.8WIN.EXE
  975.    application-hash: lSLzs/vFQ0BXfU98LZNWhQ==
  976.  
  977.    #####################################################################
  978.    Signature: none.
  979.  
  980.    #####################################################################
  981.    Explanation:
  982.    application-hash is the MD5 of the binary of the application.
  983.    application-url & application-hash omitted on failure.
  984.    swversion is the version being transmitted to the customer.
  985.  
  986.  
  987. 4.2 Binding Credit Cards
  988.  
  989.    The CyberCash system is design to give the card issuing organization
  990.    control over whether a card may be used via the CyberCash system.
  991.    The customer, after having registered a persona with CyberCash as
  992.    described above, can then bind each credit card they wish to use to
  993.    their CyberCash persona.  This is done via the BC1 message from the
  994.    customer to their CyberCash server and the BC4 response from the
  995.    server.
  996.  
  997. 4.2.1 BC1 - bind-credit-card
  998.  
  999.    Description: This is the initial message in the process of binding a
  1000.        credit card to a CyberCash persona.
  1001.  
  1002.    #####################################################################
  1003.    Sender: CyberApp
  1004.    Receiver: CyberServer
  1005.    #####################################################################
  1006.    Sample Message:
  1007.  
  1008.  
  1009.  
  1010. Eastlake, et al              Informational                     [Page 18]
  1011.  
  1012. RFC 1898                 CyberCash Version 0.8             February 1996
  1013.  
  1014.  
  1015.    $$-CyberCash-0.8-$$
  1016.    id: MyCyberCashID
  1017.    date: 19950121100505.nnn
  1018.    transaction: 12312314
  1019.    cyberkey: CC1001
  1020.    opaque:
  1021.     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb
  1022.     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV
  1023.     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs
  1024.     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo
  1025.     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==
  1026.    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$
  1027.  
  1028.    #####################################################################
  1029.    Opaque Key: generated from CyberCash encryption key identified in
  1030.        CyberKey
  1031.  
  1032.    #####################################################################
  1033.    Opaque Section Contents:
  1034.  
  1035.    type: bind-credit-card
  1036.    swversion: 0.8win
  1037.    card-number: 1234567887654321
  1038.    card-type: mastercard
  1039.    card-salt: 46735210
  1040.    card-expiration-date: 05/99
  1041.    card-name: John Q. Public
  1042.    card-street:
  1043.    card-city:
  1044.    card-state:
  1045.    card-postal-code:
  1046.    card-country:
  1047.    signature:
  1048.     tX3odBF2xPHqvhN4KVQZZBIXDveNi0eWA7717DNfcyqh2TpXqgCxlDjcKqdJXgsNLkY7
  1049.     GkyuDyTF/m3SZif64giCLjJRKg0I6mqI1k/Dcm58D9hKCUttz4rFWRqhlFaj
  1050.  
  1051.    #####################################################################
  1052.    signature is of the following fields: id, date, transaction,
  1053.        cyberkey, type, swversion, card-number, card-salt,
  1054.        card-expiration-date, card-name, card-street, card-city,
  1055.        card-state, card-postal-code, card-country
  1056.  
  1057.    #####################################################################
  1058.    Explanation:
  1059.    salt is needed so that the hash stored at the server is less
  1060.        informative.  Server just remembers the "prefix" of the card
  1061.        number and the hash of the combined card number and salt. If it
  1062.        just hashed the card number, it would be recoverable with modest
  1063.  
  1064.  
  1065.  
  1066. Eastlake, et al              Informational                     [Page 19]
  1067.  
  1068. RFC 1898                 CyberCash Version 0.8             February 1996
  1069.  
  1070.  
  1071.        effort by trying to hash all plausible numbers.  We don't want
  1072.        to store the card numbers on the server because it would make
  1073.        the server files too valuable to bad guys.
  1074.  
  1075.  
  1076. 4.2.2 BC4 - bind-credit-card-response
  1077.  
  1078.    Description: Indicates that the process of binding a credit card
  1079.        terminated.  Returns success or failure.
  1080.  
  1081.    #####################################################################
  1082.    Sender: CyberServer
  1083.    Receiver: CyberApp
  1084.    #####################################################################
  1085.    Sample Message:
  1086.  
  1087.    $$-CyberCash-0.8-$$
  1088.    id: mycybercashid
  1089.    transaction: 12312314
  1090.    date: 19950121100505.nnn
  1091.    opaque:
  1092.     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb
  1093.     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV
  1094.     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs
  1095.     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo
  1096.     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==
  1097.    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$
  1098.  
  1099.    #####################################################################
  1100.    Opaque Key: Session key from BC1 with same Transaction and ID
  1101.  
  1102.    #####################################################################
  1103.    Opaque Section Contents:
  1104.  
  1105.    type: bind-credit-card-response
  1106.    server-date: 19950121100506.nnn
  1107.    swseverity: fatal/warning  [absent if ok]
  1108.    swmessage; message about obsoleteness of customer software
  1109.        to be shown to the customer.  [only present if SWSeverity present]
  1110.    response-code: success/failure/etc.
  1111.    card-number: 1234567887654321
  1112.    card-type: visa
  1113.    card-salt: 47562310
  1114.    card-expiration-date: 01/99
  1115.    card*: [other card* lines to also be given in CH.1 message]
  1116.    message; Plain text for the user
  1117.        can be multiple lines
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Eastlake, et al              Informational                     [Page 20]
  1123.  
  1124. RFC 1898                 CyberCash Version 0.8             February 1996
  1125.  
  1126.  
  1127.    #####################################################################
  1128.    Signature is of the following fields: no-signature
  1129.  
  1130.    #####################################################################
  1131.    Explanation: All the card* lines can be saved as a blob to be
  1132.        submitted in CH.1.  card-expiration-date, card-number, card-salt,
  1133.        and card-type should always be present.
  1134.    Depending on reason for failure, not all fields may be present.
  1135.  
  1136.  
  1137. 4.3 Customer Credit Card Purchasing Messages
  1138.  
  1139.    In general, CyberCash involvement in the credit card purchasing cycle
  1140.    starts after the user has determined what they are buying.  When they
  1141.    click on the CyberCash payment button, a PR1 message is sent by the
  1142.    merchant to the customer as the body of a message of MIME type
  1143.    application/cybercash.
  1144.  
  1145.    If the customer wishes to proceed, they respond to the merchant  with
  1146.    a  CH1.   The merchant responds with a CH2 but between the receipt of
  1147.    the CH1 and issuance of the CH2, the  merchant  usually  communicates
  1148.    with the CyberCash server via the CM* messages.
  1149.  
  1150.  
  1151. 4.3.1 PR1 - payment-request
  1152.  
  1153.    Description: This message is the first message that is defined
  1154.        by CyberCash in the purchase-from-a-merchant process. The
  1155.        shopping has completed.  Now we are at the point of paying
  1156.        for the purchases.
  1157.  
  1158.    #####################################################################
  1159.    Sender: MerchantApp
  1160.    Receiver: CyberApp
  1161.    #####################################################################
  1162.    Sample Message:
  1163.  
  1164.    $$-CyberCash-0.8-$$
  1165.    type: payment-request
  1166.    merchant-ccid: ACME-012
  1167.    merchant-order-id: 1231-3424-234242
  1168.    merchant-date: 19950121100505.nnn
  1169.    note;
  1170.      ACME Products
  1171.  
  1172.      Purchase of 4 pairs "Rocket Shoes" at $39.95 ea.
  1173.      Shipping and handling $5.00
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Eastlake, et al              Informational                     [Page 21]
  1179.  
  1180. RFC 1898                 CyberCash Version 0.8             February 1996
  1181.  
  1182.  
  1183.      Total Price: 164.80
  1184.  
  1185.      Ship to:
  1186.           Wily Coyote
  1187.           1234 South St.
  1188.           Somewhere, VA 12345
  1189.    merchant-amount: usd 164.80
  1190.    accepts: visa:CC001, master:CC001,amex:CC001,JCPenny:VK005,macy:VK006
  1191.    url-pay-to: http://www.ACME.com/CybercashPayment
  1192.    url-success: http://www.ACME.com/ordersuccess
  1193.    url-fail: http://www.ACME.com/orderfail
  1194.    merchant-signed-hash:
  1195.     a/0meaMHRinNVd8nq/fKsYg5AfTZZUCX0S3gkjAhZTmcrkp6RZvppmDd/P7lboFLFDBh
  1196.     Ec0oIyxWeHfArb3OtkgXxJ7qe0Gmm/87jG5ClGnpBnw0dY7qcJ6XoGB6WGnD
  1197.    $$-CyberCash-End-lSLzs/vFQ0BXfU98LZNWhQ==-$$
  1198.  
  1199.    #####################################################################
  1200.    Opaque Key: no opaque section
  1201.  
  1202.    #####################################################################
  1203.    Opaque Section Contents: no opaque section
  1204.  
  1205.    #####################################################################
  1206.    merchant-signed-hash is the signature under the merchant's
  1207.        private key of the hash of the following fields: type,
  1208.        merchant-ccid, merchant-order-id, date, note, merchant-amount,
  1209.        accepts, url-pay-to, url-success, url-fail
  1210.  
  1211.    #####################################################################
  1212.    Explanation:
  1213.    This message is signed by the merchant but the customer cannot
  1214.        directly verify this signature. When the payment is made, the
  1215.        Customer includes the signature with the hash (derived by the
  1216.        customer directly) in the payment. If these do not match, the
  1217.        CyberCash will not perform the payment function.
  1218.    accepts: The client software will only recognized single word card
  1219.    name in the accepts field of PR1. For example,
  1220.      MasterCard
  1221.      AmericanExpress
  1222.    are recognized where as
  1223.      Master card
  1224.      American express
  1225.    are not recognized. MasterCard and masterCard are both
  1226.    recognized as master card.
  1227.    Card type followed by key designator.  For main line credit cards,
  1228.        this will be a CC*.  Client can use or ignore the * number as
  1229.        it chooses.  For proprietary card, this will be VK* where * is
  1230.        the CheckFree key to use (1 based).  Cards separated by comma,
  1231.  
  1232.  
  1233.  
  1234. Eastlake, et al              Informational                     [Page 22]
  1235.  
  1236. RFC 1898                 CyberCash Version 0.8             February 1996
  1237.  
  1238.  
  1239.        key designator follows card type and colon.
  1240.    url-pay-to is where the CH1 should be sent.  url-fail and url-success
  1241.        are where the browser should look after failure or success.
  1242.  
  1243.  
  1244. 4.3.2 CH1 - credit-card-payment
  1245.  
  1246.    Description: This message represents the presentation of a "credit
  1247.        card for payment".
  1248.  
  1249.    #####################################################################
  1250.    Sender: CyberApp
  1251.    Receiver: MerchantApp
  1252.    #####################################################################
  1253.    Sample Message:
  1254.  
  1255.    $$-CyberCash-0.8-$$
  1256.    type: card-payment
  1257.    id: myCyberCashID
  1258.    order-id: 1231-3424-234242
  1259.    merchant-ccid: ACME-012
  1260.    transaction: 78784567
  1261.    date: 19950121100505.nnn
  1262.    pr-hash: c77VU/1umPKH2kpMR2QVKg==
  1263.    pr-signed-hash:
  1264.     a/0meaMHRinNVd8nq/fKsYg5AfTZZUCX0S3gkjAhZTmcrkp6RZvppmDd/P7lboFLFDBh
  1265.     Ec0oIyxWeHfArb3OtkgXxJ7qe0Gmm/87jG5ClGnpBnw0dY7qcJ6XoGB6WGnD
  1266.    cyberkey: CC1001
  1267.    opaque:
  1268.     iff/tPf99+Tm5P7s3d61jOWK94nq9/+1jOWK9+vr9+b+94n3tYzmiveJ9/+09/334ubg
  1269.     3rWM5Ir3ier3/7WM5Ir36+v35v73ife1jOWK94n3/7T3/ffm5uD+7N339/f39/eq3ff3
  1270.     9/eFiJK5tLizsoeSmpW7uLS8/7iio7Wisfv38biio7uyufv3tfv35uH+7N3d9/exuKX3
  1271.     5+z3vuu4oqO7srnsvvz8/venoqO0v7al/7iio7WisYy+iv7s3ff3p6KjtL+2pf/wi7nw
  1272.     3ard3Q==
  1273.    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$
  1274.  
  1275.    #####################################################################
  1276.    Opaque Key: Created using CyberCash encrypting public key in
  1277.        CyberKey.
  1278.  
  1279.    #####################################################################
  1280.    Opaque Section Contents:
  1281.    swversion: 0.8win
  1282.    amount: usd 10.00
  1283.    card*: [from successful BC4 (includes card-expiration-date,
  1284.        card-number, card-type, and card-salt)]
  1285.    signature:
  1286.     meO38aULnoP09VhTS2E56tnuZBRRlGfbwqaleZ9zNnv7YjExJKBFxuaqYTUDEj427HHh
  1287.  
  1288.  
  1289.  
  1290. Eastlake, et al              Informational                     [Page 23]
  1291.  
  1292. RFC 1898                 CyberCash Version 0.8             February 1996
  1293.  
  1294.  
  1295.     mm9BVmHRwCq6+8ylZXixGHI1I9A/ufAMrpqMIi6DS3PRlc8WC3CCWoAHyAqr
  1296.  
  1297.    #####################################################################
  1298.    signature is under client private key of the following fields:
  1299.        type, id, order-id, merchant-ccid, transaction, date,
  1300.        pr-hash, pr-signed-hash, cyberkey, swversion, amount,
  1301.        card*
  1302.  
  1303.    #####################################################################
  1304.    Explanation:
  1305.    The pr-signed-hash field is the same as the merchant-signed-hash in
  1306.        the PR1 message but has a different name for historic reasons.
  1307.  
  1308.  
  1309. 4.3.3 CH2 - charge-card-response
  1310.  
  1311.    Description: Return to customer from a CH1 attempt to pay via credit
  1312.        card.  Indicates success/failure.
  1313.  
  1314.    #####################################################################
  1315.    Sender: MerchantApp
  1316.    Receiver: CyberApp
  1317.    #####################################################################
  1318.    Sample Message:
  1319.  
  1320.    $$-CyberCash-0.8-$$
  1321.    type: charge-card-response
  1322.    merchant-ccid: ACME-012
  1323.    id: myCyberCashID
  1324.    transaction: 78784567
  1325.    date: 1995121100500.nnn
  1326.    merchant-date: 19950121100505.nnn
  1327.    merchant-response-code: failure/success/etc.
  1328.    pr-hash: 7Tm/djB05pLIw3JAyy5E7A==
  1329.    pr-signed-hash:
  1330.     a/0meaMHRinNVd8nq/fKsYg5AfTZZUCX0S3gkjAhZTmcrkp6RZvppmDd/P7lboFLFDBh
  1331.     Ec0oIyxWeHfArb3OtkgXxJ7qe0Gmm/87jG5ClGnpBnw0dY7qcJ6XoGB6WGnD
  1332.    merchant-message; This is a message to display to the user from the
  1333.        merchant. Can be multiple lines...  Is not secure.
  1334.    opaque:  [might not be present, see explanation]
  1335.     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb
  1336.     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV
  1337.     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs
  1338.     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo
  1339.     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==
  1340.    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$
  1341.  
  1342.    #####################################################################
  1343.  
  1344.  
  1345.  
  1346. Eastlake, et al              Informational                     [Page 24]
  1347.  
  1348. RFC 1898                 CyberCash Version 0.8             February 1996
  1349.  
  1350.  
  1351.    Opaque Key:   Same customer session key from CH1 passed through CM1
  1352.        for ID and Transaction
  1353.  
  1354.    #####################################################################
  1355.    Opaque Section Contents (from CM.6):
  1356.  
  1357.    server-date: 19950121100706.nnn
  1358.    amount: usd 10.00
  1359.    order-id: 1231-3424-234242
  1360.    card*:  [from successful BC4]
  1361.    response-code: failure/success/etc.
  1362.    swseverity: fatal/warning
  1363.    swmessage; Tells CyberApp that it is obsolete.  Display this
  1364.     text to the user.  [only present if SWSeverity present]
  1365.    message;
  1366.           Free text of the error/success condition.
  1367.           This text is to be displayed to the customer
  1368.           by the CyberCash application...
  1369.  
  1370.    #####################################################################
  1371.    Signature is of the following fields: no signature
  1372.  
  1373.    #####################################################################
  1374.    Explanation:
  1375.    Opaque section optional because the CH1 to the merchant can fail due
  1376.        to bad order-id, date, wrong merchant-ccid, etc., etc. So the
  1377.        server may not be involved at all in which case there is no
  1378.        mechanism for generating a secure opaque section.  (It could even
  1379.        be that merchant attempt to contact the server times out.)
  1380.    If transaction makes it through server (via CM*) then
  1381.        Response-Code at top level should mirror response-code to
  1382.        merchant from server. (Hopefully the same as the
  1383.        response-code to customer from server but the merchant can't
  1384.        tell that.)
  1385.    Note that there can be two messages, one from merchant and one
  1386.        from the server.
  1387.  
  1388.  
  1389. 4.4 Merchant Credit Card Purchasing Messages
  1390.  
  1391.    The merchant presents credit card purchases, makes adjustments, and
  1392.    the like via the CM* series.  In general, the credit card cycle is
  1393.    one of getting authorization for a purchase, then capturing the
  1394.    purchase in a batch for clearance, then performing the clearance.  It
  1395.    is also possible to void a capture (i.e., remove an item from a
  1396.    batch), and process credits (returns). (See section 5.1.)
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402. Eastlake, et al              Informational                     [Page 25]
  1403.  
  1404. RFC 1898                 CyberCash Version 0.8             February 1996
  1405.  
  1406.  
  1407.    Authorizations always come from an acquirer via the response to a CM1
  1408.    or CM2 message. If capture is being performed by the acquirer or some
  1409.    entity between the CyberCash server and the acquirer, this is done
  1410.    via a CM3 or CM2 message depending on the arrangement between the
  1411.    merchant and the entity doing the capture.  Returns (credits) are
  1412.    handled via message CM5.  Message CM4 is provided for voiding a
  1413.    capture or return before the batch is cleared.  CM6 is the message
  1414.    format used for responses to all the other CM* messages.
  1415.  
  1416.    An MM* series has also been implemented for purely merchant
  1417.    originated CyberCash charges as described in section 3.4.7
  1418.  
  1419.    Current credit card dispute resolution systems assume that the
  1420.    merchant knows the card number.  Thus, to work with these systems,
  1421.    special bypass messages have been set up that allow the merchant to
  1422.    obtain, for a particular transaction, the information that CyberCash
  1423.    otherwise goes to lengths to hide from the merchant.  See sections
  1424.    3.4.8 and 3.4.9.  This makes the obtaining os such information by the
  1425.    merchant an auditable event.
  1426.  
  1427.    Many present day merchants operate in a "terminal capture" mode where
  1428.    the authorizations are captured by the merchant and the merchant
  1429.    later submits the settlement batch.  Messages have been defined and
  1430.    are being implemented so that such merchant captured batches can be
  1431.    submitted via CyberCash.
  1432.  
  1433.  
  1434. 4.4.1 CM1 - auth-only
  1435.  
  1436.    Description: This message is used by the merchant to perform an
  1437.        authorization operation on the credit card sent in by the
  1438.        customer.
  1439.  
  1440.    #####################################################################
  1441.    Sender: MerchantApp
  1442.    Receiver: CyberServer
  1443.    #####################################################################
  1444.    Sample Message:
  1445.  
  1446.    $$-CyberCash-0.8-$$
  1447.    merchant-ccid: ACME-69
  1448.    merchant-transaction: 123123
  1449.    merchant-date: 19950121100705.nnn
  1450.    merchant-cyberkey: CC1001
  1451.    cyberkey: CC1001
  1452.    opaque:
  1453.     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb
  1454.     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV
  1455.  
  1456.  
  1457.  
  1458. Eastlake, et al              Informational                     [Page 26]
  1459.  
  1460. RFC 1898                 CyberCash Version 0.8             February 1996
  1461.  
  1462.  
  1463.     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs
  1464.     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo
  1465.     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==
  1466.    merchant-opaque:
  1467.     6BVEfSlgVCoGh1/0R+g1C143MaA6QLvKpEgde86WWGJWx45bMUZvaAu4LVeqWoYCqSGf
  1468.     aWKUF7awol0h1i1jtgieyAcXB8ikvRJIsupSAwsRMyoNlekR6tucvfv/622JY7+n7nGO
  1469.     dGbMzP0GJImh2DmdPaceAxyOB/xOftf6ko0nndnvB+/y2mFjdUGLtFQP/+3bTpZttZXj
  1470.     j7RO1khe1UrAIk2TGQJmNw+ltsu0f42MgsxB8Q31vjPtoiPi5LEmD0Y4jlpJ7Jg2Ub84
  1471.     F9vJhYpmzNkdiJUe83Hvo/xfJRbhafJpXFEsUZwQK0jU1ksU6CQd2+CPBB+6MxtsHoxJ
  1472.     mjD6ickhd+SQZhbRCNerlTiQGhuL4wUAxzGh8aHk2oXjoMpVzWw2EImPu5QaPEc36xgr
  1473.     mNz8vCovDiuy3tZ42IGArxBweasLPLCbm0Y=
  1474.    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$
  1475.  
  1476.    #####################################################################
  1477.    Merchant-Opaque Section Contents:
  1478.  
  1479.    type: auth-only
  1480.    order-id: 12313424234242
  1481.    merchant-amount: usd 10.00
  1482.    pr-hash: 7Tm/djB05pLIw3JAyy5E7A==
  1483.    pr-signed-hash:
  1484.     a/0meaMHRinNVd8nq/fKsYg5AfTZZUCX0S3gkjAhZTmcrkp6RZvppmDd/P7lboFLFDBh
  1485.     Ec0oIyxWeHfArb3OtkgXxJ7qe0Gmm/87jG5ClGnpBnw0dY7qcJ6XoGB6WGnD
  1486.    id: myCyberCashID
  1487.    transaction: 78784567
  1488.    date: 19950121100505.nnn
  1489.    merchant-signature:
  1490.     v4qZMe2d7mUXztVdC3ZPMmMgYHlBA7bhR96LSehKP15ylqR/1KwwbBAX8CEqns55UIYY
  1491.     GGMwPMGoF+GDPM7GlC6fReQ5wyvV1PnETSVO9/LAyRz0zzRYuyVueOjWDlr5
  1492.  
  1493.    #####################################################################
  1494.    merchant-opaque key is generated from the CyberCash encrypting public
  1495.         key identified in merchant-cyberkey.
  1496.  
  1497.    Customer opaque section (Opaque) - see CH1.
  1498.  
  1499.    #####################################################################
  1500.    Opaque Section Contents & Signature:  (exactly as in CH1)
  1501.  
  1502.    swversion: 0.8win
  1503.    amount: usd 10.00
  1504.    card*: [from successful BC4 (includes card-expiration-date,
  1505.        card-number, and card-salt)]
  1506.    signature:
  1507.     48SBKUfojyC9FDKCwdCYNvucgiDxYO9erZW4QndIXZRyheTHXH8OeIhwUkyLmgQSD/UK
  1508.     +IX9035/jUkdNPOxUQq9y/beHS1HU9Fe0wlzfXYRtnjlqvQX+yUfQ4T7eNEs
  1509.  
  1510.    #####################################################################
  1511.  
  1512.  
  1513.  
  1514. Eastlake, et al              Informational                     [Page 27]
  1515.  
  1516. RFC 1898                 CyberCash Version 0.8             February 1996
  1517.  
  1518.  
  1519.    merchant-signature is on the following fields: merchant-ccid,
  1520.        merchant-transaction, merchant-date, merchant-cyberkey, type,
  1521.        order-id, merchant-amount, pr-hash, pr-signed-hash, id,
  1522.        transaction, date, cyberkey
  1523.  
  1524.    Customer Signature: see CH1
  1525.  
  1526.    #####################################################################
  1527.    Explanation:
  1528.    The merchant signature ensures integrity of the majority of the
  1529.        message.  validation of the customer signature ensures that the
  1530.        customer opaque part was not tampered or replaced.
  1531.  
  1532.  
  1533. 4.4.2 CM2 - auth-capture
  1534.  
  1535.    Description: Do authorization and actually enters charge for
  1536.        clearance. Message just like CM1 except for different
  1537.        type.
  1538.  
  1539.    #####################################################################
  1540.    Sender: MerchantApp
  1541.    Receiver: CyberServer
  1542.    #####################################################################
  1543.    Sample Message:
  1544.  
  1545.    [exactly the same as CM1 except
  1546.  
  1547.    type: auth-capture
  1548.  
  1549.    ]
  1550.  
  1551.  
  1552. 4.4.3 CM3 - post-auth-capture
  1553.  
  1554.    Description: Captures a charge previously authorized. Message is
  1555.        the same as CM1 except that it also has an authorization-code
  1556.        field (which is also included in the signature) and the type
  1557.        is different.
  1558.  
  1559.    #####################################################################
  1560.    Sender: MerchantApp
  1561.    Receiver: CyberServer
  1562.    #####################################################################
  1563.    Sample Message:
  1564.  
  1565.    $$-CyberCash-0.8-$$
  1566.    merchant-ccid: ACME-012
  1567.  
  1568.  
  1569.  
  1570. Eastlake, et al              Informational                     [Page 28]
  1571.  
  1572. RFC 1898                 CyberCash Version 0.8             February 1996
  1573.  
  1574.  
  1575.    merchant-transaction: 123123
  1576.    merchant-date: 19950121100705.nnn
  1577.    merchant-cyberkey: CC1001
  1578.    cyberkey: CC1001
  1579.    opaque:
  1580.     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb
  1581.     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV
  1582.     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs
  1583.     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo
  1584.     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==
  1585.    merchant-opaque:
  1586.     6BVEfSlgVCoGh1/0R+g1C143MaA6QLvKpEgde86WWGJWx45bMUZvaAu4LVeqWoYCqSGf
  1587.     aWKUF7awol0h1i1jtgieyAcXB8ikvRJIsupSAwsRMyoNlekR6tucvfv/622JY7+n7nGO
  1588.     dGbMzP0GJImh2DmdPaceAxyOB/xOftf6ko0nndnvB+/y2mFjdUGLtFQP/+3bTpZttZXj
  1589.     j7RO1khe1UrAIk2TGQJmNw+ltsu0f42MgsxB8Q31vjPtoiPi5LEmD0Y4jlpJ7Jg2Ub84
  1590.     F9vJhYpmzNkdiJUe83Hvo/xfJRbhafJpXFEsUZwQK0jU1ksU6CQd2+CPBB+6MxtsHoxJ
  1591.     mjD6ickhd+SQZhbRCNerlTiQGhuL4wUAxzGh8aHk2oXjoMpVzWw2EImPu5QaPEc36xgr
  1592.     mNz8vCovDiuy3tZ42IGArxBweasLPLCbm0Y=
  1593.    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$
  1594.  
  1595.    #####################################################################
  1596.    Merchant-Opaque Section Contents:
  1597.  
  1598.    type: post-auth-capture
  1599.    authorization-code: a12323
  1600.    order-id: 1231-3424-234242
  1601.    merchant-amount: usd 10.00
  1602.    pr-hash: 7Tm/djB05pLIw3JAyy5E7A==
  1603.    pr-signed-hash:
  1604.     a/0meaMHRinNVd8nq/fKsYg5AfTZZUCX0S3gkjAhZTmcrkp6RZvppmDd/P7lboFLFDBh
  1605.     Ec0oIyxWeHfArb3OtkgXxJ7qe0Gmm/87jG5ClGnpBnw0dY7qcJ6XoGB6WGnD
  1606.    id: myCyberCashID
  1607.    transaction: 78784567
  1608.    date: 19950121100505.nnn
  1609.    merchant-signature:
  1610.     vxyEF1ZHn5Rgmtms3H3t/+UB6RAvZQA1AdddjvlS0H75N1x83FyJuh8V9Ok6t4EUQQZ6
  1611.     Mnptzc6phJi3Ar0s0oumELsdc8upJdXpNpJV021PGJXfDKfHP0heJIWLodXr
  1612.  
  1613.    #####################################################################
  1614.    merchant-opaque key is generated from the CyberCash encrypting public
  1615.         key identified in merchant-cyberkey.
  1616.  
  1617.    Customer opaque section (Opaque) - see CH1.
  1618.  
  1619.    #####################################################################
  1620.    Opaque Section Contents & Signature:  (exactly as in CH1)
  1621.  
  1622.    swversion: 0.8win
  1623.  
  1624.  
  1625.  
  1626. Eastlake, et al              Informational                     [Page 29]
  1627.  
  1628. RFC 1898                 CyberCash Version 0.8             February 1996
  1629.  
  1630.  
  1631.    amount: usd 10.00
  1632.    card*: [from successful BC4 (includes card-salt, card-number,
  1633.        and card-expiration)]
  1634.    signature:
  1635.     48SBKUfojyC9FDKCwdCYNvucgiDxYO9erZW4QndIXZRyheTHXH8OeIhwUkyLmgQSD/UK
  1636.     +IX9035/jUkdNPOxUQq9y/beHS1HU9Fe0wlzfXYRtnjlqvQX+yUfQ4T7eNEs
  1637.  
  1638.    #####################################################################
  1639.    merchant-signature is on the following fields: merchant-ccid,
  1640.        merchant-transaction, merchant-date, merchant-cyberkey, type,
  1641.        authorization-code, order-id, merchant-amount, pr-hash,
  1642.        pr-signed-hash, id, transaction, date, cyberkey
  1643.  
  1644.    #####################################################################
  1645.    Explanation:
  1646.    The merchant signature ensures integrity of the majority of the
  1647.        message validation of the customer signature ensures that the
  1648.        customer opaque part was not tampered or replaced.
  1649.  
  1650.  
  1651. 4.4.4 CM4 - void
  1652.  
  1653.    Description: Voids out a charge/return if received before
  1654.        clearance.  Message is the same as CM1 except that it also has
  1655.        a retrieval-reference-number field (which is also included in the
  1656.        signature) and the type is different.
  1657.  
  1658.    #####################################################################
  1659.    Sender: MerchantApp
  1660.    Receiver: CyberServer
  1661.    #####################################################################
  1662.    Sample Message:
  1663.  
  1664.    $$-CyberCash-0.8-$$
  1665.    merchant-ccid: ACME-012
  1666.    merchant-transaction: 123123
  1667.    merchant-date: 19950121100705.nnn
  1668.    merchant-cyberkey: CC1001
  1669.    cyberkey: CC1001
  1670.    opaque:
  1671.     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb
  1672.     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV
  1673.     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs
  1674.     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo
  1675.     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==
  1676.    merchant-opaque:
  1677.     6BVEfSlgVCoGh1/0R+g1C143MaA6QLvKpEgde86WWGJWx45bMUZvaAu4LVeqWoYCqSGf
  1678.     aWKUF7awol0h1i1jtgieyAcXB8ikvRJIsupSAwsRMyoNlekR6tucvfv/622JY7+n7nGO
  1679.  
  1680.  
  1681.  
  1682. Eastlake, et al              Informational                     [Page 30]
  1683.  
  1684. RFC 1898                 CyberCash Version 0.8             February 1996
  1685.  
  1686.  
  1687.     dGbMzP0GJImh2DmdPaceAxyOB/xOftf6ko0nndnvB+/y2mFjdUGLtFQP/+3bTpZttZXj
  1688.     j7RO1khe1UrAIk2TGQJmNw+ltsu0f42MgsxB8Q31vjPtoiPi5LEmD0Y4jlpJ7Jg2Ub84
  1689.     F9vJhYpmzNkdiJUe83Hvo/xfJRbhafJpXFEsUZwQK0jU1ksU6CQd2+CPBB+6MxtsHoxJ
  1690.     mjD6ickhd+SQZhbRCNerlTiQGhuL4wUAxzGh8aHk2oXjoMpVzWw2EImPu5QaPEc36xgr
  1691.     mNz8vCovDiuy3tZ42IGArxBweasLPLCbm0Y=
  1692.    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$
  1693.  
  1694.    #####################################################################
  1695.    Merchant-Opaque Section Contents:
  1696.  
  1697.    type: void
  1698.    retrieval-reference-number: 432112344321
  1699.    order-id: 1231-3424-234242
  1700.    merchant-amount: usd 10.00
  1701.    pr-hash: WATCQuH2q17lRuoxD78YBg==
  1702.    pr-signed-hash:
  1703.     8zqw0ipqtLtte0tBz5/5VPNJPPonfTwkfZPbtuk5lqMykKDvThhO0ycrfT7eXrn/hLUC
  1704.     kXoSctahEVdw1KBJbp0EVr1zVzcN9Aa7m2fJgxNfiisTgIRW+PMaa78rn+Ov
  1705.    id: myCyberCashID
  1706.    transaction: 78784567
  1707.    date: 19950121100505.nnn
  1708.    Merchant-Signature: lkjladjslkjflsakjflkjsdljflsakjflkjsdljflsakjflkj
  1709.        flsakjflkjsdljflsakjflkjsdljflsajflksdjflksdjflsdjssf=
  1710.  
  1711.    #####################################################################
  1712.    Merchant-Opaque key is generated from the CyberCash encrypting public
  1713.         key identified in Merchant-CyberKey.
  1714.  
  1715.    Customer opaque section (Opaque) - see CH1.
  1716.  
  1717.    #####################################################################
  1718.    Opaque Section Contents & Signature:  (exactly as in CH1)
  1719.  
  1720.    swversion: 0.8win
  1721.    amount: usd 10.00
  1722.    card*: [from successful bc4 (includes card-salt, card-number,
  1723.        and card-expiration)]
  1724.    signature:
  1725.     48SBKUfojyC9FDKCwdCYNvucgiDxYO9erZW4QndIXZRyheTHXH8OeIhwUkyLmgQSD/UK
  1726.     +IX9035/jUkdNPOxUQq9y/beHS1HU9Fe0wlzfXYRtnjlqvQX+yUfQ4T7eNEs
  1727.  
  1728.    #####################################################################
  1729.    merchant-signature is on the following fields: merchant-ccid,
  1730.        merchant-transaction, merchant-date, merchant-cyberkey, type,
  1731.        retrieval-reference-number, order-id, merchant-amount, pr-hash,
  1732.        pr-signed-hash, id, transaction, date, cyberkey
  1733.  
  1734.    #####################################################################
  1735.  
  1736.  
  1737.  
  1738. Eastlake, et al              Informational                     [Page 31]
  1739.  
  1740. RFC 1898                 CyberCash Version 0.8             February 1996
  1741.  
  1742.  
  1743.    Explanation:
  1744.    The merchant signature ensures integrity of the majority of the
  1745.        message.  Validation of the customer signature ensures that the
  1746.        customer opaque part was not tampered or replaced.
  1747.  
  1748.  
  1749. 4.4.5 CM5 - return
  1750.  
  1751.    Description: Reverse a previous charge.  Really sort of a negative
  1752.        charge.  Message just like CM1 except for different type.
  1753.  
  1754.    #####################################################################
  1755.    Sender: MerchantApp
  1756.    Receiver: CyberServer
  1757.    #####################################################################
  1758.    Sample Message:
  1759.  
  1760.    [exactly the same as CM1 except
  1761.  
  1762.    type: return
  1763.  
  1764.    ]
  1765.  
  1766.  
  1767. 4.4.6 CM6 - charge-action-response
  1768.  
  1769.    Description: This receipt is given to the merchant as a receipt
  1770.        for a completed charge action.  Indicates success/failure/etc.
  1771.  
  1772.    #####################################################################
  1773.    Sender: CyberServer
  1774.    Receiver: MerchantApp
  1775.    #####################################################################
  1776.    Sample Message:
  1777.  
  1778.    $$-CyberCash-0.8-$$
  1779.    merchant-ccid: ACME-012
  1780.    merchant-transaction: 123123
  1781.    merchant-date: 19950121100705.nnn
  1782.    opaque:
  1783.     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb
  1784.     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV
  1785.     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs
  1786.     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo
  1787.     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==
  1788.    merchant-opaque:
  1789.     6BVEfSlgVCoGh1/0R+g1C143MaA6QLvKpEgde86WWGJWx45bMUZvaAu4LVeqWoYCqSGf
  1790.     aWKUF7awol0h1i1jtgieyAcXB8ikvRJIsupSAwsRMyoNlekR6tucvfv/622JY7+n7nGO
  1791.  
  1792.  
  1793.  
  1794. Eastlake, et al              Informational                     [Page 32]
  1795.  
  1796. RFC 1898                 CyberCash Version 0.8             February 1996
  1797.  
  1798.  
  1799.     dGbMzP0GJImh2DmdPaceAxyOB/xOftf6ko0nndnvB+/y2mFjdUGLtFQP/+3bTpZttZXj
  1800.     j7RO1khe1UrAIk2TGQJmNw+ltsu0f42MgsxB8Q31vjPtoiPi5LEmD0Y4jlpJ7Jg2Ub84
  1801.     F9vJhYpmzNkdiJUe83Hvo/xfJRbhafJpXFEsUZwQK0jU1ksU6CQd2+CPBB+6MxtsHoxJ
  1802.     mjD6ickhd+SQZhbRCNerlTiQGhuL4wUAxzGh8aHk2oXjoMpVzWw2EImPu5QaPEc36xgr
  1803.     mNz8vCovDiuy3tZ42IGArxBweasLPLCbm0Y=
  1804.    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$
  1805.  
  1806.    #####################################################################
  1807.    Merchant-Opaque Key: Session key same as that of CM1/2/3/4/5 for
  1808.        same Merchant-Transaction and Merchant-CCID.
  1809.  
  1810.    Opaque Key:  Same customer session key from CH1 passed through CM*
  1811.        for ID and Transaction
  1812.  
  1813.    #####################################################################
  1814.    Merchant-Opaque Section Contents:
  1815.  
  1816.    type: charge-action-response
  1817.    server-date: 19950121100706.nnn
  1818.    action-code: XXX  [per ISO 8583]
  1819.    response-code: failure/success/etc.
  1820.    order-id: 1231-3424-234242
  1821.    pr-hash: 7Tm/djB05pLIw3JAyy5E7A==
  1822.    pr-signed-hash:
  1823.     8zqw0ipqtLtte0tBz5/5VPNJPPonfTwkfZPbtuk5lqMykKDvThhO0ycrfT7eXrn/hLUC
  1824.     kXoSctahEVdw1KBJbp0EVr1zVzcN9Aa7m2fJgxNfiisTgIRW+PMaa78rn+Ov
  1825.    retrieval-reference-number: 432112344321
  1826.    authorization-code: a12323
  1827.    card-hash: 7Tm/djB05pLIw3JAyy5E7A==
  1828.    {
  1829.    card-prefix: nnxxxx  [Returned if merchant is not full-PAN]
  1830.    }
  1831.        or
  1832.    {
  1833.    card-number: 1234567890123456  [Returned if merchant is full-PAN]
  1834.    }
  1835.    expiration-date: 12/34  [always present]
  1836.    merchant-swseverity: fatal/warning
  1837.    merchant-swmessage; Message for merchant about out of date
  1838.        protocol number in $$ start line of merchant message.
  1839.    merchant-message;
  1840.           Free text of the error/success condition.
  1841.           This text is for the merchant from the server...
  1842.    id: myCyberCashID
  1843.    transaction: 78784567
  1844.    date: 19950121100505.nnn
  1845.  
  1846.    Opaque (Customer) contents:
  1847.  
  1848.  
  1849.  
  1850. Eastlake, et al              Informational                     [Page 33]
  1851.  
  1852. RFC 1898                 CyberCash Version 0.8             February 1996
  1853.  
  1854.  
  1855.    server-date: 19950121100706.nnn
  1856.    amount: usd 10.00
  1857.    order-id: 1231-3424-234242
  1858.    card*: [from successful BC4]
  1859.    response-code: failure/success/etc.
  1860.    swseverity: fatal/warning
  1861.    swmessage; Tells CyberApp that it is obsolete display this
  1862.     text to the user.  [only present if SWSeverity present]
  1863.    message;
  1864.           Free text of the error/success condition.
  1865.           This text is to be displayed to the customer
  1866.           by the CyberCash application...
  1867.  
  1868.    #####################################################################
  1869.    Signature is of the following fields: no signature
  1870.  
  1871.    #####################################################################
  1872.    Explanation:
  1873.    retrieval-reference-number is needed for voids. authorization-code
  1874.        is needed for post-auth-capture.  These fields are each only
  1875.        present in the CM6 if they were returned by the bank which
  1876.        depends on what operation was being done.
  1877.    card-prefix is first two and last four digits of card-number.
  1878.    At merchant's bank's discretion the card-number or card-prefix is
  1879.        returned.
  1880.    card-hash is really the hash of the full card number and the salt
  1881.        provided by the customer.  card-hash is needed so the merchant
  1882.        can, if they wish, sort customer transactions by card without
  1883.        knowing the card number.
  1884.    card* is the card* fields delivered in the CM* messages being
  1885.        responded to.  They appear in alphabetic order.
  1886.    server-date duplicated in customer opaque area for security.
  1887.    {}'s in column one just for clarity of alternatives and do not
  1888.        actually appear in the message.
  1889.    []ed comments appear after some fields.
  1890.  
  1891.  
  1892. 4.4.7 The MM* Message Series
  1893.  
  1894.    The CM* message series above is the primary CyberCash credit card
  1895.    purchase system for securely handling charges from CyberCash
  1896.    customers.  However, merchants, who are authorized by their acquiring
  1897.    bank to accept such charges, may also receive telephone, mail, and
  1898.    over-the-counter sales.  To avoid any necessity for the merchant to
  1899.    have a second parallel system to handle these charges, an MM1 through
  1900.    MM6 message series is defined and has been implemented for these less
  1901.    secure transactions.
  1902.  
  1903.  
  1904.  
  1905.  
  1906. Eastlake, et al              Informational                     [Page 34]
  1907.  
  1908. RFC 1898                 CyberCash Version 0.8             February 1996
  1909.  
  1910.  
  1911.    The MM* messages look very similar to the CM* series but the
  1912.    "customer opaque" section is actually signed by the merchant and no
  1913.    separate customer CyberCash ID or prior card binding is required.
  1914.    The MM* message examples are omitted here in the interests of
  1915.    brevity.
  1916.  
  1917. 4.4.8 CD1 - card-data-request
  1918.  
  1919.    Description: Used by merchant to get card-number, etc., if
  1920.        information needed by merchant to resolve a dispute.
  1921.  
  1922.    #####################################################################
  1923.    Sender: MerchantApp
  1924.    Receiver: CyberServer
  1925.    #####################################################################
  1926.    Sample Message:
  1927.  
  1928.    $$-CyberCash-0.8-$$
  1929.    merchant-ccid: ACME-69
  1930.    merchant-transaction: 123123
  1931.    merchant-date: 19950121100705.nnn
  1932.    merchant-cyberkey: CC1001
  1933.    cyberkey: CC1001
  1934.    opaque:
  1935.     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb
  1936.     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV
  1937.     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs
  1938.     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo
  1939.     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==
  1940.    merchant-opaque:
  1941.     6BVEfSlgVCoGh1/0R+g1C143MaA6QLvKpEgde86WWGJWx45bMUZvaAu4LVeqWoYCqSGf
  1942.     aWKUF7awol0h1i1jtgieyAcXB8ikvRJIsupSAwsRMyoNlekR6tucvfv/622JY7+n7nGO
  1943.     dGbMzP0GJImh2DmdPaceAxyOB/xOftf6ko0nndnvB+/y2mFjdUGLtFQP/+3bTpZttZXj
  1944.     j7RO1khe1UrAIk2TGQJmNw+ltsu0f42MgsxB8Q31vjPtoiPi5LEmD0Y4jlpJ7Jg2Ub84
  1945.     F9vJhYpmzNkdiJUe83Hvo/xfJRbhafJpXFEsUZwQK0jU1ksU6CQd2+CPBB+6MxtsHoxJ
  1946.     mjD6ickhd+SQZhbRCNerlTiQGhuL4wUAxzGh8aHk2oXjoMpVzWw2EImPu5QaPEc36xgr
  1947.     mNz8vCovDiuy3tZ42IGArxBweasLPLCbm0Y=
  1948.    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$
  1949.  
  1950.    #####################################################################
  1951.    Merchant-Opaque Section Contents:
  1952.  
  1953.    type: card-data-request
  1954.    password: xyzzy
  1955.    server-date: 19950121100505.nnn  [optional]
  1956.    order-id: 12313424234242
  1957.    merchant-amount: usd 10.00
  1958.    pr-hash: 7Tm/djB05pLIw3JAyy5E7A==
  1959.  
  1960.  
  1961.  
  1962. Eastlake, et al              Informational                     [Page 35]
  1963.  
  1964. RFC 1898                 CyberCash Version 0.8             February 1996
  1965.  
  1966.  
  1967.    pr-signed-hash:
  1968.     IV8gWHx1f8eCkWsCsMOE3M8mnTbQ7IBBcEmyGDAwjdbaLu5Qm/bh06OX1npe2d3Hijxy
  1969.     +X8vKcVE6l6To27u7A7UmGm+po9lCUSLxgtyqyn3jWhHZpc5NZpwoTCf2pAK
  1970.    id: myCyberCashID
  1971.    transaction: 78784567
  1972.    date: 19950121100505.nnn
  1973.    merchant-signature:
  1974.     8zqw0ipqtLtte0tBz5/5VPNJPPonfTwkfZPbtuk5lqMykKDvThhO0ycrfT7eXrn/hLUC
  1975.     kXoSctahEVdw1KBJbp0EVr1zVzcN9Aa7m2fJgxNfiisTgIRW+PMaa78rn+Ov
  1976.  
  1977.    #####################################################################
  1978.    merchant-opaque key is generated from the CyberCash encrypting public
  1979.         key identified in merchant-cyberkey.
  1980.  
  1981.    Customer opaque section (Opaque) - see CH1.
  1982.  
  1983.    #####################################################################
  1984.    Opaque Section Contents & Signature:  (exactly as in CH1)
  1985.  
  1986.    swversion: 0.8win
  1987.    amount: usd 10.00
  1988.    card*: [from successful BC4 (includes card-expiration-date,
  1989.        card-number, and card-salt)]
  1990.    signature:
  1991.     48SBKUfojyC9FDKCwdCYNvucgiDxYO9erZW4QndIXZRyheTHXH8OeIhwUkyLmgQSD/UK
  1992.     +IX9035/jUkdNPOxUQq9y/beHS1HU9Fe0wlzfXYRtnjlqvQX+yUfQ4T7eNEs
  1993.  
  1994.    #####################################################################
  1995.    merchant-signature is on the following fields: merchant-ccid,
  1996.        merchant-transaction, merchant-date, merchant-cyberkey, type,
  1997.        password, server-date, order-id, merchant-amount, pr-hash,
  1998.        pr-signed-hash, id, transaction, date, cyberkey
  1999.  
  2000.    Customer Signature: see CH1
  2001.  
  2002.    #####################################################################
  2003.    Explanation:
  2004.    [see also CM1 explanation]
  2005.    The merchant may need to know the card involved and other
  2006.        information in order to resolve a disputed transaction.  This
  2007.        information is all contained in the original CH1 embedded in the
  2008.        CM1 for the transaction.  If the merchant saves the CM1 and other
  2009.        transaction information, they can send this CD1 message to the
  2010.        server.  While this reduces the pass through confidentiality of
  2011.        the system, the merchant is then on record as asking for this
  2012.        particular credit card number and excessive CD1's from a merchant
  2013.        can be flagged.
  2014.    password is an extra level of security intended to be manually entered
  2015.  
  2016.  
  2017.  
  2018. Eastlake, et al              Informational                     [Page 36]
  2019.  
  2020. RFC 1898                 CyberCash Version 0.8             February 1996
  2021.  
  2022.  
  2023.        at the merchant to authorize the unusual action.  Server stores a
  2024.        hash of the merchant-ccid and the password.
  2025.  
  2026.  
  2027. 4.4.9 CD2 - card-data-response
  2028.  
  2029.    Description: Respond to CD1 with failure or with success and card
  2030.        data.
  2031.  
  2032.    #####################################################################
  2033.    Sender: CyberServer
  2034.    Receiver: MerchantApp
  2035.    #####################################################################
  2036.    Sample Message:
  2037.  
  2038.    $$-CyberCash-0.8-$$
  2039.    merchant-ccid: ACME-012
  2040.    merchant-transaction: 123123
  2041.    merchant-date: 19950121100705.nnn
  2042.    merchant-opaque:
  2043.     t731/86R72ZLrqHLIf0VG6m3ybvs+dG6K705L8LFKEXgCti0NGjK83CwDsUdiso7U1JP
  2044.     2Z0BClVHLmhIBY7+QXx5iCEGHy8JKC9IWyNNi2O/OOIDgLeJAkMSZYbNQrSKViY34imS
  2045.     0s7Q6uDk9wV0fixjvRBuNO2B7urWWsqfkLOYDnHy0RvhyUzYxLrMaTX+/6IkyU5Z0lH3
  2046.     BXYBUNV8DgitEjgLXmyWuXRDlEBN02yeZgsFRm9GmuBHfCTySm2XqnifizpmKMUa9UiH
  2047.     onNx9W86fuBdcJF7CJgH5Gct2M/dx/f2VpoRkmeSmWxFrYi8wgtvddSXF9my40NZ8WZz
  2048.     CEUEvQhcmruopwEeehv+bejc3fDDZ23JKrbhlZ17lSvFR14PKFsi32pXFqTO0ej9GTc5
  2049.     L6c8nM3tI1qdHNCe0N5f7ASdKS0tYSxAYJLIR6MqPrXjNJEaRx7Vu1odMlkgrzGOV1fo
  2050.     5w33BQHK3U2h+1e5zYBeHY3ZYG4nmylYYXIye4xpuPN4QU0dGrWZoImYE44QOwjd5ozl
  2051.     xulPBjj6cpEI/9wTwR3tpkBb4ZfYirxxnoj9JUkPK9Srv9iJ
  2052.    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$
  2053.  
  2054.    #####################################################################
  2055.    Opaque Key: session key from CD1.
  2056.  
  2057.    #####################################################################
  2058.    Opaque Section Contents:
  2059.  
  2060.    type: card-data-response
  2061.    server-date: 19950121100706.nnn
  2062.    response-code: failure/success/etc.
  2063.    order-id: 1231-3424-234242
  2064.    pr-hash: 7Tm/djB05pLIw3JAyy5E7A==
  2065.    pr-signed-hash:
  2066.     IV8gWHx1f8eCkWsCsMOE3M8mnTbQ7IBBcEmyGDAwjdbaLu5Qm/bh06OX1npe2d3Hijxy
  2067.     +X8vKcVE6l6To27u7A7UmGm+po9lCUSLxgtyqyn3jWhHZpc5NZpwoTCf2pAK
  2068.    card-hash: 7Tm/djB05pLIw3JAyy5E7A==
  2069.    card-number: 4811123456781234
  2070.    card-type: visa
  2071.  
  2072.  
  2073.  
  2074. Eastlake, et al              Informational                     [Page 37]
  2075.  
  2076. RFC 1898                 CyberCash Version 0.8             February 1996
  2077.  
  2078.  
  2079.    card-name: John Q. Public
  2080.    expiration-date: 01/99
  2081.    merchant-swseverity: fatal/warning
  2082.    merchant-swmessage; Message for merchant about out of date
  2083.        protocol number in $$ start line of merchant message.
  2084.    merchant-message;
  2085.           Free text of the error/success condition.
  2086.           This text is for the merchant from the server...
  2087.    id: myCyberCashID
  2088.    transaction: 78784567
  2089.    date: 19950121100505.nnn
  2090.  
  2091.    #####################################################################
  2092.    Signature is of the following fields: no signature.
  2093.  
  2094.    #####################################################################
  2095.    Explanation:
  2096.    This normally returns selected fields from the decoding of the
  2097.        opaque part of a CH1 as sent to the server in a CD1.
  2098.  
  2099.  
  2100. 4.5 Utility and Error Messges
  2101.  
  2102.    A number of utility, status query, and special error reporting
  2103.    messages have also been found necessary in implementing the CyberCash
  2104.    system.
  2105.  
  2106.    It is desirable to be able to test connectivity, roughly synchronize
  2107.    clocks, and get an initial determination of what client protocol and
  2108.    software versions are accepted.  This is done via the P1 client to
  2109.    server message and its P2 server to client response.
  2110.  
  2111.    Clients need to be able to determine the status of earlier
  2112.    transactions when the client or merchant has crashed during or has
  2113.    suffered data loss since the transaction.  Two transaction query
  2114.    messages are defined, TQ1 and TQ2.  One just queries and the other
  2115.    also cancels the transaction, if it has not yet completed.  The
  2116.    response to both of these messages is a TQ3 response from the server.
  2117.  
  2118.    Since the system operates in a query response mode, there are two
  2119.    cases where special error messages are needed.  If a query seems to
  2120.    be of an undeterminable or unknown type, the UNK1 response error
  2121.    message is sent.  If a response seems to be of an undeterminable or
  2122.    unknown type or other serious error conditions occur at the client or
  2123.    merchant which should be logged at the CyberCash server, the DL1 or
  2124.    DL2 diagnostic log message is submitted by the client or merchant in
  2125.    question respectively.
  2126.  
  2127.  
  2128.  
  2129.  
  2130. Eastlake, et al              Informational                     [Page 38]
  2131.  
  2132. RFC 1898                 CyberCash Version 0.8             February 1996
  2133.  
  2134.  
  2135. 4.5.1 P1 - ping
  2136.  
  2137.    Description: Very light weight check that we have connectivity from
  2138.        the customer to the server.  Does no crypto to minimize
  2139.        overhead.
  2140.  
  2141.    #####################################################################
  2142.    Sender: CyberApp
  2143.    Receiver: CyberServer
  2144.    #####################################################################
  2145.    Sample Message:
  2146.    $$-CyberCash-0.8-$$
  2147.    type: ping
  2148.    id: myCyberCashID  [optional]
  2149.    transaction: 123123213
  2150.    date: 19950121100505.nnn
  2151.    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$
  2152.  
  2153.    #####################################################################
  2154.    Explanation:
  2155.    id optional as persona may not have been set up yet.
  2156.  
  2157.  
  2158. 4.5.2 P2 - ping-response
  2159.  
  2160.    Description: Response to the P1 light weight ping.  Does no
  2161.        crypto to minimize overhead.
  2162.  
  2163.    #####################################################################
  2164.    Sender: CyberServer
  2165.    Receiver: CyberApp
  2166.    #####################################################################
  2167.    Sample Message:
  2168.  
  2169.    $$-CyberCash-0.8-$$
  2170.    type: ping-response
  2171.    id: myCyberCashID  [if present in P1]
  2172.    transaction: 12312313
  2173.    date: 19950121100505.nnn
  2174.    server-date: 19950121100506.nnn
  2175.    swseverity: fatal/warning  [absent if ok]
  2176.    swmessage; Tells CyberApp that it is using an obsolete protocol.
  2177.         Display this text to the user.  [only present if SWSeverity
  2178.        present]
  2179.    response-code: success/failure/etc.
  2180.    message;
  2181.           Free text of the error/success condition.
  2182.           This text is to be displayed to the sender
  2183.  
  2184.  
  2185.  
  2186. Eastlake, et al              Informational                     [Page 39]
  2187.  
  2188. RFC 1898                 CyberCash Version 0.8             February 1996
  2189.  
  2190.  
  2191.           by their CyberCash application...
  2192.    supported-versions: 08.win, 0.81win, 0.8mac
  2193.    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$
  2194.  
  2195.    #####################################################################
  2196.    Explanation:
  2197.    swversion does not appear in P1 for security reasons so
  2198.        swseverity and swmessage appear only if the server can tell
  2199.        that things are old from the $$ header protocol version.
  2200.    supported-versions lets client know as soon as possible what
  2201.        versions are supported and, by implication, which are not. Does
  2202.        not compromise security by having client say what version it
  2203.        is.
  2204.  
  2205.  
  2206. 4.5.3 TQ1 - transaction-query
  2207.  
  2208.    Description: Client query to server for Transaction status.
  2209.  
  2210.    #####################################################################
  2211.    Sender: CyberApp
  2212.    Receiver: CyberServer
  2213.    #####################################################################
  2214.    Sample Message:
  2215.  
  2216.    $$-CyberCash-0.8-$$
  2217.    id: MyCyberCashID
  2218.    date: 19950121100505.nnn
  2219.    transaction: 12312314
  2220.    cyberkey: CC1001
  2221.    opaque:
  2222.     VFaztHuj757Jrv+JxZFsHORy/zgkrxhBCu9cPdE04c1NnXzVlGOHygpSl+UGbUvnhkYl
  2223.     21QQaHkaE3geccRk03cqFYoLNRCclImcsyeIZCgVt+2dJTj1V+E7R7ePQtCj+0gY42+V
  2224.     L5BWhVtmDQFyg1DdJ6n3S/er6ZuObAjpcAogG+T1Na5dJmrTA1wRMiYVkqhXi2KMYdur
  2225.     3U47P8ZGUza7W0MST3DgvviN0kVhtmHEnm515mo6NTQdfdxw9WZpy6vMqrBGk2nTgi2c
  2226.     bnf+muO0+kiNPXVvEzRrO8o=
  2227.    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$
  2228.  
  2229.    #####################################################################
  2230.    Opaque Key: generated from CyberCash encryption key identified in
  2231.        CyberKey
  2232.  
  2233.    #####################################################################
  2234.    Opaque Section Contents:
  2235.  
  2236.    type: transaction-query
  2237.    swversion: 0.8win
  2238.    begin-transaction: 1234
  2239.  
  2240.  
  2241.  
  2242. Eastlake, et al              Informational                     [Page 40]
  2243.  
  2244. RFC 1898                 CyberCash Version 0.8             February 1996
  2245.  
  2246.  
  2247.    end-transaction: 4321
  2248.    signature:
  2249.     jJfFsKvOxLaV87gxu7lIPet3wIDwh1H2F61reYC9jmUrS6WAtUVFG9aCNuTEBoMixF0X
  2250.     vD5oPfyheJRIlnL6i0c4o/bfyO3edKAacmWjTmKt6/4y9p3qgvKkSX8r9aym
  2251.  
  2252.    #####################################################################
  2253.    signature is of the following fields: id, date, transaction,
  2254.        cyberkey, type, swversion, begin-transaction,
  2255.        end-transaction
  2256.  
  2257.    #####################################################################
  2258.    Explanation:
  2259.    This is a client status query of a previous transaction or
  2260.        transactions.
  2261.    begin-transaction and end-transaction can be the same.
  2262.  
  2263.  
  2264. 4.5.4 TQ2 - transaction-cancel
  2265.  
  2266.    Description: Client query to server for Transaction
  2267.        cancellation/status.
  2268.  
  2269.    #####################################################################
  2270.    Sender: CyberApp
  2271.    Receiver: CyberServer
  2272.    #####################################################################
  2273.    Sample Message:
  2274.  
  2275.    $$-CyberCash-0.8-$$
  2276.    id: MyCyberCashID
  2277.    date: 19950121100505.nnn
  2278.    transaction: 12312314
  2279.    cyberkey: CC1001
  2280.    opaque:
  2281.     VFaztHuj757Jrv+JxZFsHORy/zgkrxhBCu9cPdE04c1NnXzVlGOHygpSl+UGbUvnhkYl
  2282.     21QQaHkaE3geccRk03cqFYoLNRCclImcsyeIZCgVt+2dJTj1V+E7R7ePQtCj+0gY42+V
  2283.     L5BWhVtmDQFyg1DdJ6n3S/er6ZuObAjpcAogG+T1Na5dJmrTA1wRMiYVkqhXi2KMYdur
  2284.     3U47P8ZGUza7W0MST3DgvviN0kVhtmHEnm515mo6NTQdfdxw9WZpy6vMqrBGk2nTgi2c
  2285.     bnf+muO0+kiNPXVvEzRrO8o=
  2286.    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$
  2287.  
  2288.    #####################################################################
  2289.    Opaque Key: generated from CyberCash encryption key identified in
  2290.        CyberKey
  2291.  
  2292.    #####################################################################
  2293.    Opaque Section Contents:
  2294.  
  2295.  
  2296.  
  2297.  
  2298. Eastlake, et al              Informational                     [Page 41]
  2299.  
  2300. RFC 1898                 CyberCash Version 0.8             February 1996
  2301.  
  2302.  
  2303.    type: transaction-cancel
  2304.    swversion: 0.8win
  2305.    begin-transaction: 1234
  2306.    end-transaction: 4321
  2307.    signature:
  2308.     kD7DEav2uLQIYMtP9gbhYaBUpB2a5whNwnK2eXbbyTCf56F6dl3DIVf7D8Z4WxbY2YZn
  2309.     ByRIKeqlhmss7fbdnBiDYmKfOuc+I4bi/Oslml5riaciQhTd2JdHG+PCcHwZ
  2310.  
  2311.    #####################################################################
  2312.    signature is of the following fields: id, date, transaction,
  2313.        cyberkey, type, swversion, begin-transaction, end-transaction
  2314.  
  2315.    #####################################################################
  2316.    Explanation:
  2317.    This is a client attempt to cancel a previous transaction or
  2318.        transactions.
  2319.    begin-transaction and end-transaction can be the same.
  2320.  
  2321.    The transaction-cancel transaction (TQ.2) is defined between the
  2322.    client and the server.  This transaction permits the client to
  2323.    query the status of an operation and to stop the operation from
  2324.    occurring if it has not already occurred.
  2325.  
  2326.  
  2327. 4.5.5 TQ3 - transaction-response
  2328.  
  2329.    Description: Reports generated by a TQ1 or TQ2
  2330.  
  2331.    #####################################################################
  2332.    Sender: CyberServer
  2333.    Receiver: CyberApp
  2334.    #####################################################################
  2335.    Sample Message:
  2336.  
  2337.    $$-CyberCash-0.8-$$
  2338.    id: mycybercashid
  2339.    date: 19950121100505.nnn
  2340.    transaction: 12312314
  2341.    server-date: 19950121100505.nnn
  2342.    opaque:
  2343.     eFXRL+H0J5q318M21wRdtcbhu9WCyLysQkeF9oIcjtbstymx343bbt0EAtU1gcJaUKJZ
  2344.     3skgvwrhcxU4bFcE68OPlUXAvLq10I3MczPYPsiGrsU0K4bZtQvDZmn727QQAfONBm5s
  2345.     s1yjIha+Fj481BJQs0CTYc3ju90lAjCYgirXtnnR6yJXoDO75b7UjthvHSnrTWVZvktX
  2346.     PvTuUCYzbXSFoYvwFM3Y+yHqSHlmWutYKQpYze8zbUSDQfmwTCJyw3aY2JasZ+xMP/CD
  2347.     JWbCA+gCLBYCnvzM/ExKTZTFD3xr5JBfNbV4p6CiK6lsfRFD7maAK6TSVnWjwCEJNpOv
  2348.     fyllfWD04fT7LINQcjJiQK1Pk/912Tk6Q35eRaQZorwv2hnY/7By2OkPyFdAqFL+D0H6
  2349.     TqzxmdEjEFKxi/PPT1+Cs/Nszy8wZzaGg8iWATfARY6stl+02dDhwOoFXSBNvchlVrcI
  2350.     IlvhumSIQs29Pntj3DbkYo4IEmmN/qi1vnzld22q7lA1q/CQakyc7jlQUFISx76buqwy
  2351.  
  2352.  
  2353.  
  2354. Eastlake, et al              Informational                     [Page 42]
  2355.  
  2356. RFC 1898                 CyberCash Version 0.8             February 1996
  2357.  
  2358.  
  2359.     35XiC9Yn8flE4Va14UxMf2RCR1B/XoV6AEd64KwPeCYyOYvwbRcYpRMBXFLyYgWM+ME1
  2360.     +yp7c66SrCBhW4Q8AJYQ+5j5uyO7uKyyq7OhrV0IMpRDPjiQXZMooLZOifJPmpvJ66hC
  2361.     VZuWMuA6LR+TJzWUm4sUP9Zb6zMQShedUyOPrtw1vkJXU1vZ5aI8OJAgUcLEitcD+dsY
  2362.     Df4CzA00fC10POkJ58HZB/pSBfUrHAa+IqMHyZkV/HBi9TjTwmktJi+8T9orXS0jSvor
  2363.     dMTGWn0ifETy2VXt
  2364.    $$-CyberCash-End-0QXqLlNxrn4GNQPPk9AO1Q==-$$
  2365.  
  2366.  
  2367.    #####################################################################
  2368.    Opaque Key: Session key from TQ1/TQ2 with same Transaction and ID.
  2369.  
  2370.    #####################################################################
  2371.    Opaque Section Contents:
  2372.  
  2373.    type: transaction-response
  2374.    response-code: success/failure/etc.
  2375.    message; general free form text message from server to
  2376.        customer....
  2377.    swseverity: fatal/warning
  2378.    swmessage; Message indicating that CyberApp software is obsolete.
  2379.        May be multiple lines.
  2380.    report-fee: usd 0.15  [if non-zero]
  2381.  
  2382.    transaction-1: old-transaction-number
  2383.    transaction-status-1: success/failure/pending/cancelled/etc.
  2384.    server-date-1: 19951212125959.nnn
  2385.    date-1: 19950121100505.nnn
  2386.    type-1: auth-only/etc.
  2387.  
  2388.    #####################################################################
  2389.    Signature is of the following fields:  no signature
  2390.  
  2391.    #####################################################################
  2392.    Explanation:
  2393.    Report-fee is the notification that this report cost a fee and is
  2394.        only present if there is a fee.
  2395.    There can be multiple transaction for the same transaction number as
  2396.        there could have been a auth, post-auth-capture, void, etc.
  2397.  
  2398.    Terms
  2399.        "original transaction" refers to the payment or other transaction
  2400.    that is being queried or canceled.
  2401.           Note: this transaction may not actually reside at the server.
  2402.        "request" refers to the requesting TQ.2 or TQ.1 message
  2403.  
  2404.    id: id from the request message
  2405.    date: date from the request message
  2406.    transaction: transaction from the request message
  2407.  
  2408.  
  2409.  
  2410. Eastlake, et al              Informational                     [Page 43]
  2411.  
  2412. RFC 1898                 CyberCash Version 0.8             February 1996
  2413.  
  2414.  
  2415.    server-date: current date/time
  2416.    type: transaction-response
  2417.    response-code: response code for request message, can be one of:
  2418.        "success" means the request message was processed.  Does not imply
  2419.        query or cancellation status of the request.
  2420.        "failure-hard" means that the request message was not processed
  2421.        due to being ill-formed or otherwise inoperable.
  2422.        "failure-swversion" means that the request message was not
  2423.        processed due to software revision problems.
  2424.    message: the message applies only to the TQ transaction, not to the
  2425.        status of the transactions being queried or canceled.  The
  2426.        message is provided according to the response-code as: "success"
  2427.        - message is omitted. "failure-hard" - use standard hard failure
  2428.        message. "failure-swversion" - use standard swversion message for
  2429.        fatal
  2430.    swseverity: applies to request message
  2431.    swmessage: applies to request message
  2432.     -- per query/cancel fields ('N' is a series from 1 to N) --
  2433.    transaction-N: transaction number of original transaction, or if
  2434.        the original transaction is not present in server the transaction
  2435.        number that the query / cancel request refers to
  2436.    transaction-status-N: status of original transaction, may be one of:
  2437.        "success" the original transaction was successfully processed.
  2438.        If request was TQ.2, cancellation is not performed.
  2439.        "failure" the original transaction was not successfully processed.
  2440.         If request was TQ.2, cancellation is not performed (however,
  2441.        there is nothing to cancel, so it's all the same to the customer
  2442.        app).
  2443.        "pending" the original transaction is still being processed and
  2444.        final disposition is not known.
  2445.    "canceled" the original transaction has been canceled by the server.
  2446.        Later arrival of the original transaction will not be processed,
  2447.        but will be returned with a "failure-canceled" returned.
  2448.    server-date-1: server-date field from original transaction or
  2449.        omitted if original transaction is not present in the server"
  2450.    date-1: date field from original transaction or omitted if original
  2451.        transaction is not present in the server"
  2452.    type-1: type field from original transaction or omitted if original
  2453.        transaction is not present in the server"
  2454.  
  2455.  
  2456. 4.5.6 UNK1 - unknown-error
  2457.  
  2458.    Description: This is the response sent when the request is so
  2459.        bad off you can't determine what type it is or the type is
  2460.        unknown to you.  Sent from Merchant to Client or from Server
  2461.        to Merchant or from Server to Client.
  2462.  
  2463.  
  2464.  
  2465.  
  2466. Eastlake, et al              Informational                     [Page 44]
  2467.  
  2468. RFC 1898                 CyberCash Version 0.8             February 1996
  2469.  
  2470.  
  2471.    #####################################################################
  2472.    Sender: MerchantApp or CyberServer
  2473.    Receiver: CyberApp or MerchantApp
  2474.    #####################################################################
  2475.    Sample Message:
  2476.  
  2477.    $$-CyberCash-0.8-$$
  2478.    type: unknown-error
  2479.    unknown-error-message:
  2480.        Text message of error condition to display to user.  (CyberCash
  2481.        wrapper not found, wrapper integrity check fails, unknown protocol
  2482.        version specified, unknown type specified, etc.)
  2483.    {
  2484.    server-date: 19950121100506.nnn  [if sent by server]
  2485.    }
  2486.        or
  2487.    {
  2488.    merchant-date: 19950121100506.nnn  [if sent by merchant]
  2489.    }
  2490.    x-id: mycybercashID
  2491.    x-transaction: 123123213
  2492.    x-date: 19950121100505.nnn
  2493.    x-cyberkey: CC1001
  2494.    x-opaque:
  2495.     2DqiOQfGRZjzddWpEZwGsJnoTsp9Yiri8DE9cPUMPsJ7lTFuE4XHi4QfN2cAipDB2G/G
  2496.     9hr7Hj4u4xfMky7nPvJurClZejkI8eNp8iXLtrfS4DhR4yCFQjCiKk0dh83p+DDsFVV7
  2497.     TI3Du2B15sQS+SdaoPwkfVDnJv4Y+b7vu2cN7bG7exCkBapBcJZbReNaWX5sf+U8ypfw
  2498.     5V6QdMOzNXpef3z+cTTWfGOtmn9T1Pwo1Yi9ObyIf/wiK+IPb+bBZ9UwLZSB+qVMfJmX
  2499.     GnHXO3AnA/PD+jKYCtsm2Gxv2WB3CuezOyzPtORuqLp5ubgnLBF9aBBjxwLdbn+cp5sm
  2500.     lw51IHbmo1Jj7H6wyNnRpEjy4tM73jcosBfGeQDHxgyH1uaiFNr2D+WvmuYo7eun2dsy
  2501.     Wve2O/FwicWHvkg5aDPsgOjzetsn1JCNZzbW
  2502.    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$
  2503.  
  2504.    #####################################################################
  2505.    Opaque Key: see explanation
  2506.  
  2507.    #####################################################################
  2508.    Opaque Section Contents: see explanation
  2509.  
  2510.    #####################################################################
  2511.    Signature is of the following fields: see explanation
  2512.  
  2513.    #####################################################################
  2514.    Explanation:
  2515.    This message is sent as a response when you can't find or understand
  2516.        even the type of a message to you.  It will always have type and
  2517.        unknown-error-message fields at the beginning.  Any fields from
  2518.        the request that are parseable are simply echoed back in the UNK1
  2519.  
  2520.  
  2521.  
  2522. Eastlake, et al              Informational                     [Page 45]
  2523.  
  2524. RFC 1898                 CyberCash Version 0.8             February 1996
  2525.  
  2526.  
  2527.        message with "x-" prefixed to it.  Thus, if an x-opaque appears,
  2528.        it was whatever the opaque was in the original request, etc.  If
  2529.        you can decrypt the opaque section, you don't want to put the
  2530.        results here in the clear!
  2531.    {}'s in the first column are to group alternatives only and do not
  2532.        appear in the message.
  2533.    Since the customer originates exchanges with merchant and server
  2534.        and merchant originates exchanges with server, this message
  2535.        will only be emitted from the merchant to the customer or the
  2536.        server to the customer or merchant. It should generally just
  2537.        be logged for debugging purposes.
  2538.    You may need to watch out for denial of service via forged or
  2539.        replayed UNK1 messages.
  2540.  
  2541.  
  2542. 4.5.7 DL1 - diagnostic-log
  2543.  
  2544.    Description: Client diagnostic log of bad message from either
  2545.        merchant or server.
  2546.  
  2547.    #####################################################################
  2548.    Sender: CyberApp
  2549.    Receiver: CyberServer
  2550.    #####################################################################
  2551.    Sample Message:
  2552.  
  2553.    $$-CyberCash-0.8-$$
  2554.    id: MyCyberCashID
  2555.    date: 19950121100505.nnn
  2556.    transaction: 1234
  2557.    cyberkey: CC1001
  2558.    opaque:
  2559.     2DqiOQfGRZjzddWpEZwGsJnoTsp9Yiri8DE9cPUMPsJ7lTFuE4XHi4QfN2cAipDB2G/G
  2560.     9hr7Hj4u4xfMky7nPvJurClZejkI8eNp8iXLtrfS4DhR4yCFQjCiKk0dh83p+DDsFVV7
  2561.     TI3Du2B15sQS+SdaoPwkfVDnJv4Y+b7vu2cN7bG7exCkBapBcJZbReNaWX5sf+U8ypfw
  2562.     5V6QdMOzNXpef3z+cTTWfGOtmn9T1Pwo1Yi9ObyIf/wiK+IPb+bBZ9UwLZSB+qVMfJmX
  2563.     GnHXO3AnA/PD+jKYCtsm2Gxv2WB3CuezOyzPtORuqLp5ubgnLBF9aBBjxwLdbn+cp5sm
  2564.     lw51IHbmo1Jj7H6wyNnRpEjy4tM73jcosBfGeQDHxgyH1uaiFNr2D+WvmuYo7eun2dsy
  2565.     Wve2O/FwicWHvkg5aDPsgOjzetsn1JCNZzbW
  2566.    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$
  2567.  
  2568.    #####################################################################
  2569.    Opaque Key: generated from CyberCash encryption key identified in
  2570.        CyberKey
  2571.  
  2572.    #####################################################################
  2573.    Opaque Section Contents:
  2574.  
  2575.  
  2576.  
  2577.  
  2578. Eastlake, et al              Informational                     [Page 46]
  2579.  
  2580. RFC 1898                 CyberCash Version 0.8             February 1996
  2581.  
  2582.  
  2583.    type: diagnostic-log
  2584.    message: incorrect order-id
  2585.    swversion: 0.8win
  2586.  
  2587.    x-type: original-message-type
  2588.    x-transaction: original-transaction-number
  2589.    x-opaque: [if can't decrypt]
  2590.     9/eFiJK5tLizsoeSmpW7uLS8/7iio7Wisfv38biio7uyufv3tfv35uH+7N3d9/exuKX3
  2591.     5+z3vuu4oqO7srnsvvz8/venoqO0v7al/7iio7WisYy+iv7s3ff3p6KjtL+2pf/wi7nw
  2592.  
  2593.    #####################################################################
  2594.    Explanation:
  2595.    Client application does not expect a response for this message. The
  2596.        decrypted original message will be in the opaque section unless
  2597.        decryption fails. If decryption fails then un-decrypted opaque
  2598.        in the original will be sent.
  2599.    This message will be sent to a different script or socket or host
  2600.        than normal messages so that it will just be absorbed and never
  2601.        generate an UNK1 response or anything, even if this message
  2602.        itself is screwed up.
  2603.  
  2604.  
  2605. 4.5.8 DL2 - merchant-diagnostic-log
  2606.  
  2607.    Description: Merchant diagnostic log of bad message from  server.
  2608.  
  2609.    #####################################################################
  2610.    Sender: CyberMerchant
  2611.    Receiver: CyberServer
  2612.    #####################################################################
  2613.    Sample Message:
  2614.  
  2615.    $$-CyberCash-0.8-$$
  2616.    merchant-ccid: MyCyberCashID
  2617.    merchant-transaction: 1234
  2618.    merchant-date: 19950121100505.nnn
  2619.    merchant-cyberkey: CC1001
  2620.    merchant-opaque:
  2621.     2DqiOQfGRZjzddWpEZwGsJnoTsp9Yiri8DE9cPUMPsJ7lTFuE4XHi4QfN2cAipDB2G/G
  2622.     9hr7Hj4u4xfMky7nPvJurClZejkI8eNp8iXLtrfS4DhR4yCFQjCiKk0dh83p+DDsFVV7
  2623.     TI3Du2B15sQS+SdaoPwkfVDnJv4Y+b7vu2cN7bG7exCkBapBcJZbReNaWX5sf+U8ypfw
  2624.     5V6QdMOzNXpef3z+cTTWfGOtmn9T1Pwo1Yi9ObyIf/wiK+IPb+bBZ9UwLZSB+qVMfJmX
  2625.     GnHXO3AnA/PD+jKYCtsm2Gxv2WB3CuezOyzPtORuqLp5ubgnLBF9aBBjxwLdbn+cp5sm
  2626.     lw51IHbmo1Jj7H6wyNnRpEjy4tM73jcosBfGeQDHxgyH1uaiFNr2D+WvmuYo7eun2dsy
  2627.     Wve2O/FwicWHvkg5aDPsgOjzetsn1JCNZzbW
  2628.    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$
  2629.  
  2630.    #####################################################################
  2631.  
  2632.  
  2633.  
  2634. Eastlake, et al              Informational                     [Page 47]
  2635.  
  2636. RFC 1898                 CyberCash Version 0.8             February 1996
  2637.  
  2638.  
  2639.    Opaque Key: generated from CyberCash encryption key identified in
  2640.        CyberKey
  2641.  
  2642.    #####################################################################
  2643.    Opaque Section Contents:
  2644.  
  2645.    type: merchant-diagnostic-log
  2646.    server-date:  19950121100505.nnn  [optional]
  2647.    message: incorrect order-id
  2648.  
  2649.    x-type: original-message-type
  2650.    x-transaction: original-transaction-number
  2651.    x-opaque: [if can't decrypt]
  2652.     9/eFiJK5tLizsoeSmpW7uLS8/7iio7Wisfv38biio7uyufv3tfv35uH+7N3d9/exuKX3
  2653.     5+z3vuu4oqO7srnsvvz8/venoqO0v7al/7iio7WisYy+iv7s3ff3p6KjtL+2pf/wi7nw
  2654.  
  2655.    #####################################################################
  2656.    Explanation:
  2657.    Merchant application does not expect a response for this message. The
  2658.        decrypted original message will be in the opaque section unless
  2659.        decryption fails. If decryption fails then un-decrypted message
  2660.        will be sent.
  2661.    This message will be sent to a different script or socket or host
  2662.        than normal messages so that it will just be absorbed and never
  2663.        generate an UNK1 response or anything even if this message
  2664.        itself is screwed up.
  2665.  
  2666.  
  2667. 4.6 Table of Messages Described
  2668.  
  2669.    The following 31 messages are described in this document.
  2670.  
  2671.    C = Customer App, M = Merchant App, S = CyberCash Server
  2672.  
  2673.    FLOW  SECTION  NAME
  2674.  
  2675.    C->S   4.2.1   BC.1 bind-credit-card
  2676.    S->C   4.2.2   BC.4 bind-credit-card-response
  2677.  
  2678.    C->M   4.3.2   CH.1 credit-card-payment
  2679.    M->C   4.3.3   CH.2 credit-card-response
  2680.  
  2681.    M->S   4.4.8   CD.1 card-data-request
  2682.    S->M   4.4.9   CD.2 card-data-response
  2683.  
  2684.    M->S   4.4.1   CM.1 auth-only
  2685.    M->S   4.4.2   CM.2 auth-capture
  2686.    M->S   4.4.3   CM.3 post-auth-capture
  2687.  
  2688.  
  2689.  
  2690. Eastlake, et al              Informational                     [Page 48]
  2691.  
  2692. RFC 1898                 CyberCash Version 0.8             February 1996
  2693.  
  2694.  
  2695.    M->S   4.4.4   CM.4 void
  2696.    M->S   4.4.5   CM.5 return
  2697.    S->M   4.4.6   CM.6 charge-action-response
  2698.  
  2699.    C->S   4.5.7   DL.1 diagnostic-log
  2700.    M->S   4.5.7   DL.2 merchant-diagnostic-log
  2701.  
  2702.    C->S   4.1.3   GA.1 get-application
  2703.    S->C   4.1.4   GA.2 get-application-response
  2704.  
  2705.    M->S   4.4.7   MM.1 merchant-auth-only
  2706.    M->S   4.4.7   MM.2 merchant-auth-capture
  2707.    M->S   4.4.7   MM.3 merchant-post-auth-capture
  2708.    M->S   4.4.7   MM.4 merchant-void
  2709.    M->S   4.4.7   MM.5 merchant-return
  2710.    S->M   4.4.7   MM.6 merchant-charge-action-response
  2711.  
  2712.    C->S   4.5.1   P.1 ping
  2713.    S->C   4.5.2   P.2 ping-response
  2714.  
  2715.    M->C   4.3.1   PR.1 payment-request
  2716.  
  2717.    C->S   4.1.1   R.1 registration
  2718.    S->C   4.1.2   R.2 registration-response
  2719.    C->S   4.5.3   TQ.1 transaction-query
  2720.    C->S   4.5.4   TQ.2 transaction-cancel
  2721.    S->C   4.5.5   TQ.3 transaction-response
  2722.  
  2723.    S->C, S->M, M->C
  2724.           4.5.6   UNK.1 unknown-error
  2725.  
  2726. 5. Future Development
  2727.  
  2728.    CyberCash is extending the facilities available through the CyberCash
  2729.    system.  We are committed to implementing a full cash system,
  2730.    including efficient transfer of small amounts of money, the extension
  2731.    of the credit card system to handle terminal capture and clearances,
  2732.    and other improvements.
  2733.  
  2734. 5.1 The Credit Card Authorization/Clearance Process
  2735.  
  2736.    There are six steps in credit card processing as listed below.  The
  2737.    first four are always involved if a transacation is completed.  The
  2738.    fifth and sixth are optional.
  2739.  
  2740.    (1) authorization: merchant contacts their acquiring back which
  2741.        normally contacts the card issung bank and returns to the
  2742.        merchant an approval/guarantee or a disapproval.  This
  2743.  
  2744.  
  2745.  
  2746. Eastlake, et al              Informational                     [Page 49]
  2747.  
  2748. RFC 1898                 CyberCash Version 0.8             February 1996
  2749.  
  2750.  
  2751.        temporarily decreases the available credit on the card.
  2752.    (2) capture: the charge information for a purchase is entered by
  2753.        the merchant into a batch.
  2754.    (3) clearance: a batch of items is processed.  This actually causes
  2755.        the items in the batch to appear on credit card statements as
  2756.        sent by the issuing bank to its carholders.
  2757.    (4) settlement: the actual interbank transfer of net funds.
  2758.    (5) void: the merchant undoes step 2 (or 6) and causes a charge (or
  2759.        credit) to be removed from a batch.  Must be done before the
  2760.        batch is processed.
  2761.    (6) credit: the merchant causes a "negative charge" or credit to be
  2762.        entered into a batch.  This will appear on the cardholders
  2763.        statement.
  2764.  
  2765.    The fourth step, settlement, is entirely within the banking community
  2766.    and does not concern us here.  CyberCash 0.8 provides messages to do
  2767.    1, 1&2, 2, 5, and 6.  This is adequate for credit card processor
  2768.    systems where the batch is accumulated at the bank or between the
  2769.    bank and the merchant.  CyberCash 0.8 supports such "host capture"
  2770.    systems.  Other credit card processor systems require the merchant to
  2771.    accumulate the batch.  Such systems are frequently referred to as
  2772.    "terminal capture".  This makes actions 2, 5, and 6 internal to the
  2773.    merchant but requires messages to perform action 3.  Such batch
  2774.    clearance messages will be included in future versions of the
  2775.    CyberCash merchant and server software.
  2776.  
  2777. 5.2 Lessons Learned
  2778.  
  2779.    The continuing rapid development of the CyberCash system is an
  2780.    interesting experience.  The system must deal with many existing
  2781.    browsers and legacy banking systems.  Existing credit card processors
  2782.    that convey transactions to acquiring banks have complex and varied
  2783.    interfaces.  The sophistication of security attacks on the Internet
  2784.    is growing rapidly.
  2785.  
  2786.    In the face of such a rapidly changing environment, it was essential
  2787.    to adopt a general message framework so that messages and fields
  2788.    could be added as they were found necessary.  Any attempt to reduce
  2789.    the system to a small number of perfectly opimized messages in
  2790.    advance would have doomed the system to failure.  (As of mid-October
  2791.    1995, the total number of CyberCash messages defined, including those
  2792.    planned for cash and microcash, enhancements to the credit card
  2793.    system, and some old messages being phased out in favor of improved
  2794.    replacements, is just over a hundred.)
  2795.  
  2796.    Flexible operational and error handing facilities are also, as usual,
  2797.    the bulk of the system.  Version numbering and tracking has proved to
  2798.    be quite important and merchant versioning is being added.
  2799.  
  2800.  
  2801.  
  2802. Eastlake, et al              Informational                     [Page 50]
  2803.  
  2804. RFC 1898                 CyberCash Version 0.8             February 1996
  2805.  
  2806.  
  2807.    Use of text for messages has proven very beneficial.  This makes it
  2808.    possible to easily deal with messages using common everyday tools
  2809.    such as text editors and spead sheets.  Use of binary TLV (type,
  2810.    length, value) encoding or the like is certainly possible but imposes
  2811.    a significantly higher level of complexity on every tool that has to
  2812.    deal with the messages.
  2813.  
  2814.    Encryption and decryption impose some difficulties in development.
  2815.    Any confusion about decryption keys or algorithms will render
  2816.    encrypted material meaningless and tools are needed to provide
  2817.    decyrption for debugging outside of normal program operation.  But
  2818.    this pales compared with the stringencies imposed by signatures.  All
  2819.    parts of the system must have absolutely identical ideas as to the
  2820.    exact bit patterns to be hashed or signed and their exact order.
  2821.    Seemingly trivial differences in capitalization, punctuation,
  2822.    framing, order, or the like, in addition to any disagreement about
  2823.    keys or algorithms, will lead to frustrating failures of signatures
  2824.    to match.  Passing signatures through an intermediate system and
  2825.    checking them at a third system, as is done when a customer's
  2826.    signature is passed through a merchant and checked at the CyberCash
  2827.    server, compounds the problem.
  2828.  
  2829. 6. Security Considerations
  2830.  
  2831.    The CyberCash Version 0.8 Credit Card system provides substantial
  2832.    protection to payment messages as described above in sections 1.2,
  2833.    2.2.4, and 2.2.5.  However, it provides no privacy to the shopping
  2834.    interaction which is essentially outside of its purview.  It also
  2835.    provides no protection against dishonest merchants other than those
  2836.    normally available with credit card purchases.  Care must be taken to
  2837.    avoid loss of control of the machines on which parts of this system
  2838.    runs or security may be compromised.
  2839.  
  2840.    Current credit card dispute  resolution  systems  require  deliberate
  2841.    bypasses be implemented for some of the security normally established
  2842.    by CyberCash as described in section 3.4.
  2843.  
  2844. References
  2845.  
  2846.    [ISO 4217] - Codes for the representation of currencies and funds
  2847.  
  2848.    [ISO 8583] - Financial transaction card originated messages -
  2849.    Interchange message specifications, 1993-12-15.
  2850.  
  2851.    [RFC 822] - Crocker, D., "Standard for the format of ARPA Internet
  2852.    text messages", STD 11, RFC 822, UDEL, August 1982.
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858. Eastlake, et al              Informational                     [Page 51]
  2859.  
  2860. RFC 1898                 CyberCash Version 0.8             February 1996
  2861.  
  2862.  
  2863.    [RFC 1521] - Borenstein, N., and N. Freed, "MIME (Multipurpose
  2864.    Internet Mail Extensions) Part One: Mechanisms for Specifying and
  2865.    Describing the Format of Internet Message Bodies", RFC 1521,
  2866.    Bellcore, Innosoft, September 1993.
  2867.  
  2868.    [RFC 1766] - Alvestrand, H., "Tags for the Identification of
  2869.    Languages", UNINETT, March 1995.
  2870.  
  2871. Authors' Addresses
  2872.  
  2873.    Donald E. Eastlake 3rd
  2874.    CyberCash, Inc.
  2875.    318 Acton Street
  2876.    Carlisle, MA 01741 USA
  2877.  
  2878.    Phone:   +1 508 287 4877
  2879.    EMail:   dee@cybercash.com
  2880.  
  2881.  
  2882.    Brian Boesch
  2883.    CyberCash, Inc.
  2884.    2100 Reston Parkway, Suite 430
  2885.    Reston, VA 22091 USA
  2886.  
  2887.    Phone:   +1 703-620-4200
  2888.    EMail:   boesch@cybercash.com
  2889.  
  2890.  
  2891.    Steve Crocker
  2892.    CyberCash, Inc.
  2893.    2100 Reston Parkway, Suite 430
  2894.    Reston, VA 22091 USA
  2895.  
  2896.    Phone:   +1 703-620-4200
  2897.    EMail:   crocker@cybercash.com
  2898.  
  2899.  
  2900.    Magdalena Yesil
  2901.    CyberCash, Inc.
  2902.    555 Twin Dolphin Drive, Suite 570
  2903.    Redwood City, CA 94065 USA
  2904.  
  2905.    Phone:   +1 415-594-0800
  2906.    EMail:   magdalen@cybercash.com
  2907.  
  2908.  
  2909.  
  2910.  
  2911.  
  2912.  
  2913.  
  2914. Eastlake, et al              Informational                     [Page 52]
  2915.  
  2916.