home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc1898.txt < prev    next >
Text File  |  1996-05-07  |  115KB  |  1,164 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                    D. Eastlake 3rd Request for Comments: 1898                                     CyberCash Category: Informational                                        B. Boesch                                                                CyberCash                                                               S. Crocker                                                                CyberCash                                                                 M. Yesil                                                                CyberCash                                                            February 1996 
  8.  
  9.                 CyberCash Credit Card Protocol Version 0.8 
  10.  
  11. Status of this Memo 
  12.  
  13.    This memo provides information for the Internet community.  This memo    does not specify an Internet standard of any kind.  Distribution of    this memo is unlimited. 
  14.  
  15. Abstract 
  16.  
  17.    CyberCash is developing a general payments system for use over the    Internet.  The structure and communications protocols of version 0.8    are described.  This version includes credit card payments only.    Additional capabilities are planned for future versions. 
  18.  
  19.    This document covers only the current CyberCash system which is one    of the few operational systems in the rapidly evolving area of    Internet payments. CyberCash is committed to the further development    of its system and to cooperation with the Internet Engineering Task    Force and other standards organizations. 
  20.  
  21. Acknowledgements 
  22.  
  23.    The significant contributions of the following persons (in alphabetic    order) to this protocol are gratefully acknowledged: 
  24.  
  25.         Bruce Binder, Judith Grass, Alden Hart, Steve Kiser, Steve         Klebe, Garry Knox, Tom Lee, Bob Lindenberg, Jim Lum, Bill         Melton, Denise Paredes, Prasad Chintamaneni, Fred Silverman,         Bruce Wilson, Garland Wong, Wei Wu, Mark Zalewski. 
  26.  
  27.    In addition, Jeff Stapleton and Peter Wagner made useful comments on    the first version of this memo. 
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35. Eastlake, et al              Informational                      [Page 1] 
  36.  RFC 1898                 CyberCash Version 0.8             February 1996 
  37.  
  38.  History 
  39.  
  40.    For historic purposes, it should be noted that this document was    first posted as an Internet draft, and thus made publicly available,    on 8 July 1995. 
  41.  
  42. Table of Contents 
  43.  
  44.       1. Overall System..........................................3       1.1 System Overview........................................3       1.2 Security Approach......................................5       1.2.1 Authentication and Persona Identity..................5       1.2.2 Privacy..............................................6       1.3 Credit Card Operation..................................6       2. General Message Wrapper Format..........................7       2.1 Message Format.........................................7       2.2 Details of Format......................................8       2.3 Body Parts.............................................8       2.4 Transparent Part.......................................9       2.5 Opaque Part...........................................10       2.6 Trailer...............................................10       2.7 Example Messages......................................11       3. Signatures and Hashes..................................12       3.1 Digital Signatures....................................12       3.2 Hash Codes............................................13       4. Specific Message Formats...............................13       4.1 Persona Registration and Application Retrieval........14       4.1.1 R1 - registration...................................14       4.1.2 R2 - registration-response..........................15       4.1.3 GA1 - get-application...............................16       4.1.4 GA2 - get-application-response......................17       4.2 Binding Credit Cards..................................18       4.2.1 BC1 - bind-credit-card..............................18       4.2.2 BC4 - bind-credit-card-response.....................20       4.3 Customer Credit Card Purchasing Messages..............21       4.3.1 PR1 - payment-request...............................21       4.3.2 CH1 - credit-card-payment...........................23       4.3.3 CH2 - charge-card-response..........................24       4.4 Merchant Credit Card Purchasing Messages..............25       4.4.1 CM1 - auth-only.....................................26       4.4.2 CM2 - auth-capture..................................28       3.4.3 CM3 - post-auth-capture.............................28       4.4.4 CM4 - void..........................................30       4.4.5 CM5 - return........................................32       4.4.6 CM6 - charge-action-response........................32       4.4.7 The MM* Message Series..............................34       4.4.8 CD1 - card-data-request.............................35       4.4.9 CD2 - card-data-response............................37 
  45.  
  46.  
  47.  
  48. Eastlake, et al              Informational                      [Page 2] 
  49.  RFC 1898                 CyberCash Version 0.8             February 1996 
  50.  
  51.        4.5 Utility and Error Messges.............................38       4.5.1 P1 - ping...........................................39       4.5.2 P2 - ping-response..................................39       4.5.3 TQ1 - transaction-query.............................40       4.5.4 TQ2 - transaction-cancel............................41       4.5.5 TQ3 - transaction-response..........................42       4.5.6 UNK1 - unknown-error................................44       4.5.7 DL1 - diagnostic-log................................46       4.5.8 DL2 - merchant-diagnostic-log.......................47       4.6 Table of Messages Described...........................48       5. Future Development.....................................49       5.1 The Credit Card Authorization/Clearance Process.......49       5.2 Lessons Learned.......................................50       6. Security Considerations................................51       References................................................51       Authors' Addresses........................................52 
  52.  
  53. 1. Overall System 
  54.  
  55.    CyberCash, Inc. of Reston, Virginia was founded in August of 1994 to    partner with financial institutions and providers of goods and    services to deliver a safe, convenient and inexpensive system for    making payments on the Internet.  The CyberCash approach is based on    establishing a trusted link between the new world of cyberspace and    the traditional banking world.  CyberCash serves as a conduit through    which payments can be transported quickly, easily and safely between    buyers, sellers and their banks.  Significantly - much as it is the    real world of commerce - the buyer and seller need not have any prior    existing relationship. 
  56.  
  57.    As a neutral third party whose sole concern is ensuring the delivery    of payments from one party to another, CyberCash is the linchpin in    delivering spontaneous consumer electronic commerce on the Internet. 
  58.  
  59. 1.1 System Overview 
  60.  
  61.    The CyberCash system will provide several separate payment services    on the Internet including credit card and electronic cash.  To gain    access to CyberCash services, consumers need only a personal computer    with a network connection.  Similarly, merchants and banks need make    only minimal changes to their current operating procedures in order    to process CyberCash transactions, enabling them to more quickly    integrate safe on-line payments into their existing service    offerings.  Communications with banks are over existing financial    communications networks. 
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  Eastlake, et al              Informational                      [Page 3] 
  68.  RFC 1898                 CyberCash Version 0.8             February 1996 
  69.  
  70.     To get started, consumers download free software from CyberCash on    the Internet.  This software establishes the electronic link between    consumers, merchants and their banks as well as between individuals.    To make gaining access to the CyberCash system even easier, CyberCash    "PAY" buttons may be incorporated into popular on-line service and    software graphical user interfaces so that consumers using these    products can easily enter the CyberCash system when they are ready to    make payments for goods and services.  Consumers need not have any    prior relationship with CyberCash to use the CyberCash system.  They    can easily set up their CyberCash persona on-line. 
  71.  
  72.    Transactions are automated in that once the consumer enters    appropriate information into his own computer, no manual steps are    required to process authorization or clearance transactions through    the entire system.  The consumer need only initiate payment for each    transaction by exercising the pay option on an electronic form.    Transactions are safe in that they are cryptographicly protected from    tampering and modification by eavesdroppers. And they are private in    that information about the consumer not relevant to the transaction    is not visible to the merchant. 
  73.  
  74.       +------------+            +------------+       |            |            |            |       |  Internet  |            |  Internet  |       |  customer  +------------+  merchant  +       |            |            |  /         |       +------------+            +------------+                                 /                                /                    +------------|-+                    | CyberCash  | |                    |     server | |                    +-----+------|-+                          |      |                          |      |           +--------------+------|---------+           | +--------+       +--+-------+ |           | | card   +-------+ / charge | |           | | issuer |       | acquirer | |           | +--------+       +----------+ |           |                               |           |      The Banking System       |           +-------------------------------+ 
  75.  
  76.                    SYSTEM OVERVIEW 
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  Eastlake, et al              Informational                      [Page 4] 
  83.  RFC 1898                 CyberCash Version 0.8             February 1996 
  84.  
  85.  1.2 Security Approach 
  86.  
  87.    The CyberCash system pays special attention to security issues.  It    uses encryption technology from the world's leading sources of    security technology and is committed over time to employing new    security technologies as they emerge. 
  88.  
  89. 1.2.1 Authentication and Persona Identity 
  90.  
  91.    Authentication of messages is based on Public Key encryption as    developed by RSA.  The CyberCash Server maintains records of the    public key associated with every customer and merchant persona.  It    is thus able to authenticate any information digitally signed by a    customer or merchant regardless of the path the data followed on its    way to the server.  The corresponding private key, which is needed to    create such digital signatures, will be held by the customer or    merchant and never revealed to other parties.  In customer software,    the private key is only stored in an encrypted form protected by a    passphrase. 
  92.  
  93.    While the true CyberCash identity of a customer or merchant is    recognized by their public/private key pair, such keys are too    cumbersome (over 100 hex digits) to be remembered or typed by people.    So, the user interface utilizes short alphanumeric ID's selected by    the user or merchant for purposes of specifying a persona.  CyberCash    adds check digits to the requested ID to minimize the chance of    accidental wrong persona selection.  Persona IDUs are essentially    public information.  Possession of an persona ID without the    corresponding private key is of no benefit in the current system. 
  94.  
  95.    Individuals or organizations may establish one or more CyberCash    customer personas directly with CyberCash.  Thus, an individual may    have several unrelated CyberCash personas or share a CyberCash    persona with other individuals.  This approach provides a degree of    privacy consistent with Internet presence generally and with cash    transactions specifically.  However, persona holders who wish to use    a credit card for purchases in conjunction with their CyberCash    persona must first meet such on-line identification criteria as the    card issuing organization requires. 
  96.  
  97.    Control over a CyberCash persona is normally available only to an    entity that possesses the private key for that persona.  However, a    special provision is made to associate an emergency close out    passphrase with a CyberCash persona.  On receipt of the emergency    close out passphrase, even if received over insecure channels such as    a telephone call or ordinary email, CyberCash will suspend activity    for the CyberCash persona.  This emergency close-out passphrase can    be stored separately from and with somewhat less security than the 
  98.  
  99.  
  100.  
  101. Eastlake, et al              Informational                      [Page 5] 
  102.  RFC 1898                 CyberCash Version 0.8             February 1996 
  103.  
  104.     private key for the persona since the emergency passphrase can not be    used to divert funds to others. This provides some protection against    loss or misappropriation of the private key or the passphrase under    which the private key in kept encrypted.  In the cash system, the    emergency close-out passpharase may also transfer the persona balance    to a designated bank account. 
  105.  
  106. 1.2.2 Privacy 
  107.  
  108.    Encryption of messages use the Digital Encryption Standard (DES),    commonly used in electronic payment systems today.  It is planned to    superencrypt (i.e., encrypted more than one level) particularly    sensitive information, such as PIN numbers, and handle them so that    the plain text readable version never exists in the CyberCash system    except momentarily, within special purpose secure cryptographic    hardware that is part of the server, before being re-encrypted under    another key. 
  109.  
  110.    The processing of card charges through the CyberCash system is    organized so that the merchant never learns the customerUs credit    card number unless the merchantUs bank chooses to release this    information to the merchant or it is required for dispute resolution.    In addition, the server maintains no permanent storage of card    numbers.  They are only present while a transaction involving that    card is in progress.  These practices greatly reduce the chance of    card number misappropriation. 
  111.  
  112. 1.3 Credit Card Operation 
  113.  
  114.    Using the CyberCash system for credit card transactions, once price    has been negotiated and the consumer is ready to purchase, the    consumer simply clicks on the CyberCash "PAY" button displayed on the    merchant interface, which invokes the merchant CyberCash software.    The merchant sends the consumer an on-line invoice that includes    relevant purchase information which appears on the customerUs screen.    (See PR1 message.)  The consumer adds his credit card number and    other information by simply selecting from a list of credit cards he    has registered to his CyberCash persona.  All this information is    digitally signed by the customer's CyberCash software, encrypted, and    passed, along with a hash code of the invoice as seen by the    customer, to the merchant.  (See CH1 message.) 
  115.  
  116.    Upon receipt, the merchant adds additional authorization information    which is then encrypted, electronically signed by the merchant, and    sent to the CyberCash Server.  (See CM1 & CM2 messages.)  The    CyberCash Server can authenticate all the signatures and be sure that    the customer and merchant agree on the invoice and charge amount.    The CyberCash Server then forwards the relevant information to the 
  117.  
  118.  
  119.  
  120. Eastlake, et al              Informational                      [Page 6] 
  121.  RFC 1898                 CyberCash Version 0.8             February 1996 
  122.  
  123.     acquiring bank along with a request on behalf of the merchant for a    specific banking operation such as charge authorization.  The bank    decrypts and then processes the received data as it would normally    process a credit card transaction.  The bank's response is returned    to the CyberCash Server which returns an electronic receipt to the    merchant (see CM6 message) part of which the merchant is expected to    forward to the customer (see CH2 message).  The transaction is    complete. 
  124.  
  125. 2. General Message Wrapper Format 
  126.  
  127.    Version 0.8 of the external format for the encoding of CyberCash    messages is described below.  CyberCash messages are stylized    documents for the transmission of financial data over the Internet. 
  128.  
  129.    While there are numerous schemes for sending information over the    Internet (HTTP, SMTP, and others), each is attached to a specific    transmission mechanism.  Because CyberCash messages will need to    travel over each of these media (as well as others) a transmission    independent mechanism is needed. 
  130.  
  131. 2.1 Message Format 
  132.  
  133.    CyberCash messages consist of the following components: 
  134.  
  135.    1. Header - defines the start of the CyberCash message and includes       version information. 
  136.  
  137.    2. Transparent Part - contains information that is not private. 
  138.  
  139.    3. Opaque Part(s) - contains the financial information in the       message and is both privacy protected as well as tamper protected.       An opaque part is not present in some messages. When present, the       opaque part usually provides tamper protection for the transparent       part. 
  140.  
  141.    4. Trailer - defines the end of the CyberCash message and includes a       check value to enable the receiver to determine that the message       has arrived undamaged. Note: this check value is intended only to       detect accidental damage to the message, not deliberate tampering. 
  142.  
  143.       No null characters (zero value) or characters with the eighth bit       on are permitted inside a CyberCash message.  "Binary" quantities       that might have such byte values in them are encoded in base64 as       described in RFC 1521. 
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  Eastlake, et al              Informational                      [Page 7] 
  150.  RFC 1898                 CyberCash Version 0.8             February 1996 
  151.  
  152.  2.2 Details of Format 
  153.  
  154.    The header consists of a single line which looks approximately like    this 
  155.  
  156.         $$-CyberCash-0.8-$$ 
  157.  
  158.    or like this 
  159.  
  160.         $$-CyberCash-1.2.3-Extra-$$ 
  161.  
  162.    It includes a number of fields separated with the minus character "-" 
  163.  
  164.    1. "$$" - the literal string with the initial $ in column 1. 
  165.  
  166.    2. "CyberCash" - the literal string (case insensitive) 
  167.  
  168.    3. x.y or x.y.z - the version number of the message format.  x is the    primary version number.  y is a subversion number.  z, if present, is    a subsubversion number. 
  169.  
  170.    4. "Extra" - an optional additional alphanumeric string. 
  171.  
  172.    5.  "$$" - the literal string 
  173.  
  174.    Version numbers start at 0.7 and count up.  The ".z" is omitted when    z is zero.  0.7 and 0.8 are the test and initial shipped version of    the credit card system. 0.9 and 1.0 are expected to also incorporate    the test and initial shipped versions of the cash facilities as well    as improvements to the credit card system. 
  175.  
  176.    The "Extra" string is used within secure environments so that one    subcomponent can scribble a note to another with minimum overhead.    For example, a server firewall could put "HTTP" or "SMTP" here before    forwarding the message to the core server within the firewall    perimeter. 
  177.  
  178. 2.3 Body Parts 
  179.  
  180.    The body parts of the message (both transparent and opaque) consist    of attribute value pairs in formats that are reminiscent of the    standard electronic mail header (RFC822) format. However, there are    some differences. 
  181.  
  182.    Attribute names start with and are composed predominantly of letters    and internal hyphens except that they sometimes end with a hyphen    followed by a number.  Such a trailing number is used when there is    logically an indexed vector of values.  Attribute names are 
  183.  
  184.  
  185.  
  186. Eastlake, et al              Informational                      [Page 8] 
  187.  RFC 1898                 CyberCash Version 0.8             February 1996 
  188.  
  189.     frequently referred to as labels. 
  190.  
  191.    If the label ends with a ":", then RFC822 processing is done.  While    the existence of trailing white space is significant, all leading    white space on continuation lines is stripped.  Such lines are    wrapped at 64 characters in length, excluding any line termination    character(s). 
  192.  
  193.    However, if the label is terminated with a ";", this indicates a    free-form field where new-line characters and any leading white    space, after the initial space that indicates a continuation line, is    significant.  Such lines should not be wrapped except that, to avoid    other processing problems, they are forcibly wrapped at 200    characters. 
  194.  
  195.    Blank lines are ignored and do not signify a change  to  a  different    mode of line handling. 
  196.  
  197.    Another way of looking at the above is as follows: after having found    an initial $$ start line, you can treat any following lines according    to the first character.  If it is alphanumeric, it is a new label    which should be terminated with a ":" or ";" and indicates a new    label-value pair.  If it is a white space character, it indicates the    continuation of the value for the preceding new label line.  (Exactly    how the continuation is processed depends on the label termination    character.)  If it is "$", it should be the end line for the message.    If it is #, it is a comment line and should be ignored.  Other    initial characters are undefined.  (As of this date, no software    sends CyberCash messages with # lines but they are convenient for    commenting messages stored in files.) 
  198.  
  199. 2.4 Transparent Part 
  200.  
  201.    The transparent part includes any clear-text data associated with the    financial transaction as well as information needed by CyberCash and    others to decrypt the opaque part(s).  It always includes a    transaction field which is the transaction number generated by the    requester and which is repeated in the response.  It always includes    a date field that is the local date and time at the requester and is    repeated in the response.  In all cases other than an initial    registration to establish a persona ID, it includes the requester's    persona ID. 
  202.  
  203.    On messages bound for the server, there is a "cyberkey:" field that    identifies which server public key was used to encrypt the session    key. 
  204.  
  205.  
  206.  
  207.  
  208.  
  209. Eastlake, et al              Informational                      [Page 9] 
  210.  RFC 1898                 CyberCash Version 0.8             February 1996 
  211.  
  212.  2.5 Opaque Part 
  213.  
  214.    The opaque part consists of a single block of characters encoded    using base64 encoding (see RFC 1521). The data in the opaque section    is always encrypted before encoding. 
  215.  
  216.    The label "opaque" or "merchant-opaque" precedes the opaque part    depending on whether the data was encrypted by the client or merchant    software. 
  217.  
  218.    On messages inbound to the server, the data to be opaqued is DES CBC    encrypted under a random transacton key and then that DES key is RSA    encrypted under one of the server's public keys.  The RSA encrypted    DES key appears as the first part of the base64 encoded field and is    not broken out as a separate value in the message.  The corresponding    outbound reply from the server can simply be DES encrypted under this    transaction key as there is enough plain text information to identify    the transaction and the customer or merchant will have remembered the    transaction key from the inbound message. 
  219.  
  220.    A signature is not generally necessary in the opaque part of a reply    message.  Knowledge of the transaction key is adequate    authentication.  In order for someone to forge the response, they    would have to know the server's private key to be able to get at the    transaction key.  It is assumed that if anyone tampered with the    response opaque part, the probability that it would decrypt to    something that would parse is insignificant.  (Just the fact that the    8th bit has to be off means a chance of 1 in 2**n where there are n    characters and that's ignoring the rest of the formatting.)  While    someone can tamper with the transparent part, this usually either has    no effect or means that the client won't find the transaction key, in    which case it's just a particular example of denial of service by    damaging a message. 
  221.  
  222. 2.6 Trailer 
  223.  
  224.    The trailer is intended to close the message and provide a definitive    and parseable end of the message. 
  225.  
  226.    The trailer consists of several fields separated by "-" as in header. 
  227.  
  228.    1. "$$" - literal string. 
  229.  
  230.    2. "CyberCash" - literal string (case insensitive). 
  231.  
  232.    3. "End" - literal string (case insensitive). 
  233.  
  234.    4. transmission checksum. 
  235.  
  236.  
  237.  
  238. Eastlake, et al              Informational                     [Page 10] 
  239.  RFC 1898                 CyberCash Version 0.8             February 1996 
  240.  
  241.     5.  "$$" - literal string. 
  242.  
  243.    The transmission checksum is the MD5 has of all printable characters    in the version number in the start line and those appearing after the    second $$ of the start line and before the first $$ of the trailer    line as transmitted.  Note that all white space is left out of this    hash, including any new-lines, spaces, tabs, carriage returns, etc.    The exact label terminators actually used (: or ;) are included as    would any # comment line.  Note that the optional "Extra" string in    the $ start line is not included.  The idea is to check correct    transmission while avoiding sensitivity to gateways or processing    that might change the line terminator sequence, convert tabs to    spaces, or the like. 
  244.  
  245. 2.7 Example Messages 
  246.  
  247.    Simple message from a client: 
  248.  
  249.    $$-CyberCash-0.8-$$    id: DONALD-69    transaction: 918273645    date: 199512250102    cyberkey:CC1001    opaque:     GpOJvDpLH62z+eZlbVkhZJXtTneZH32Qj4T4IwJqv6kjAeMRZw6nR4f0OhvbTFfPm+GG     aXmoxyUlwVnFkYcOyTbSOidqrwOjnAwLEVGJ/wa4ciKKI2PsNPA4sThpV2leFp2Vmkm4     elmZdS0Qe350g6OPrkC7TKpqQKHjzczRRytWbFvE+zSi44wMF/ngzmiVsUCW01FXc8T9     EB8KjHEzVSRfZDn+lP/c1nTLTwPrQ0DYiN1lGy9nwM1ImXifijHR19LZIHlRXy8=    $$-End-CyberCash-End-jkn38fD3+/DFDF3434mn10==-$$ 
  250.  
  251.     Message from a merchant: 
  252.  
  253.    $$-CyberCash-a.b.c-extra-$$    merchant-ccid: acme-69    merchant-date: 19951231115959    merchant-transaction: 987654321    label: value 
  254.  
  255.    labelx: multiple line       value...    # comment    # another comment line    label; text with a real      multi-line         format !    merchant-cyberkey: CC1001    merchant-opaque: 
  256.  
  257.  
  258.  
  259. Eastlake, et al              Informational                     [Page 11] 
  260.  RFC 1898                 CyberCash Version 0.8             February 1996 
  261.  
  262.      C1Q96lU7n9snKN5nv+1SWpDZumJPJY+QNXGAm3SPgB/dlXlTDHwYJ4HDWKZMat+VIJ8y     /iomz6/+LgX+Dn0smoAge7W+ESJ6d6Ge3kRAQKVCSpbOVLXF6E7mshlyXgQYmtwIVN2J     66fJMQpo31ErrdPVdtq6MufynN8rJyJtu8xSNolXlqIYNQy5G2I3XCc6D3UnSErPx1VJ     6cbwjLuIHHv58Nk+xxt/FyW7yAMwUb9YNcmOj//6Ru0NiOA9P/IiWczDe2mJRK1uqVpC     sDrWehG/UbFTPD26trlYRnnY    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$ 
  263.  
  264. 3. Signatures and Hashes 
  265.  
  266.    Inbound CyberCash request messages normally have a signature, as    described below, of all of the messages fields outside of the    signature.  This signature is transmitted inside the opaque part of    the message.  It enables the server to authenticate the source of the    message. 
  267.  
  268.    Messages from a merchant to a client initiating a purchase sequence    have fields signed by the merchant.  These fields and this signature    are included by the client in the opaque part of their card purchase    message to the merchant so that, when all is passed on to the server,    it can verify that the client saw the information the merchant    intended. 
  269.  
  270.    More information on CyberCash signatures and the hash codes they are    based on, is given below. 
  271.  
  272. 3.1 Digital Signatures 
  273.  
  274.    Digital signatures are a means of authenticating information.  In    CyberCash messages, they are calculated by first taking the hash of    the data to be authenticated, as described below, and then encoding    the hash using an RSA private key. 
  275.  
  276.    Anyone possessing the corresponding public key can then decrypt the    hash and compare it with the message hash.  If they match, then you    can be sure that the signature was generated by someone possessing    the private key which corresponded with the public key you used and    that the message was not tampered with. 
  277.  
  278.    In the CyberCash system, clients, merchants, and the server have    public-private key pairs.  By keeping the private key secret and    registering their public key with the server (for a merchant or    client) or publishing their public key or keys (for the server), they    can provide high quality authentication by signing parts of messages. 
  279.  
  280.    An RSA digital signature is approximately the size of the modulus    used.  For example, if that is 768 bits long, then the binary digital    signature would be 768 bits or 96 bytes long and its base 64 encoding    would be 128 bytes. 
  281.  
  282.  
  283.  
  284. Eastlake, et al              Informational                     [Page 12] 
  285.  RFC 1898                 CyberCash Version 0.8             February 1996 
  286.  
  287.  3.2 Hash Codes 
  288.  
  289.    The hashes used in CyberCash messages are message digests.  That is,    a non-invertable fingerprint of a message such that it is    computationally infeasible to find an alternate message with the same    hash.  Thus the relatively small hash can be used to secure a larger    message.  If you are confident in the authenticity of the hash and    are presented with a message which matches the hash, you can be sure    it is the original message, at least as regards all aspects that have    been included in the hash. 
  290.  
  291.    The hash is calculated using the MD5 algorithm (see RFC 1321) on a    synthetic message.  The synthetic message is composed of the labels    and values specified in a list for the particular hash.  Since the    hash is input order dependent, it is essential that the label-value    pairs be assembled in the order specified.  In some cases, a range of    matching labels is specified.  For example, "card*" to match card-    number, card-expiration-date, and all other labels starting with    "card".  In such cases, all existing matching labels are used in    ascending alphabetic order by ASCII character code. 
  292.  
  293.    If a label is specified in a signature list but is not present in the    label-value data on which the hash is being calculated, it is not    included in the hash at all.  That is, even the label and label    terminator are omitted from the synthetic message. 
  294.  
  295.    Before being hashed, the text of the synthetic message is processed    to remove all "white space" characters.  White space characters are    defined as any with an ASCII value of 32 (space) or less or 127    (rubout) or greater.  Thus all forms of new-line/carriage-return and    distinctions such as blank lines, trailing spaces, replacement of a    horizontal tab character by multiple spaces, etc., are ignored for    hash purposes. 
  296.  
  297.    MD5 hashes are 16 bytes long.  This means that the base 64 encoding    of such a hash will be 24 characters (of which the last two will    always be padding equal signs). 
  298.  
  299. 4. Specific Message Formats 
  300.  
  301.    This section describes the formats of the Verison 0.8 CyberCash    messages by example with comments.  The reader in assumed to be    familiar with terms such as "acquirer", "PAN" (primary account    number), etc., defined in ISO 8583, and currency designations as    defined in ISO 4217. A few fields not relevant to current operations    have been removed to simplify this exposition. 
  302.  
  303.  
  304.  
  305.  
  306.  
  307. Eastlake, et al              Informational                     [Page 13] 
  308.  RFC 1898                 CyberCash Version 0.8             February 1996 
  309.  
  310.     In the following example messages, signatures, hashes, and encrypted    sections are fake nonsense text and ids are fictitious. 
  311.  
  312. 4.1 Persona Registration and Application Retrieval 
  313.  
  314.    The first step in customer use of CyberCash is registering a persona    using the customer application.  This is done with the R1 message    defined below.  The CyberCash server responds with the R2 message. 
  315.  
  316.    When the customer application learns that it is out of date, it can    use the GA1 request message to the server and its GA2 response to    download a new signed version of itself. 
  317.  
  318. 4.1.1 R1 - registration 
  319.  
  320.    Description: This is the initial message sent to create a new        CyberCash persona. 
  321.  
  322.    #####################################################################    Sender: CyberApp    Receiver: CyberServer    #####################################################################    Sample Message: 
  323.  
  324.    $$-CyberCash-0.8-$$    transaction: 123123213    date: 19950121100505.nnn    cyberkey: CC1001    opaque:     FrYOQrD16lEfrvkrqGWkajM1IZOsLbcouB43A4HzIpV3/EBQM5WzkRJGzYPM1r3noBUc     MJ4zvpG0xlroY1de6DccwO9j/0aAZgDi9bcQWV4PFLjsN604j3qxWdYn9evIGQGbqGjF     vn1qI1Ckrz/4/eT1oRkBBILbrWsuwTltFd84plvTy+bo5WE3WnhVKsCUJAlkKpXMaX73     JRPoOEVQ3YEmhmD8itutafqvC90atX7ErkfUGDNqcB9iViRQ7HSvGDnKwaihRyfirkgN     +lhOg6xSEw2AmYlNiFL5d/Us9eNG8cZM5peTow==    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$ 
  325.  
  326.    ##################################################################### 
  327.  
  328.    Opaque Key: Generated using CyberCash encrypting public key        identified in CyberKey. 
  329.  
  330.    #####################################################################    Opaque Section Contents: 
  331.  
  332.    type: registration    swversion: 0.8win    content-language: en-us    requested-id: MyRequestedCCID 
  333.  
  334.  
  335.  
  336. Eastlake, et al              Informational                     [Page 14] 
  337.  RFC 1898                 CyberCash Version 0.8             February 1996 
  338.  
  339.     email: myemail@myemailhost.com    pubkey:     0VdP1eAUZRrqt3Rlg460Go/TTs4gZYZ+mvI7OlS3l08BVeoms8nELqL1RG1pVYdDrTsX     E5L+wcGCLEo5+XU5zTKkdRUnGRW4ratrqtcte7e94F+4gkCN06GlzM/Hux94    signature:     v6JGmxIwRiB6iXUK7XAIiHZRQsZwkbLV0L0OpVEvan9l59hVJ3nia/cZc/r5arkLIYEU     dw6Uj/R4Z7ZdqO/fZZHldpd9+XPaqNHw/y8Arih6VbwrO5pKerLQfuuPbIom 
  340.  
  341.    #####################################################################    signature is of the following fields: transaction, date, cyberkey,        type, swversion, content-language, requested-id, email, pubkey 
  342.  
  343.    #####################################################################    Explanation:    content-language is taken from the MIME header field (see RFC1766)        and is the language text messages should be generated in.  (only        en-us implemented at this time.    swversion used to check if client application is old. 
  344.  
  345.  4.1.2 R2 - registration-response 
  346.  
  347.    Description: This message gives the success/failure response to R1. 
  348.  
  349.    #####################################################################    Sender: CyberServer    Receiver: CyberApp    #####################################################################    Sample Message: 
  350.  
  351.    $$-CyberCash-0.8-$$    transaction: 12312313    date: 19950121100505.nnn    opaque:     r1XfjSQt+KJYUVOGU60r7voFrm55A8fP5DjJZuPzWdPQjGBIu3B6Geya8AlJfHsW11u8     dIv1yQeeYj/+l9TD1dXW21/1cUDFFK++J2gUMVv8mX1Z6Mi4OU8AfsgoCliwSkWmjSOb     kE62sAlZTnw998cKzMFp70TSlI3PEBtvIfpLq5lDCNbWidX8vFZV0ENUmMQ9DTP3du9w     fsFGvz1mvtHLT/Gj8GNQRYKF4xiyx4HYzTkSMhgU5B/QDLPS/SawIJuR86b9X0mwsr0a     gbGTzECPJTiKkrhxxMG/eymptsVQSLqNaTCx6w==    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$ 
  352.  
  353.    #####################################################################    Opaque Key: Same as session key for R1 for same Transaction and        connection (there may be no ID!). 
  354.  
  355.    #####################################################################    Opaque Section Contents: 
  356.  
  357.  
  358.  
  359.  Eastlake, et al              Informational                     [Page 15] 
  360.  RFC 1898                 CyberCash Version 0.8             February 1996 
  361.  
  362.     type: registration-response    server-date: 19950121100506.nnn    requested-id: MyRequestedCCID    response-id: CyberCashHandle    email: myemail@myemailhost.com    response-code: success/failure/etc.    pubkey:     0VdP1eAUZRrqt3Rlg460Go/TTs4gZYZ+mvI7OlS3l08BVeoms8nELqL1RG1pVYdDrTsX     E5L+wcGCLEo5+XU5zTKkdRUnGRW4ratrqtcte7e94F+4gkCN06GlzM/Hux94    swseverity: fatal/warning  [absent if ok]    swmessage; Tells CyberApp that it is obsolete.  Display this     text to the user.  [only present if SWSeverity present]    message;           Free text of the error/success condition.           This text is to be displayed to the person           by the CyberCash application... 
  363.  
  364.           In general this includes: duplicate-id, bad-signature,           or ill-formed-registration 
  365.  
  366.    #####################################################################    Signature is of the following fields: no-signature 
  367.  
  368.    #####################################################################    Explanation:    responseid is used to suggest a unique ID if the failure was due        to the requested ID being already in use... If the reason for        failure was not due to duplicate ID then this field may be        omitted.    responseid gives the actual ID with check characters appended if        success.    swseverity can warn user of old client application or indicate        failure due to old or known buggy version. 
  369.  
  370.  4.1.3 GA1 - get-application 
  371.  
  372.    Description: Used by CyberApp to get an updated version. 
  373.  
  374.    #####################################################################    Sender: CyberApp    Receiver: CyberServer    #####################################################################    Sample Message: 
  375.  
  376.    $$-CyberCash-0.8-$$    transaction: 123123213    date: 19950121100505.nnn 
  377.  
  378.  
  379.  
  380. Eastlake, et al              Informational                     [Page 16] 
  381.  RFC 1898                 CyberCash Version 0.8             February 1996 
  382.  
  383.     cyberkey: CC1001    opaque:     VHMS611wGkUmR6bKoI+ODoSbl7L5PKtEo6aM88LCidqN+H/8B4xM3LxdwUiLn7rMPkZi     xOGb+5d1lRV7WeTp21QYlqJr8emc6FAnGd5c0csPmcnEpTFh9xZDJaStarxxmSEwm2mw     l2VjEUODH6321vjoMAOFQWn7ER0o    $$-CyberCash-End-0QXqLlNxrn4GNQPPk9AO1Q==-$$ 
  384.  
  385.    #####################################################################    Opaque Key: Generated using CyberCash encrypting public key identified       in CyberKey. 
  386.  
  387.    #####################################################################    Opaque Section Contents: 
  388.  
  389.    type: get-application    swversion: 0.8win 
  390.  
  391.    #####################################################################    Signature is of the following fields: no signature 
  392.  
  393.    #####################################################################    Explanation:    There may not be a customer persona so there is no ID.  There        may not be a customer public/private key pair so there is        no signature.  The swversion is mandatory so the server can        tell what to return. 
  394.  
  395.  4.1.4 GA2 - get-application-response 
  396.  
  397.    Description: Return success and URL of up to date copy of CyberApp        or failure. 
  398.  
  399.    #####################################################################    Sender: CyberServer    Receiver: CyberApp    #####################################################################    Sample Message: 
  400.  
  401.    $$-CyberCash-0.8-$$    transaction: 12312313    date: 19950110102333.nnn    opaque:     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg== 
  402.  
  403.  
  404.  
  405. Eastlake, et al              Informational                     [Page 17] 
  406.  RFC 1898                 CyberCash Version 0.8             February 1996  
  407.  
  408.    $$-CyberCash-End-0QXqLlNxrn4GNQPPk9AO1Q==-$$ 
  409.  
  410.     #####################################################################    Opaque Key: session key from GA1 
  411.  
  412.    #####################################################################    Opaque Section Contents: 
  413.  
  414.    type: get-application-response    server-date: 19950110102334.nnn    response-code: success/failure/etc.    message; Text message to be displayed to the user providing more        information on the success/failure.    swversion: 0.8win    application-url: http://foo.cybercash.com/server/0.8WIN.EXE    application-hash: lSLzs/vFQ0BXfU98LZNWhQ== 
  415.  
  416.    #####################################################################    Signature: none. 
  417.  
  418.    #####################################################################    Explanation:    application-hash is the MD5 of the binary of the application.    application-url & application-hash omitted on failure.    swversion is the version being transmitted to the customer. 
  419.  
  420.  4.2 Binding Credit Cards 
  421.  
  422.    The CyberCash system is design to give the card issuing organization    control over whether a card may be used via the CyberCash system.    The customer, after having registered a persona with CyberCash as    described above, can then bind each credit card they wish to use to    their CyberCash persona.  This is done via the BC1 message from the    customer to their CyberCash server and the BC4 response from the    server. 
  423.  
  424. 4.2.1 BC1 - bind-credit-card 
  425.  
  426.    Description: This is the initial message in the process of binding a        credit card to a CyberCash persona. 
  427.  
  428.    #####################################################################    Sender: CyberApp    Receiver: CyberServer    #####################################################################    Sample Message: 
  429.  
  430.  
  431.  
  432. Eastlake, et al              Informational                     [Page 18] 
  433.  RFC 1898                 CyberCash Version 0.8             February 1996 
  434.  
  435.     $$-CyberCash-0.8-$$    id: MyCyberCashID    date: 19950121100505.nnn    transaction: 12312314    cyberkey: CC1001    opaque:     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$ 
  436.  
  437.    #####################################################################    Opaque Key: generated from CyberCash encryption key identified in        CyberKey 
  438.  
  439.    #####################################################################    Opaque Section Contents: 
  440.  
  441.    type: bind-credit-card    swversion: 0.8win    card-number: 1234567887654321    card-type: mastercard    card-salt: 46735210    card-expiration-date: 05/99    card-name: John Q. Public    card-street:    card-city:    card-state:    card-postal-code:    card-country:    signature:     tX3odBF2xPHqvhN4KVQZZBIXDveNi0eWA7717DNfcyqh2TpXqgCxlDjcKqdJXgsNLkY7     GkyuDyTF/m3SZif64giCLjJRKg0I6mqI1k/Dcm58D9hKCUttz4rFWRqhlFaj 
  442.  
  443.    #####################################################################    signature is of the following fields: id, date, transaction,        cyberkey, type, swversion, card-number, card-salt,        card-expiration-date, card-name, card-street, card-city,        card-state, card-postal-code, card-country 
  444.  
  445.    #####################################################################    Explanation:    salt is needed so that the hash stored at the server is less        informative.  Server just remembers the "prefix" of the card        number and the hash of the combined card number and salt. If it        just hashed the card number, it would be recoverable with modest 
  446.  
  447.  
  448.  
  449. Eastlake, et al              Informational                     [Page 19] 
  450.  RFC 1898                 CyberCash Version 0.8             February 1996 
  451.  
  452.         effort by trying to hash all plausible numbers.  We don't want        to store the card numbers on the server because it would make        the server files too valuable to bad guys. 
  453.  
  454.  4.2.2 BC4 - bind-credit-card-response 
  455.  
  456.    Description: Indicates that the process of binding a credit card        terminated.  Returns success or failure. 
  457.  
  458.    #####################################################################    Sender: CyberServer    Receiver: CyberApp    #####################################################################    Sample Message: 
  459.  
  460.    $$-CyberCash-0.8-$$    id: mycybercashid    transaction: 12312314    date: 19950121100505.nnn    opaque:     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$ 
  461.  
  462.    #####################################################################    Opaque Key: Session key from BC1 with same Transaction and ID 
  463.  
  464.    #####################################################################    Opaque Section Contents: 
  465.  
  466.    type: bind-credit-card-response    server-date: 19950121100506.nnn    swseverity: fatal/warning  [absent if ok]    swmessage; message about obsoleteness of customer software        to be shown to the customer.  [only present if SWSeverity present]    response-code: success/failure/etc.    card-number: 1234567887654321    card-type: visa    card-salt: 47562310    card-expiration-date: 01/99    card*: [other card* lines to also be given in CH.1 message]    message; Plain text for the user        can be multiple lines 
  467.  
  468.  
  469.  
  470.  Eastlake, et al              Informational                     [Page 20] 
  471.  RFC 1898                 CyberCash Version 0.8             February 1996 
  472.  
  473.     #####################################################################    Signature is of the following fields: no-signature 
  474.  
  475.    #####################################################################    Explanation: All the card* lines can be saved as a blob to be        submitted in CH.1.  card-expiration-date, card-number, card-salt,        and card-type should always be present.    Depending on reason for failure, not all fields may be present. 
  476.  
  477.  4.3 Customer Credit Card Purchasing Messages 
  478.  
  479.    In general, CyberCash involvement in the credit card purchasing cycle    starts after the user has determined what they are buying.  When they    click on the CyberCash payment button, a PR1 message is sent by the    merchant to the customer as the body of a message of MIME type    application/cybercash. 
  480.  
  481.    If the customer wishes to proceed, they respond to the merchant  with    a  CH1.   The merchant responds with a CH2 but between the receipt of    the CH1 and issuance of the CH2, the  merchant  usually  communicates    with the CyberCash server via the CM* messages. 
  482.  
  483.  4.3.1 PR1 - payment-request 
  484.  
  485.    Description: This message is the first message that is defined        by CyberCash in the purchase-from-a-merchant process. The        shopping has completed.  Now we are at the point of paying        for the purchases. 
  486.  
  487.    #####################################################################    Sender: MerchantApp    Receiver: CyberApp    #####################################################################    Sample Message: 
  488.  
  489.    $$-CyberCash-0.8-$$    type: payment-request    merchant-ccid: ACME-012    merchant-order-id: 1231-3424-234242    merchant-date: 19950121100505.nnn    note;      ACME Products 
  490.  
  491.      Purchase of 4 pairs "Rocket Shoes" at $39.95 ea.      Shipping and handling $5.00 
  492.  
  493.  
  494.  
  495.  Eastlake, et al              Informational                     [Page 21] 
  496.  RFC 1898                 CyberCash Version 0.8             February 1996 
  497.  
  498.       Total Price: 164.80 
  499.  
  500.      Ship to:           Wily Coyote           1234 South St.           Somewhere, VA 12345    merchant-amount: usd 164.80    accepts: visa:CC001, master:CC001,amex:CC001,JCPenny:VK005,macy:VK006    url-pay-to: http://www.ACME.com/CybercashPayment    url-success: http://www.ACME.com/ordersuccess    url-fail: http://www.ACME.com/orderfail    merchant-signed-hash:     a/0meaMHRinNVd8nq/fKsYg5AfTZZUCX0S3gkjAhZTmcrkp6RZvppmDd/P7lboFLFDBh     Ec0oIyxWeHfArb3OtkgXxJ7qe0Gmm/87jG5ClGnpBnw0dY7qcJ6XoGB6WGnD    $$-CyberCash-End-lSLzs/vFQ0BXfU98LZNWhQ==-$$ 
  501.  
  502.    #####################################################################    Opaque Key: no opaque section 
  503.  
  504.    #####################################################################    Opaque Section Contents: no opaque section 
  505.  
  506.    #####################################################################    merchant-signed-hash is the signature under the merchant's        private key of the hash of the following fields: type,        merchant-ccid, merchant-order-id, date, note, merchant-amount,        accepts, url-pay-to, url-success, url-fail 
  507.  
  508.    #####################################################################    Explanation:    This message is signed by the merchant but the customer cannot        directly verify this signature. When the payment is made, the        Customer includes the signature with the hash (derived by the        customer directly) in the payment. If these do not match, the        CyberCash will not perform the payment function.    accepts: The client software will only recognized single word card    name in the accepts field of PR1. For example,      MasterCard      AmericanExpress    are recognized where as      Master card      American express    are not recognized. MasterCard and masterCard are both    recognized as master card.    Card type followed by key designator.  For main line credit cards,        this will be a CC*.  Client can use or ignore the * number as        it chooses.  For proprietary card, this will be VK* where * is        the CheckFree key to use (1 based).  Cards separated by comma, 
  509.  
  510.  
  511.  
  512. Eastlake, et al              Informational                     [Page 22] 
  513.  RFC 1898                 CyberCash Version 0.8             February 1996 
  514.  
  515.         key designator follows card type and colon.    url-pay-to is where the CH1 should be sent.  url-fail and url-success        are where the browser should look after failure or success. 
  516.  
  517.  4.3.2 CH1 - credit-card-payment 
  518.  
  519.    Description: This message represents the presentation of a "credit        card for payment". 
  520.  
  521.    #####################################################################    Sender: CyberApp    Receiver: MerchantApp    #####################################################################    Sample Message: 
  522.  
  523.    $$-CyberCash-0.8-$$    type: card-payment    id: myCyberCashID    order-id: 1231-3424-234242    merchant-ccid: ACME-012    transaction: 78784567    date: 19950121100505.nnn    pr-hash: c77VU/1umPKH2kpMR2QVKg==    pr-signed-hash:     a/0meaMHRinNVd8nq/fKsYg5AfTZZUCX0S3gkjAhZTmcrkp6RZvppmDd/P7lboFLFDBh     Ec0oIyxWeHfArb3OtkgXxJ7qe0Gmm/87jG5ClGnpBnw0dY7qcJ6XoGB6WGnD    cyberkey: CC1001    opaque:     iff/tPf99+Tm5P7s3d61jOWK94nq9/+1jOWK9+vr9+b+94n3tYzmiveJ9/+09/334ubg     3rWM5Ir3ier3/7WM5Ir36+v35v73ife1jOWK94n3/7T3/ffm5uD+7N339/f39/eq3ff3     9/eFiJK5tLizsoeSmpW7uLS8/7iio7Wisfv38biio7uyufv3tfv35uH+7N3d9/exuKX3     5+z3vuu4oqO7srnsvvz8/venoqO0v7al/7iio7WisYy+iv7s3ff3p6KjtL+2pf/wi7nw     3ard3Q==    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$ 
  524.  
  525.    #####################################################################    Opaque Key: Created using CyberCash encrypting public key in        CyberKey. 
  526.  
  527.    #####################################################################    Opaque Section Contents:    swversion: 0.8win    amount: usd 10.00    card*: [from successful BC4 (includes card-expiration-date,        card-number, card-type, and card-salt)]    signature:     meO38aULnoP09VhTS2E56tnuZBRRlGfbwqaleZ9zNnv7YjExJKBFxuaqYTUDEj427HHh 
  528.  
  529.  
  530.  
  531. Eastlake, et al              Informational                     [Page 23] 
  532.  RFC 1898                 CyberCash Version 0.8             February 1996 
  533.  
  534.      mm9BVmHRwCq6+8ylZXixGHI1I9A/ufAMrpqMIi6DS3PRlc8WC3CCWoAHyAqr 
  535.  
  536.    #####################################################################    signature is under client private key of the following fields:        type, id, order-id, merchant-ccid, transaction, date,        pr-hash, pr-signed-hash, cyberkey, swversion, amount,        card* 
  537.  
  538.    #####################################################################    Explanation:    The pr-signed-hash field is the same as the merchant-signed-hash in        the PR1 message but has a different name for historic reasons. 
  539.  
  540.  4.3.3 CH2 - charge-card-response 
  541.  
  542.    Description: Return to customer from a CH1 attempt to pay via credit        card.  Indicates success/failure. 
  543.  
  544.    #####################################################################    Sender: MerchantApp    Receiver: CyberApp    #####################################################################    Sample Message: 
  545.  
  546.    $$-CyberCash-0.8-$$    type: charge-card-response    merchant-ccid: ACME-012    id: myCyberCashID    transaction: 78784567    date: 1995121100500.nnn    merchant-date: 19950121100505.nnn    merchant-response-code: failure/success/etc.    pr-hash: 7Tm/djB05pLIw3JAyy5E7A==    pr-signed-hash:     a/0meaMHRinNVd8nq/fKsYg5AfTZZUCX0S3gkjAhZTmcrkp6RZvppmDd/P7lboFLFDBh     Ec0oIyxWeHfArb3OtkgXxJ7qe0Gmm/87jG5ClGnpBnw0dY7qcJ6XoGB6WGnD    merchant-message; This is a message to display to the user from the        merchant. Can be multiple lines...  Is not secure.    opaque:  [might not be present, see explanation]     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$ 
  547.  
  548.    ##################################################################### 
  549.  
  550.  
  551.  
  552. Eastlake, et al              Informational                     [Page 24] 
  553.  RFC 1898                 CyberCash Version 0.8             February 1996 
  554.  
  555.     Opaque Key:   Same customer session key from CH1 passed through CM1        for ID and Transaction 
  556.  
  557.    #####################################################################    Opaque Section Contents (from CM.6): 
  558.  
  559.    server-date: 19950121100706.nnn    amount: usd 10.00    order-id: 1231-3424-234242    card*:  [from successful BC4]    response-code: failure/success/etc.    swseverity: fatal/warning    swmessage; Tells CyberApp that it is obsolete.  Display this     text to the user.  [only present if SWSeverity present]    message;           Free text of the error/success condition.           This text is to be displayed to the customer           by the CyberCash application... 
  560.  
  561.    #####################################################################    Signature is of the following fields: no signature 
  562.  
  563.    #####################################################################    Explanation:    Opaque section optional because the CH1 to the merchant can fail due        to bad order-id, date, wrong merchant-ccid, etc., etc. So the        server may not be involved at all in which case there is no        mechanism for generating a secure opaque section.  (It could even        be that merchant attempt to contact the server times out.)    If transaction makes it through server (via CM*) then        Response-Code at top level should mirror response-code to        merchant from server. (Hopefully the same as the        response-code to customer from server but the merchant can't        tell that.)    Note that there can be two messages, one from merchant and one        from the server. 
  564.  
  565.  4.4 Merchant Credit Card Purchasing Messages 
  566.  
  567.    The merchant presents credit card purchases, makes adjustments, and    the like via the CM* series.  In general, the credit card cycle is    one of getting authorization for a purchase, then capturing the    purchase in a batch for clearance, then performing the clearance.  It    is also possible to void a capture (i.e., remove an item from a    batch), and process credits (returns). (See section 5.1.) 
  568.  
  569.  
  570.  
  571.  
  572.  
  573. Eastlake, et al              Informational                     [Page 25] 
  574.  RFC 1898                 CyberCash Version 0.8             February 1996 
  575.  
  576.     Authorizations always come from an acquirer via the response to a CM1    or CM2 message. If capture is being performed by the acquirer or some    entity between the CyberCash server and the acquirer, this is done    via a CM3 or CM2 message depending on the arrangement between the    merchant and the entity doing the capture.  Returns (credits) are    handled via message CM5.  Message CM4 is provided for voiding a    capture or return before the batch is cleared.  CM6 is the message    format used for responses to all the other CM* messages. 
  577.  
  578.    An MM* series has also been implemented for purely merchant    originated CyberCash charges as described in section 3.4.7 
  579.  
  580.    Current credit card dispute resolution systems assume that the    merchant knows the card number.  Thus, to work with these systems,    special bypass messages have been set up that allow the merchant to    obtain, for a particular transaction, the information that CyberCash    otherwise goes to lengths to hide from the merchant.  See sections    3.4.8 and 3.4.9.  This makes the obtaining os such information by the    merchant an auditable event. 
  581.  
  582.    Many present day merchants operate in a "terminal capture" mode where    the authorizations are captured by the merchant and the merchant    later submits the settlement batch.  Messages have been defined and    are being implemented so that such merchant captured batches can be    submitted via CyberCash. 
  583.  
  584.  4.4.1 CM1 - auth-only 
  585.  
  586.    Description: This message is used by the merchant to perform an        authorization operation on the credit card sent in by the        customer. 
  587.  
  588.    #####################################################################    Sender: MerchantApp    Receiver: CyberServer    #####################################################################    Sample Message: 
  589.  
  590.    $$-CyberCash-0.8-$$    merchant-ccid: ACME-69    merchant-transaction: 123123    merchant-date: 19950121100705.nnn    merchant-cyberkey: CC1001    cyberkey: CC1001    opaque:     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV 
  591.  
  592.  
  593.  
  594. Eastlake, et al              Informational                     [Page 26] 
  595.  RFC 1898                 CyberCash Version 0.8             February 1996 
  596.  
  597.      4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==    merchant-opaque:     6BVEfSlgVCoGh1/0R+g1C143MaA6QLvKpEgde86WWGJWx45bMUZvaAu4LVeqWoYCqSGf     aWKUF7awol0h1i1jtgieyAcXB8ikvRJIsupSAwsRMyoNlekR6tucvfv/622JY7+n7nGO     dGbMzP0GJImh2DmdPaceAxyOB/xOftf6ko0nndnvB+/y2mFjdUGLtFQP/+3bTpZttZXj     j7RO1khe1UrAIk2TGQJmNw+ltsu0f42MgsxB8Q31vjPtoiPi5LEmD0Y4jlpJ7Jg2Ub84     F9vJhYpmzNkdiJUe83Hvo/xfJRbhafJpXFEsUZwQK0jU1ksU6CQd2+CPBB+6MxtsHoxJ     mjD6ickhd+SQZhbRCNerlTiQGhuL4wUAxzGh8aHk2oXjoMpVzWw2EImPu5QaPEc36xgr     mNz8vCovDiuy3tZ42IGArxBweasLPLCbm0Y=    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$ 
  598.  
  599.    #####################################################################    Merchant-Opaque Section Contents: 
  600.  
  601.    type: auth-only    order-id: 12313424234242    merchant-amount: usd 10.00    pr-hash: 7Tm/djB05pLIw3JAyy5E7A==    pr-signed-hash:     a/0meaMHRinNVd8nq/fKsYg5AfTZZUCX0S3gkjAhZTmcrkp6RZvppmDd/P7lboFLFDBh     Ec0oIyxWeHfArb3OtkgXxJ7qe0Gmm/87jG5ClGnpBnw0dY7qcJ6XoGB6WGnD    id: myCyberCashID    transaction: 78784567    date: 19950121100505.nnn    merchant-signature:     v4qZMe2d7mUXztVdC3ZPMmMgYHlBA7bhR96LSehKP15ylqR/1KwwbBAX8CEqns55UIYY     GGMwPMGoF+GDPM7GlC6fReQ5wyvV1PnETSVO9/LAyRz0zzRYuyVueOjWDlr5 
  602.  
  603.    #####################################################################    merchant-opaque key is generated from the CyberCash encrypting public         key identified in merchant-cyberkey. 
  604.  
  605.    Customer opaque section (Opaque) - see CH1. 
  606.  
  607.    #####################################################################    Opaque Section Contents & Signature:  (exactly as in CH1) 
  608.  
  609.    swversion: 0.8win    amount: usd 10.00    card*: [from successful BC4 (includes card-expiration-date,        card-number, and card-salt)]    signature:     48SBKUfojyC9FDKCwdCYNvucgiDxYO9erZW4QndIXZRyheTHXH8OeIhwUkyLmgQSD/UK     +IX9035/jUkdNPOxUQq9y/beHS1HU9Fe0wlzfXYRtnjlqvQX+yUfQ4T7eNEs 
  610.  
  611.    ##################################################################### 
  612.  
  613.  
  614.  
  615. Eastlake, et al              Informational                     [Page 27] 
  616.  RFC 1898                 CyberCash Version 0.8             February 1996 
  617.  
  618.     merchant-signature is on the following fields: merchant-ccid,        merchant-transaction, merchant-date, merchant-cyberkey, type,        order-id, merchant-amount, pr-hash, pr-signed-hash, id,        transaction, date, cyberkey 
  619.  
  620.    Customer Signature: see CH1 
  621.  
  622.    #####################################################################    Explanation:    The merchant signature ensures integrity of the majority of the        message.  validation of the customer signature ensures that the        customer opaque part was not tampered or replaced. 
  623.  
  624.  4.4.2 CM2 - auth-capture 
  625.  
  626.    Description: Do authorization and actually enters charge for        clearance. Message just like CM1 except for different        type. 
  627.  
  628.    #####################################################################    Sender: MerchantApp    Receiver: CyberServer    #####################################################################    Sample Message: 
  629.  
  630.    [exactly the same as CM1 except 
  631.  
  632.    type: auth-capture 
  633.  
  634.    ] 
  635.  
  636.  4.4.3 CM3 - post-auth-capture 
  637.  
  638.    Description: Captures a charge previously authorized. Message is        the same as CM1 except that it also has an authorization-code        field (which is also included in the signature) and the type        is different. 
  639.  
  640.    #####################################################################    Sender: MerchantApp    Receiver: CyberServer    #####################################################################    Sample Message: 
  641.  
  642.    $$-CyberCash-0.8-$$    merchant-ccid: ACME-012 
  643.  
  644.  
  645.  
  646. Eastlake, et al              Informational                     [Page 28] 
  647.  RFC 1898                 CyberCash Version 0.8             February 1996 
  648.  
  649.     merchant-transaction: 123123    merchant-date: 19950121100705.nnn    merchant-cyberkey: CC1001    cyberkey: CC1001    opaque:     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==    merchant-opaque:     6BVEfSlgVCoGh1/0R+g1C143MaA6QLvKpEgde86WWGJWx45bMUZvaAu4LVeqWoYCqSGf     aWKUF7awol0h1i1jtgieyAcXB8ikvRJIsupSAwsRMyoNlekR6tucvfv/622JY7+n7nGO     dGbMzP0GJImh2DmdPaceAxyOB/xOftf6ko0nndnvB+/y2mFjdUGLtFQP/+3bTpZttZXj     j7RO1khe1UrAIk2TGQJmNw+ltsu0f42MgsxB8Q31vjPtoiPi5LEmD0Y4jlpJ7Jg2Ub84     F9vJhYpmzNkdiJUe83Hvo/xfJRbhafJpXFEsUZwQK0jU1ksU6CQd2+CPBB+6MxtsHoxJ     mjD6ickhd+SQZhbRCNerlTiQGhuL4wUAxzGh8aHk2oXjoMpVzWw2EImPu5QaPEc36xgr     mNz8vCovDiuy3tZ42IGArxBweasLPLCbm0Y=    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$ 
  650.  
  651.    #####################################################################    Merchant-Opaque Section Contents: 
  652.  
  653.    type: post-auth-capture    authorization-code: a12323    order-id: 1231-3424-234242    merchant-amount: usd 10.00    pr-hash: 7Tm/djB05pLIw3JAyy5E7A==    pr-signed-hash:     a/0meaMHRinNVd8nq/fKsYg5AfTZZUCX0S3gkjAhZTmcrkp6RZvppmDd/P7lboFLFDBh     Ec0oIyxWeHfArb3OtkgXxJ7qe0Gmm/87jG5ClGnpBnw0dY7qcJ6XoGB6WGnD    id: myCyberCashID    transaction: 78784567    date: 19950121100505.nnn    merchant-signature:     vxyEF1ZHn5Rgmtms3H3t/+UB6RAvZQA1AdddjvlS0H75N1x83FyJuh8V9Ok6t4EUQQZ6     Mnptzc6phJi3Ar0s0oumELsdc8upJdXpNpJV021PGJXfDKfHP0heJIWLodXr 
  654.  
  655.    #####################################################################    merchant-opaque key is generated from the CyberCash encrypting public         key identified in merchant-cyberkey. 
  656.  
  657.    Customer opaque section (Opaque) - see CH1. 
  658.  
  659.    #####################################################################    Opaque Section Contents & Signature:  (exactly as in CH1) 
  660.  
  661.    swversion: 0.8win 
  662.  
  663.  
  664.  
  665. Eastlake, et al              Informational                     [Page 29] 
  666.  RFC 1898                 CyberCash Version 0.8             February 1996 
  667.  
  668.     amount: usd 10.00    card*: [from successful BC4 (includes card-salt, card-number,        and card-expiration)]    signature:     48SBKUfojyC9FDKCwdCYNvucgiDxYO9erZW4QndIXZRyheTHXH8OeIhwUkyLmgQSD/UK     +IX9035/jUkdNPOxUQq9y/beHS1HU9Fe0wlzfXYRtnjlqvQX+yUfQ4T7eNEs 
  669.  
  670.    #####################################################################    merchant-signature is on the following fields: merchant-ccid,        merchant-transaction, merchant-date, merchant-cyberkey, type,        authorization-code, order-id, merchant-amount, pr-hash,        pr-signed-hash, id, transaction, date, cyberkey 
  671.  
  672.    #####################################################################    Explanation:    The merchant signature ensures integrity of the majority of the        message validation of the customer signature ensures that the        customer opaque part was not tampered or replaced. 
  673.  
  674.  4.4.4 CM4 - void 
  675.  
  676.    Description: Voids out a charge/return if received before        clearance.  Message is the same as CM1 except that it also has        a retrieval-reference-number field (which is also included in the        signature) and the type is different. 
  677.  
  678.    #####################################################################    Sender: MerchantApp    Receiver: CyberServer    #####################################################################    Sample Message: 
  679.  
  680.    $$-CyberCash-0.8-$$    merchant-ccid: ACME-012    merchant-transaction: 123123    merchant-date: 19950121100705.nnn    merchant-cyberkey: CC1001    cyberkey: CC1001    opaque:     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==    merchant-opaque:     6BVEfSlgVCoGh1/0R+g1C143MaA6QLvKpEgde86WWGJWx45bMUZvaAu4LVeqWoYCqSGf     aWKUF7awol0h1i1jtgieyAcXB8ikvRJIsupSAwsRMyoNlekR6tucvfv/622JY7+n7nGO 
  681.  
  682.  
  683.  
  684. Eastlake, et al              Informational                     [Page 30] 
  685.  RFC 1898                 CyberCash Version 0.8             February 1996 
  686.  
  687.      dGbMzP0GJImh2DmdPaceAxyOB/xOftf6ko0nndnvB+/y2mFjdUGLtFQP/+3bTpZttZXj     j7RO1khe1UrAIk2TGQJmNw+ltsu0f42MgsxB8Q31vjPtoiPi5LEmD0Y4jlpJ7Jg2Ub84     F9vJhYpmzNkdiJUe83Hvo/xfJRbhafJpXFEsUZwQK0jU1ksU6CQd2+CPBB+6MxtsHoxJ     mjD6ickhd+SQZhbRCNerlTiQGhuL4wUAxzGh8aHk2oXjoMpVzWw2EImPu5QaPEc36xgr     mNz8vCovDiuy3tZ42IGArxBweasLPLCbm0Y=    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$ 
  688.  
  689.    #####################################################################    Merchant-Opaque Section Contents: 
  690.  
  691.    type: void    retrieval-reference-number: 432112344321    order-id: 1231-3424-234242    merchant-amount: usd 10.00    pr-hash: WATCQuH2q17lRuoxD78YBg==    pr-signed-hash:     8zqw0ipqtLtte0tBz5/5VPNJPPonfTwkfZPbtuk5lqMykKDvThhO0ycrfT7eXrn/hLUC     kXoSctahEVdw1KBJbp0EVr1zVzcN9Aa7m2fJgxNfiisTgIRW+PMaa78rn+Ov    id: myCyberCashID    transaction: 78784567    date: 19950121100505.nnn    Merchant-Signature: lkjladjslkjflsakjflkjsdljflsakjflkjsdljflsakjflkj        flsakjflkjsdljflsakjflkjsdljflsajflksdjflksdjflsdjssf= 
  692.  
  693.    #####################################################################    Merchant-Opaque key is generated from the CyberCash encrypting public         key identified in Merchant-CyberKey. 
  694.  
  695.    Customer opaque section (Opaque) - see CH1. 
  696.  
  697.    #####################################################################    Opaque Section Contents & Signature:  (exactly as in CH1) 
  698.  
  699.    swversion: 0.8win    amount: usd 10.00    card*: [from successful bc4 (includes card-salt, card-number,        and card-expiration)]    signature:     48SBKUfojyC9FDKCwdCYNvucgiDxYO9erZW4QndIXZRyheTHXH8OeIhwUkyLmgQSD/UK     +IX9035/jUkdNPOxUQq9y/beHS1HU9Fe0wlzfXYRtnjlqvQX+yUfQ4T7eNEs 
  700.  
  701.    #####################################################################    merchant-signature is on the following fields: merchant-ccid,        merchant-transaction, merchant-date, merchant-cyberkey, type,        retrieval-reference-number, order-id, merchant-amount, pr-hash,        pr-signed-hash, id, transaction, date, cyberkey 
  702.  
  703.    ##################################################################### 
  704.  
  705.  
  706.  
  707. Eastlake, et al              Informational                     [Page 31] 
  708.  RFC 1898                 CyberCash Version 0.8             February 1996 
  709.  
  710.     Explanation:    The merchant signature ensures integrity of the majority of the        message.  Validation of the customer signature ensures that the        customer opaque part was not tampered or replaced. 
  711.  
  712.  4.4.5 CM5 - return 
  713.  
  714.    Description: Reverse a previous charge.  Really sort of a negative        charge.  Message just like CM1 except for different type. 
  715.  
  716.    #####################################################################    Sender: MerchantApp    Receiver: CyberServer    #####################################################################    Sample Message: 
  717.  
  718.    [exactly the same as CM1 except 
  719.  
  720.    type: return 
  721.  
  722.    ] 
  723.  
  724.  4.4.6 CM6 - charge-action-response 
  725.  
  726.    Description: This receipt is given to the merchant as a receipt        for a completed charge action.  Indicates success/failure/etc. 
  727.  
  728.    #####################################################################    Sender: CyberServer    Receiver: MerchantApp    #####################################################################    Sample Message: 
  729.  
  730.    $$-CyberCash-0.8-$$    merchant-ccid: ACME-012    merchant-transaction: 123123    merchant-date: 19950121100705.nnn    opaque:     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==    merchant-opaque:     6BVEfSlgVCoGh1/0R+g1C143MaA6QLvKpEgde86WWGJWx45bMUZvaAu4LVeqWoYCqSGf     aWKUF7awol0h1i1jtgieyAcXB8ikvRJIsupSAwsRMyoNlekR6tucvfv/622JY7+n7nGO 
  731.  
  732.  
  733.  
  734. Eastlake, et al              Informational                     [Page 32] 
  735.  RFC 1898                 CyberCash Version 0.8             February 1996 
  736.  
  737.      dGbMzP0GJImh2DmdPaceAxyOB/xOftf6ko0nndnvB+/y2mFjdUGLtFQP/+3bTpZttZXj     j7RO1khe1UrAIk2TGQJmNw+ltsu0f42MgsxB8Q31vjPtoiPi5LEmD0Y4jlpJ7Jg2Ub84     F9vJhYpmzNkdiJUe83Hvo/xfJRbhafJpXFEsUZwQK0jU1ksU6CQd2+CPBB+6MxtsHoxJ     mjD6ickhd+SQZhbRCNerlTiQGhuL4wUAxzGh8aHk2oXjoMpVzWw2EImPu5QaPEc36xgr     mNz8vCovDiuy3tZ42IGArxBweasLPLCbm0Y=    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$ 
  738.  
  739.    #####################################################################    Merchant-Opaque Key: Session key same as that of CM1/2/3/4/5 for        same Merchant-Transaction and Merchant-CCID. 
  740.  
  741.    Opaque Key:  Same customer session key from CH1 passed through CM*        for ID and Transaction 
  742.  
  743.    #####################################################################    Merchant-Opaque Section Contents: 
  744.  
  745.    type: charge-action-response    server-date: 19950121100706.nnn    action-code: XXX  [per ISO 8583]    response-code: failure/success/etc.    order-id: 1231-3424-234242    pr-hash: 7Tm/djB05pLIw3JAyy5E7A==    pr-signed-hash:     8zqw0ipqtLtte0tBz5/5VPNJPPonfTwkfZPbtuk5lqMykKDvThhO0ycrfT7eXrn/hLUC     kXoSctahEVdw1KBJbp0EVr1zVzcN9Aa7m2fJgxNfiisTgIRW+PMaa78rn+Ov    retrieval-reference-number: 432112344321    authorization-code: a12323    card-hash: 7Tm/djB05pLIw3JAyy5E7A==    {    card-prefix: nnxxxx  [Returned if merchant is not full-PAN]    }        or    {    card-number: 1234567890123456  [Returned if merchant is full-PAN]    }    expiration-date: 12/34  [always present]    merchant-swseverity: fatal/warning    merchant-swmessage; Message for merchant about out of date        protocol number in $$ start line of merchant message.    merchant-message;           Free text of the error/success condition.           This text is for the merchant from the server...    id: myCyberCashID    transaction: 78784567    date: 19950121100505.nnn 
  746.  
  747.    Opaque (Customer) contents: 
  748.  
  749.  
  750.  
  751. Eastlake, et al              Informational                     [Page 33] 
  752.  RFC 1898                 CyberCash Version 0.8             February 1996 
  753.  
  754.     server-date: 19950121100706.nnn    amount: usd 10.00    order-id: 1231-3424-234242    card*: [from successful BC4]    response-code: failure/success/etc.    swseverity: fatal/warning    swmessage; Tells CyberApp that it is obsolete display this     text to the user.  [only present if SWSeverity present]    message;           Free text of the error/success condition.           This text is to be displayed to the customer           by the CyberCash application... 
  755.  
  756.    #####################################################################    Signature is of the following fields: no signature 
  757.  
  758.    #####################################################################    Explanation:    retrieval-reference-number is needed for voids. authorization-code        is needed for post-auth-capture.  These fields are each only        present in the CM6 if they were returned by the bank which        depends on what operation was being done.    card-prefix is first two and last four digits of card-number.    At merchant's bank's discretion the card-number or card-prefix is        returned.    card-hash is really the hash of the full card number and the salt        provided by the customer.  card-hash is needed so the merchant        can, if they wish, sort customer transactions by card without        knowing the card number.    card* is the card* fields delivered in the CM* messages being        responded to.  They appear in alphabetic order.    server-date duplicated in customer opaque area for security.    {}'s in column one just for clarity of alternatives and do not        actually appear in the message.    []ed comments appear after some fields. 
  759.  
  760.  4.4.7 The MM* Message Series 
  761.  
  762.    The CM* message series above is the primary CyberCash credit card    purchase system for securely handling charges from CyberCash    customers.  However, merchants, who are authorized by their acquiring    bank to accept such charges, may also receive telephone, mail, and    over-the-counter sales.  To avoid any necessity for the merchant to    have a second parallel system to handle these charges, an MM1 through    MM6 message series is defined and has been implemented for these less    secure transactions. 
  763.  
  764.  
  765.  
  766.  Eastlake, et al              Informational                     [Page 34] 
  767.  RFC 1898                 CyberCash Version 0.8             February 1996 
  768.  
  769.     The MM* messages look very similar to the CM* series but the    "customer opaque" section is actually signed by the merchant and no    separate customer CyberCash ID or prior card binding is required.    The MM* message examples are omitted here in the interests of    brevity. 
  770.  
  771. 4.4.8 CD1 - card-data-request 
  772.  
  773.    Description: Used by merchant to get card-number, etc., if        information needed by merchant to resolve a dispute. 
  774.  
  775.    #####################################################################    Sender: MerchantApp    Receiver: CyberServer    #####################################################################    Sample Message: 
  776.  
  777.    $$-CyberCash-0.8-$$    merchant-ccid: ACME-69    merchant-transaction: 123123    merchant-date: 19950121100705.nnn    merchant-cyberkey: CC1001    cyberkey: CC1001    opaque:     EDD+b9wAfje5f7vscnNTJPkn1Wdi7uG3mHi8MrzLyFC0dj7e0JRjZ2PmjDHuR81kbhqb     nX/w4uvsoPgwM5UJEW0Rb9pbB39mUFBDLPVgsNwALySeQGso0KyOjMxNs1mSukHdOmDV     4uZR4HLRRfEhMdX4WmG/2+sbewTYaCMx4tn/+MNDZlJ89Letbz5kupr0ZekQlPix+pJs     rHzP5YqaMnk5iRBHvwKb5MaxKXGOOef5ms8M5W8lI2d0XPecH4xNBn8BMAJ6iSkZmszo     QfDeWgga48g2tqlA6ifZGp7daDR81lumtGMCvg==    merchant-opaque:     6BVEfSlgVCoGh1/0R+g1C143MaA6QLvKpEgde86WWGJWx45bMUZvaAu4LVeqWoYCqSGf     aWKUF7awol0h1i1jtgieyAcXB8ikvRJIsupSAwsRMyoNlekR6tucvfv/622JY7+n7nGO     dGbMzP0GJImh2DmdPaceAxyOB/xOftf6ko0nndnvB+/y2mFjdUGLtFQP/+3bTpZttZXj     j7RO1khe1UrAIk2TGQJmNw+ltsu0f42MgsxB8Q31vjPtoiPi5LEmD0Y4jlpJ7Jg2Ub84     F9vJhYpmzNkdiJUe83Hvo/xfJRbhafJpXFEsUZwQK0jU1ksU6CQd2+CPBB+6MxtsHoxJ     mjD6ickhd+SQZhbRCNerlTiQGhuL4wUAxzGh8aHk2oXjoMpVzWw2EImPu5QaPEc36xgr     mNz8vCovDiuy3tZ42IGArxBweasLPLCbm0Y=    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$ 
  778.  
  779.    #####################################################################    Merchant-Opaque Section Contents: 
  780.  
  781.    type: card-data-request    password: xyzzy    server-date: 19950121100505.nnn  [optional]    order-id: 12313424234242    merchant-amount: usd 10.00    pr-hash: 7Tm/djB05pLIw3JAyy5E7A== 
  782.  
  783.  
  784.  
  785. Eastlake, et al              Informational                     [Page 35] 
  786.  RFC 1898                 CyberCash Version 0.8             February 1996 
  787.  
  788.     pr-signed-hash:     IV8gWHx1f8eCkWsCsMOE3M8mnTbQ7IBBcEmyGDAwjdbaLu5Qm/bh06OX1npe2d3Hijxy     +X8vKcVE6l6To27u7A7UmGm+po9lCUSLxgtyqyn3jWhHZpc5NZpwoTCf2pAK    id: myCyberCashID    transaction: 78784567    date: 19950121100505.nnn    merchant-signature:     8zqw0ipqtLtte0tBz5/5VPNJPPonfTwkfZPbtuk5lqMykKDvThhO0ycrfT7eXrn/hLUC     kXoSctahEVdw1KBJbp0EVr1zVzcN9Aa7m2fJgxNfiisTgIRW+PMaa78rn+Ov 
  789.  
  790.    #####################################################################    merchant-opaque key is generated from the CyberCash encrypting public         key identified in merchant-cyberkey. 
  791.  
  792.    Customer opaque section (Opaque) - see CH1. 
  793.  
  794.    #####################################################################    Opaque Section Contents & Signature:  (exactly as in CH1) 
  795.  
  796.    swversion: 0.8win    amount: usd 10.00    card*: [from successful BC4 (includes card-expiration-date,        card-number, and card-salt)]    signature:     48SBKUfojyC9FDKCwdCYNvucgiDxYO9erZW4QndIXZRyheTHXH8OeIhwUkyLmgQSD/UK     +IX9035/jUkdNPOxUQq9y/beHS1HU9Fe0wlzfXYRtnjlqvQX+yUfQ4T7eNEs 
  797.  
  798.    #####################################################################    merchant-signature is on the following fields: merchant-ccid,        merchant-transaction, merchant-date, merchant-cyberkey, type,        password, server-date, order-id, merchant-amount, pr-hash,        pr-signed-hash, id, transaction, date, cyberkey 
  799.  
  800.    Customer Signature: see CH1 
  801.  
  802.    #####################################################################    Explanation:    [see also CM1 explanation]    The merchant may need to know the card involved and other        information in order to resolve a disputed transaction.  This        information is all contained in the original CH1 embedded in the        CM1 for the transaction.  If the merchant saves the CM1 and other        transaction information, they can send this CD1 message to the        server.  While this reduces the pass through confidentiality of        the system, the merchant is then on record as asking for this        particular credit card number and excessive CD1's from a merchant        can be flagged.    password is an extra level of security intended to be manually entered 
  803.  
  804.  
  805.  
  806. Eastlake, et al              Informational                     [Page 36] 
  807.  RFC 1898                 CyberCash Version 0.8             February 1996 
  808.  
  809.         at the merchant to authorize the unusual action.  Server stores a        hash of the merchant-ccid and the password. 
  810.  
  811.  4.4.9 CD2 - card-data-response 
  812.  
  813.    Description: Respond to CD1 with failure or with success and card        data. 
  814.  
  815.    #####################################################################    Sender: CyberServer    Receiver: MerchantApp    #####################################################################    Sample Message: 
  816.  
  817.    $$-CyberCash-0.8-$$    merchant-ccid: ACME-012    merchant-transaction: 123123    merchant-date: 19950121100705.nnn    merchant-opaque:     t731/86R72ZLrqHLIf0VG6m3ybvs+dG6K705L8LFKEXgCti0NGjK83CwDsUdiso7U1JP     2Z0BClVHLmhIBY7+QXx5iCEGHy8JKC9IWyNNi2O/OOIDgLeJAkMSZYbNQrSKViY34imS     0s7Q6uDk9wV0fixjvRBuNO2B7urWWsqfkLOYDnHy0RvhyUzYxLrMaTX+/6IkyU5Z0lH3     BXYBUNV8DgitEjgLXmyWuXRDlEBN02yeZgsFRm9GmuBHfCTySm2XqnifizpmKMUa9UiH     onNx9W86fuBdcJF7CJgH5Gct2M/dx/f2VpoRkmeSmWxFrYi8wgtvddSXF9my40NZ8WZz     CEUEvQhcmruopwEeehv+bejc3fDDZ23JKrbhlZ17lSvFR14PKFsi32pXFqTO0ej9GTc5     L6c8nM3tI1qdHNCe0N5f7ASdKS0tYSxAYJLIR6MqPrXjNJEaRx7Vu1odMlkgrzGOV1fo     5w33BQHK3U2h+1e5zYBeHY3ZYG4nmylYYXIye4xpuPN4QU0dGrWZoImYE44QOwjd5ozl     xulPBjj6cpEI/9wTwR3tpkBb4ZfYirxxnoj9JUkPK9Srv9iJ    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$ 
  818.  
  819.    #####################################################################    Opaque Key: session key from CD1. 
  820.  
  821.    #####################################################################    Opaque Section Contents: 
  822.  
  823.    type: card-data-response    server-date: 19950121100706.nnn    response-code: failure/success/etc.    order-id: 1231-3424-234242    pr-hash: 7Tm/djB05pLIw3JAyy5E7A==    pr-signed-hash:     IV8gWHx1f8eCkWsCsMOE3M8mnTbQ7IBBcEmyGDAwjdbaLu5Qm/bh06OX1npe2d3Hijxy     +X8vKcVE6l6To27u7A7UmGm+po9lCUSLxgtyqyn3jWhHZpc5NZpwoTCf2pAK    card-hash: 7Tm/djB05pLIw3JAyy5E7A==    card-number: 4811123456781234    card-type: visa 
  824.  
  825.  
  826.  
  827. Eastlake, et al              Informational                     [Page 37] 
  828.  RFC 1898                 CyberCash Version 0.8             February 1996 
  829.  
  830.     card-name: John Q. Public    expiration-date: 01/99    merchant-swseverity: fatal/warning    merchant-swmessage; Message for merchant about out of date        protocol number in $$ start line of merchant message.    merchant-message;           Free text of the error/success condition.           This text is for the merchant from the server...    id: myCyberCashID    transaction: 78784567    date: 19950121100505.nnn 
  831.  
  832.    #####################################################################    Signature is of the following fields: no signature. 
  833.  
  834.    #####################################################################    Explanation:    This normally returns selected fields from the decoding of the        opaque part of a CH1 as sent to the server in a CD1. 
  835.  
  836.  4.5 Utility and Error Messges 
  837.  
  838.    A number of utility, status query, and special error reporting    messages have also been found necessary in implementing the CyberCash    system. 
  839.  
  840.    It is desirable to be able to test connectivity, roughly synchronize    clocks, and get an initial determination of what client protocol and    software versions are accepted.  This is done via the P1 client to    server message and its P2 server to client response. 
  841.  
  842.    Clients need to be able to determine the status of earlier    transactions when the client or merchant has crashed during or has    suffered data loss since the transaction.  Two transaction query    messages are defined, TQ1 and TQ2.  One just queries and the other    also cancels the transaction, if it has not yet completed.  The    response to both of these messages is a TQ3 response from the server. 
  843.  
  844.    Since the system operates in a query response mode, there are two    cases where special error messages are needed.  If a query seems to    be of an undeterminable or unknown type, the UNK1 response error    message is sent.  If a response seems to be of an undeterminable or    unknown type or other serious error conditions occur at the client or    merchant which should be logged at the CyberCash server, the DL1 or    DL2 diagnostic log message is submitted by the client or merchant in    question respectively. 
  845.  
  846.  
  847.  
  848.  Eastlake, et al              Informational                     [Page 38] 
  849.  RFC 1898                 CyberCash Version 0.8             February 1996 
  850.  
  851.  4.5.1 P1 - ping 
  852.  
  853.    Description: Very light weight check that we have connectivity from        the customer to the server.  Does no crypto to minimize        overhead. 
  854.  
  855.    #####################################################################    Sender: CyberApp    Receiver: CyberServer    #####################################################################    Sample Message:    $$-CyberCash-0.8-$$    type: ping    id: myCyberCashID  [optional]    transaction: 123123213    date: 19950121100505.nnn    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$ 
  856.  
  857.    #####################################################################    Explanation:    id optional as persona may not have been set up yet. 
  858.  
  859.  4.5.2 P2 - ping-response 
  860.  
  861.    Description: Response to the P1 light weight ping.  Does no        crypto to minimize overhead. 
  862.  
  863.    #####################################################################    Sender: CyberServer    Receiver: CyberApp    #####################################################################    Sample Message: 
  864.  
  865.    $$-CyberCash-0.8-$$    type: ping-response    id: myCyberCashID  [if present in P1]    transaction: 12312313    date: 19950121100505.nnn    server-date: 19950121100506.nnn    swseverity: fatal/warning  [absent if ok]    swmessage; Tells CyberApp that it is using an obsolete protocol.         Display this text to the user.  [only present if SWSeverity        present]    response-code: success/failure/etc.    message;           Free text of the error/success condition.           This text is to be displayed to the sender 
  866.  
  867.  
  868.  
  869. Eastlake, et al              Informational                     [Page 39] 
  870.  RFC 1898                 CyberCash Version 0.8             February 1996 
  871.  
  872.            by their CyberCash application...    supported-versions: 08.win, 0.81win, 0.8mac    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$ 
  873.  
  874.    #####################################################################    Explanation:    swversion does not appear in P1 for security reasons so        swseverity and swmessage appear only if the server can tell        that things are old from the $$ header protocol version.    supported-versions lets client know as soon as possible what        versions are supported and, by implication, which are not. Does        not compromise security by having client say what version it        is. 
  875.  
  876.  4.5.3 TQ1 - transaction-query 
  877.  
  878.    Description: Client query to server for Transaction status. 
  879.  
  880.    #####################################################################    Sender: CyberApp    Receiver: CyberServer    #####################################################################    Sample Message: 
  881.  
  882.    $$-CyberCash-0.8-$$    id: MyCyberCashID    date: 19950121100505.nnn    transaction: 12312314    cyberkey: CC1001    opaque:     VFaztHuj757Jrv+JxZFsHORy/zgkrxhBCu9cPdE04c1NnXzVlGOHygpSl+UGbUvnhkYl     21QQaHkaE3geccRk03cqFYoLNRCclImcsyeIZCgVt+2dJTj1V+E7R7ePQtCj+0gY42+V     L5BWhVtmDQFyg1DdJ6n3S/er6ZuObAjpcAogG+T1Na5dJmrTA1wRMiYVkqhXi2KMYdur     3U47P8ZGUza7W0MST3DgvviN0kVhtmHEnm515mo6NTQdfdxw9WZpy6vMqrBGk2nTgi2c     bnf+muO0+kiNPXVvEzRrO8o=    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$ 
  883.  
  884.    #####################################################################    Opaque Key: generated from CyberCash encryption key identified in        CyberKey 
  885.  
  886.    #####################################################################    Opaque Section Contents: 
  887.  
  888.    type: transaction-query    swversion: 0.8win    begin-transaction: 1234 
  889.  
  890.  
  891.  
  892. Eastlake, et al              Informational                     [Page 40] 
  893.  RFC 1898                 CyberCash Version 0.8             February 1996 
  894.  
  895.     end-transaction: 4321    signature:     jJfFsKvOxLaV87gxu7lIPet3wIDwh1H2F61reYC9jmUrS6WAtUVFG9aCNuTEBoMixF0X     vD5oPfyheJRIlnL6i0c4o/bfyO3edKAacmWjTmKt6/4y9p3qgvKkSX8r9aym 
  896.  
  897.    #####################################################################    signature is of the following fields: id, date, transaction,        cyberkey, type, swversion, begin-transaction,        end-transaction 
  898.  
  899.    #####################################################################    Explanation:    This is a client status query of a previous transaction or        transactions.    begin-transaction and end-transaction can be the same. 
  900.  
  901.  4.5.4 TQ2 - transaction-cancel 
  902.  
  903.    Description: Client query to server for Transaction        cancellation/status. 
  904.  
  905.    #####################################################################    Sender: CyberApp    Receiver: CyberServer    #####################################################################    Sample Message: 
  906.  
  907.    $$-CyberCash-0.8-$$    id: MyCyberCashID    date: 19950121100505.nnn    transaction: 12312314    cyberkey: CC1001    opaque:     VFaztHuj757Jrv+JxZFsHORy/zgkrxhBCu9cPdE04c1NnXzVlGOHygpSl+UGbUvnhkYl     21QQaHkaE3geccRk03cqFYoLNRCclImcsyeIZCgVt+2dJTj1V+E7R7ePQtCj+0gY42+V     L5BWhVtmDQFyg1DdJ6n3S/er6ZuObAjpcAogG+T1Na5dJmrTA1wRMiYVkqhXi2KMYdur     3U47P8ZGUza7W0MST3DgvviN0kVhtmHEnm515mo6NTQdfdxw9WZpy6vMqrBGk2nTgi2c     bnf+muO0+kiNPXVvEzRrO8o=    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$ 
  908.  
  909.    #####################################################################    Opaque Key: generated from CyberCash encryption key identified in        CyberKey 
  910.  
  911.    #####################################################################    Opaque Section Contents: 
  912.  
  913.  
  914.  
  915.  Eastlake, et al              Informational                     [Page 41] 
  916.  RFC 1898                 CyberCash Version 0.8             February 1996 
  917.  
  918.     type: transaction-cancel    swversion: 0.8win    begin-transaction: 1234    end-transaction: 4321    signature:     kD7DEav2uLQIYMtP9gbhYaBUpB2a5whNwnK2eXbbyTCf56F6dl3DIVf7D8Z4WxbY2YZn     ByRIKeqlhmss7fbdnBiDYmKfOuc+I4bi/Oslml5riaciQhTd2JdHG+PCcHwZ 
  919.  
  920.    #####################################################################    signature is of the following fields: id, date, transaction,        cyberkey, type, swversion, begin-transaction, end-transaction 
  921.  
  922.    #####################################################################    Explanation:    This is a client attempt to cancel a previous transaction or        transactions.    begin-transaction and end-transaction can be the same. 
  923.  
  924.    The transaction-cancel transaction (TQ.2) is defined between the    client and the server.  This transaction permits the client to    query the status of an operation and to stop the operation from    occurring if it has not already occurred. 
  925.  
  926.  4.5.5 TQ3 - transaction-response 
  927.  
  928.    Description: Reports generated by a TQ1 or TQ2 
  929.  
  930.    #####################################################################    Sender: CyberServer    Receiver: CyberApp    #####################################################################    Sample Message: 
  931.  
  932.    $$-CyberCash-0.8-$$    id: mycybercashid    date: 19950121100505.nnn    transaction: 12312314    server-date: 19950121100505.nnn    opaque:     eFXRL+H0J5q318M21wRdtcbhu9WCyLysQkeF9oIcjtbstymx343bbt0EAtU1gcJaUKJZ     3skgvwrhcxU4bFcE68OPlUXAvLq10I3MczPYPsiGrsU0K4bZtQvDZmn727QQAfONBm5s     s1yjIha+Fj481BJQs0CTYc3ju90lAjCYgirXtnnR6yJXoDO75b7UjthvHSnrTWVZvktX     PvTuUCYzbXSFoYvwFM3Y+yHqSHlmWutYKQpYze8zbUSDQfmwTCJyw3aY2JasZ+xMP/CD     JWbCA+gCLBYCnvzM/ExKTZTFD3xr5JBfNbV4p6CiK6lsfRFD7maAK6TSVnWjwCEJNpOv     fyllfWD04fT7LINQcjJiQK1Pk/912Tk6Q35eRaQZorwv2hnY/7By2OkPyFdAqFL+D0H6     TqzxmdEjEFKxi/PPT1+Cs/Nszy8wZzaGg8iWATfARY6stl+02dDhwOoFXSBNvchlVrcI     IlvhumSIQs29Pntj3DbkYo4IEmmN/qi1vnzld22q7lA1q/CQakyc7jlQUFISx76buqwy 
  933.  
  934.  
  935.  
  936. Eastlake, et al              Informational                     [Page 42] 
  937.  RFC 1898                 CyberCash Version 0.8             February 1996 
  938.  
  939.      35XiC9Yn8flE4Va14UxMf2RCR1B/XoV6AEd64KwPeCYyOYvwbRcYpRMBXFLyYgWM+ME1     +yp7c66SrCBhW4Q8AJYQ+5j5uyO7uKyyq7OhrV0IMpRDPjiQXZMooLZOifJPmpvJ66hC     VZuWMuA6LR+TJzWUm4sUP9Zb6zMQShedUyOPrtw1vkJXU1vZ5aI8OJAgUcLEitcD+dsY     Df4CzA00fC10POkJ58HZB/pSBfUrHAa+IqMHyZkV/HBi9TjTwmktJi+8T9orXS0jSvor     dMTGWn0ifETy2VXt    $$-CyberCash-End-0QXqLlNxrn4GNQPPk9AO1Q==-$$ 
  940.  
  941.     #####################################################################    Opaque Key: Session key from TQ1/TQ2 with same Transaction and ID. 
  942.  
  943.    #####################################################################    Opaque Section Contents: 
  944.  
  945.    type: transaction-response    response-code: success/failure/etc.    message; general free form text message from server to        customer....    swseverity: fatal/warning    swmessage; Message indicating that CyberApp software is obsolete.        May be multiple lines.    report-fee: usd 0.15  [if non-zero] 
  946.  
  947.    transaction-1: old-transaction-number    transaction-status-1: success/failure/pending/cancelled/etc.    server-date-1: 19951212125959.nnn    date-1: 19950121100505.nnn    type-1: auth-only/etc. 
  948.  
  949.    #####################################################################    Signature is of the following fields:  no signature 
  950.  
  951.    #####################################################################    Explanation:    Report-fee is the notification that this report cost a fee and is        only present if there is a fee.    There can be multiple transaction for the same transaction number as        there could have been a auth, post-auth-capture, void, etc. 
  952.  
  953.    Terms        "original transaction" refers to the payment or other transaction    that is being queried or canceled.           Note: this transaction may not actually reside at the server.        "request" refers to the requesting TQ.2 or TQ.1 message 
  954.  
  955.    id: id from the request message    date: date from the request message    transaction: transaction from the request message 
  956.  
  957.  
  958.  
  959. Eastlake, et al              Informational                     [Page 43] 
  960.  RFC 1898                 CyberCash Version 0.8             February 1996 
  961.  
  962.     server-date: current date/time    type: transaction-response    response-code: response code for request message, can be one of:        "success" means the request message was processed.  Does not imply        query or cancellation status of the request.        "failure-hard" means that the request message was not processed        due to being ill-formed or otherwise inoperable.        "failure-swversion" means that the request message was not        processed due to software revision problems.    message: the message applies only to the TQ transaction, not to the        status of the transactions being queried or canceled.  The        message is provided according to the response-code as: "success"        - message is omitted. "failure-hard" - use standard hard failure        message. "failure-swversion" - use standard swversion message for        fatal    swseverity: applies to request message    swmessage: applies to request message     -- per query/cancel fields ('N' is a series from 1 to N) --    transaction-N: transaction number of original transaction, or if        the original transaction is not present in server the transaction        number that the query / cancel request refers to    transaction-status-N: status of original transaction, may be one of:        "success" the original transaction was successfully processed.        If request was TQ.2, cancellation is not performed.        "failure" the original transaction was not successfully processed.         If request was TQ.2, cancellation is not performed (however,        there is nothing to cancel, so it's all the same to the customer        app).        "pending" the original transaction is still being processed and        final disposition is not known.    "canceled" the original transaction has been canceled by the server.        Later arrival of the original transaction will not be processed,        but will be returned with a "failure-canceled" returned.    server-date-1: server-date field from original transaction or        omitted if original transaction is not present in the server"    date-1: date field from original transaction or omitted if original        transaction is not present in the server"    type-1: type field from original transaction or omitted if original        transaction is not present in the server" 
  963.  
  964.  4.5.6 UNK1 - unknown-error 
  965.  
  966.    Description: This is the response sent when the request is so        bad off you can't determine what type it is or the type is        unknown to you.  Sent from Merchant to Client or from Server        to Merchant or from Server to Client. 
  967.  
  968.   
  969.  
  970. Eastlake, et al              Informational                     [Page 44] 
  971.  RFC 1898                 CyberCash Version 0.8             February 1996 
  972.  
  973.     #####################################################################    Sender: MerchantApp or CyberServer    Receiver: CyberApp or MerchantApp    #####################################################################    Sample Message: 
  974.  
  975.    $$-CyberCash-0.8-$$    type: unknown-error    unknown-error-message:        Text message of error condition to display to user.  (CyberCash        wrapper not found, wrapper integrity check fails, unknown protocol        version specified, unknown type specified, etc.)    {    server-date: 19950121100506.nnn  [if sent by server]    }        or    {    merchant-date: 19950121100506.nnn  [if sent by merchant]    }    x-id: mycybercashID    x-transaction: 123123213    x-date: 19950121100505.nnn    x-cyberkey: CC1001    x-opaque:     2DqiOQfGRZjzddWpEZwGsJnoTsp9Yiri8DE9cPUMPsJ7lTFuE4XHi4QfN2cAipDB2G/G     9hr7Hj4u4xfMky7nPvJurClZejkI8eNp8iXLtrfS4DhR4yCFQjCiKk0dh83p+DDsFVV7     TI3Du2B15sQS+SdaoPwkfVDnJv4Y+b7vu2cN7bG7exCkBapBcJZbReNaWX5sf+U8ypfw     5V6QdMOzNXpef3z+cTTWfGOtmn9T1Pwo1Yi9ObyIf/wiK+IPb+bBZ9UwLZSB+qVMfJmX     GnHXO3AnA/PD+jKYCtsm2Gxv2WB3CuezOyzPtORuqLp5ubgnLBF9aBBjxwLdbn+cp5sm     lw51IHbmo1Jj7H6wyNnRpEjy4tM73jcosBfGeQDHxgyH1uaiFNr2D+WvmuYo7eun2dsy     Wve2O/FwicWHvkg5aDPsgOjzetsn1JCNZzbW    $$-CyberCash-End-7Tm/djB05pLIw3JAyy5E7A==-$$ 
  976.  
  977.    #####################################################################    Opaque Key: see explanation 
  978.  
  979.    #####################################################################    Opaque Section Contents: see explanation 
  980.  
  981.    #####################################################################    Signature is of the following fields: see explanation 
  982.  
  983.    #####################################################################    Explanation:    This message is sent as a response when you can't find or understand        even the type of a message to you.  It will always have type and        unknown-error-message fields at the beginning.  Any fields from        the request that are parseable are simply echoed back in the UNK1 
  984.  
  985.  
  986.  
  987. Eastlake, et al              Informational                     [Page 45] 
  988.  RFC 1898                 CyberCash Version 0.8             February 1996 
  989.  
  990.         message with "x-" prefixed to it.  Thus, if an x-opaque appears,        it was whatever the opaque was in the original request, etc.  If        you can decrypt the opaque section, you don't want to put the        results here in the clear!    {}'s in the first column are to group alternatives only and do not        appear in the message.    Since the customer originates exchanges with merchant and server        and merchant originates exchanges with server, this message        will only be emitted from the merchant to the customer or the        server to the customer or merchant. It should generally just        be logged for debugging purposes.    You may need to watch out for denial of service via forged or        replayed UNK1 messages. 
  991.  
  992.  4.5.7 DL1 - diagnostic-log 
  993.  
  994.    Description: Client diagnostic log of bad message from either        merchant or server. 
  995.  
  996.    #####################################################################    Sender: CyberApp    Receiver: CyberServer    #####################################################################    Sample Message: 
  997.  
  998.    $$-CyberCash-0.8-$$    id: MyCyberCashID    date: 19950121100505.nnn    transaction: 1234    cyberkey: CC1001    opaque:     2DqiOQfGRZjzddWpEZwGsJnoTsp9Yiri8DE9cPUMPsJ7lTFuE4XHi4QfN2cAipDB2G/G     9hr7Hj4u4xfMky7nPvJurClZejkI8eNp8iXLtrfS4DhR4yCFQjCiKk0dh83p+DDsFVV7     TI3Du2B15sQS+SdaoPwkfVDnJv4Y+b7vu2cN7bG7exCkBapBcJZbReNaWX5sf+U8ypfw     5V6QdMOzNXpef3z+cTTWfGOtmn9T1Pwo1Yi9ObyIf/wiK+IPb+bBZ9UwLZSB+qVMfJmX     GnHXO3AnA/PD+jKYCtsm2Gxv2WB3CuezOyzPtORuqLp5ubgnLBF9aBBjxwLdbn+cp5sm     lw51IHbmo1Jj7H6wyNnRpEjy4tM73jcosBfGeQDHxgyH1uaiFNr2D+WvmuYo7eun2dsy     Wve2O/FwicWHvkg5aDPsgOjzetsn1JCNZzbW    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$ 
  999.  
  1000.    #####################################################################    Opaque Key: generated from CyberCash encryption key identified in        CyberKey 
  1001.  
  1002.    #####################################################################    Opaque Section Contents: 
  1003.  
  1004.  
  1005.  
  1006.  Eastlake, et al              Informational                     [Page 46] 
  1007.  RFC 1898                 CyberCash Version 0.8             February 1996 
  1008.  
  1009.     type: diagnostic-log    message: incorrect order-id    swversion: 0.8win 
  1010.  
  1011.    x-type: original-message-type    x-transaction: original-transaction-number    x-opaque: [if can't decrypt]     9/eFiJK5tLizsoeSmpW7uLS8/7iio7Wisfv38biio7uyufv3tfv35uH+7N3d9/exuKX3     5+z3vuu4oqO7srnsvvz8/venoqO0v7al/7iio7WisYy+iv7s3ff3p6KjtL+2pf/wi7nw 
  1012.  
  1013.    #####################################################################    Explanation:    Client application does not expect a response for this message. The        decrypted original message will be in the opaque section unless        decryption fails. If decryption fails then un-decrypted opaque        in the original will be sent.    This message will be sent to a different script or socket or host        than normal messages so that it will just be absorbed and never        generate an UNK1 response or anything, even if this message        itself is screwed up. 
  1014.  
  1015.  4.5.8 DL2 - merchant-diagnostic-log 
  1016.  
  1017.    Description: Merchant diagnostic log of bad message from  server. 
  1018.  
  1019.    #####################################################################    Sender: CyberMerchant    Receiver: CyberServer    #####################################################################    Sample Message: 
  1020.  
  1021.    $$-CyberCash-0.8-$$    merchant-ccid: MyCyberCashID    merchant-transaction: 1234    merchant-date: 19950121100505.nnn    merchant-cyberkey: CC1001    merchant-opaque:     2DqiOQfGRZjzddWpEZwGsJnoTsp9Yiri8DE9cPUMPsJ7lTFuE4XHi4QfN2cAipDB2G/G     9hr7Hj4u4xfMky7nPvJurClZejkI8eNp8iXLtrfS4DhR4yCFQjCiKk0dh83p+DDsFVV7     TI3Du2B15sQS+SdaoPwkfVDnJv4Y+b7vu2cN7bG7exCkBapBcJZbReNaWX5sf+U8ypfw     5V6QdMOzNXpef3z+cTTWfGOtmn9T1Pwo1Yi9ObyIf/wiK+IPb+bBZ9UwLZSB+qVMfJmX     GnHXO3AnA/PD+jKYCtsm2Gxv2WB3CuezOyzPtORuqLp5ubgnLBF9aBBjxwLdbn+cp5sm     lw51IHbmo1Jj7H6wyNnRpEjy4tM73jcosBfGeQDHxgyH1uaiFNr2D+WvmuYo7eun2dsy     Wve2O/FwicWHvkg5aDPsgOjzetsn1JCNZzbW    $$-CyberCash-End-kchfiZ5WAUlpk1/v1ogwuQ==-$$ 
  1022.  
  1023.    ##################################################################### 
  1024.  
  1025.  
  1026.  
  1027. Eastlake, et al              Informational                     [Page 47] 
  1028.  RFC 1898                 CyberCash Version 0.8             February 1996 
  1029.  
  1030.     Opaque Key: generated from CyberCash encryption key identified in        CyberKey 
  1031.  
  1032.    #####################################################################    Opaque Section Contents: 
  1033.  
  1034.    type: merchant-diagnostic-log    server-date:  19950121100505.nnn  [optional]    message: incorrect order-id 
  1035.  
  1036.    x-type: original-message-type    x-transaction: original-transaction-number    x-opaque: [if can't decrypt]     9/eFiJK5tLizsoeSmpW7uLS8/7iio7Wisfv38biio7uyufv3tfv35uH+7N3d9/exuKX3     5+z3vuu4oqO7srnsvvz8/venoqO0v7al/7iio7WisYy+iv7s3ff3p6KjtL+2pf/wi7nw 
  1037.  
  1038.    #####################################################################    Explanation:    Merchant application does not expect a response for this message. The        decrypted original message will be in the opaque section unless        decryption fails. If decryption fails then un-decrypted message        will be sent.    This message will be sent to a different script or socket or host        than normal messages so that it will just be absorbed and never        generate an UNK1 response or anything even if this message        itself is screwed up. 
  1039.  
  1040.  4.6 Table of Messages Described 
  1041.  
  1042.    The following 31 messages are described in this document. 
  1043.  
  1044.    C = Customer App, M = Merchant App, S = CyberCash Server 
  1045.  
  1046.    FLOW  SECTION  NAME 
  1047.  
  1048.    C->S   4.2.1   BC.1 bind-credit-card    S->C   4.2.2   BC.4 bind-credit-card-response 
  1049.  
  1050.    C->M   4.3.2   CH.1 credit-card-payment    M->C   4.3.3   CH.2 credit-card-response 
  1051.  
  1052.    M->S   4.4.8   CD.1 card-data-request    S->M   4.4.9   CD.2 card-data-response 
  1053.  
  1054.    M->S   4.4.1   CM.1 auth-only    M->S   4.4.2   CM.2 auth-capture    M->S   4.4.3   CM.3 post-auth-capture 
  1055.  
  1056.  
  1057.  
  1058. Eastlake, et al              Informational                     [Page 48] 
  1059.  RFC 1898                 CyberCash Version 0.8             February 1996 
  1060.  
  1061.     M->S   4.4.4   CM.4 void    M->S   4.4.5   CM.5 return    S->M   4.4.6   CM.6 charge-action-response 
  1062.  
  1063.    C->S   4.5.7   DL.1 diagnostic-log    M->S   4.5.7   DL.2 merchant-diagnostic-log 
  1064.  
  1065.    C->S   4.1.3   GA.1 get-application    S->C   4.1.4   GA.2 get-application-response 
  1066.  
  1067.    M->S   4.4.7   MM.1 merchant-auth-only    M->S   4.4.7   MM.2 merchant-auth-capture    M->S   4.4.7   MM.3 merchant-post-auth-capture    M->S   4.4.7   MM.4 merchant-void    M->S   4.4.7   MM.5 merchant-return    S->M   4.4.7   MM.6 merchant-charge-action-response 
  1068.  
  1069.    C->S   4.5.1   P.1 ping    S->C   4.5.2   P.2 ping-response 
  1070.  
  1071.    M->C   4.3.1   PR.1 payment-request 
  1072.  
  1073.    C->S   4.1.1   R.1 registration    S->C   4.1.2   R.2 registration-response    C->S   4.5.3   TQ.1 transaction-query    C->S   4.5.4   TQ.2 transaction-cancel    S->C   4.5.5   TQ.3 transaction-response 
  1074.  
  1075.    S->C, S->M, M->C           4.5.6   UNK.1 unknown-error 
  1076.  
  1077. 5. Future Development 
  1078.  
  1079.    CyberCash is extending the facilities available through the CyberCash    system.  We are committed to implementing a full cash system,    including efficient transfer of small amounts of money, the extension    of the credit card system to handle terminal capture and clearances,    and other improvements. 
  1080.  
  1081. 5.1 The Credit Card Authorization/Clearance Process 
  1082.  
  1083.    There are six steps in credit card processing as listed below.  The    first four are always involved if a transacation is completed.  The    fifth and sixth are optional. 
  1084.  
  1085.    (1) authorization: merchant contacts their acquiring back which        normally contacts the card issung bank and returns to the        merchant an approval/guarantee or a disapproval.  This 
  1086.  
  1087.  
  1088.  
  1089. Eastlake, et al              Informational                     [Page 49] 
  1090.  RFC 1898                 CyberCash Version 0.8             February 1996 
  1091.  
  1092.         temporarily decreases the available credit on the card.    (2) capture: the charge information for a purchase is entered by        the merchant into a batch.    (3) clearance: a batch of items is processed.  This actually causes        the items in the batch to appear on credit card statements as        sent by the issuing bank to its carholders.    (4) settlement: the actual interbank transfer of net funds.    (5) void: the merchant undoes step 2 (or 6) and causes a charge (or        credit) to be removed from a batch.  Must be done before the        batch is processed.    (6) credit: the merchant causes a "negative charge" or credit to be        entered into a batch.  This will appear on the cardholders        statement. 
  1093.  
  1094.    The fourth step, settlement, is entirely within the banking community    and does not concern us here.  CyberCash 0.8 provides messages to do    1, 1&2, 2, 5, and 6.  This is adequate for credit card processor    systems where the batch is accumulated at the bank or between the    bank and the merchant.  CyberCash 0.8 supports such "host capture"    systems.  Other credit card processor systems require the merchant to    accumulate the batch.  Such systems are frequently referred to as    "terminal capture".  This makes actions 2, 5, and 6 internal to the    merchant but requires messages to perform action 3.  Such batch    clearance messages will be included in future versions of the    CyberCash merchant and server software. 
  1095.  
  1096. 5.2 Lessons Learned 
  1097.  
  1098.    The continuing rapid development of the CyberCash system is an    interesting experience.  The system must deal with many existing    browsers and legacy banking systems.  Existing credit card processors    that convey transactions to acquiring banks have complex and varied    interfaces.  The sophistication of security attacks on the Internet    is growing rapidly. 
  1099.  
  1100.    In the face of such a rapidly changing environment, it was essential    to adopt a general message framework so that messages and fields    could be added as they were found necessary.  Any attempt to reduce    the system to a small number of perfectly opimized messages in    advance would have doomed the system to failure.  (As of mid-October    1995, the total number of CyberCash messages defined, including those    planned for cash and microcash, enhancements to the credit card    system, and some old messages being phased out in favor of improved    replacements, is just over a hundred.) 
  1101.  
  1102.    Flexible operational and error handing facilities are also, as usual,    the bulk of the system.  Version numbering and tracking has proved to    be quite important and merchant versioning is being added. 
  1103.  
  1104.  
  1105.  
  1106. Eastlake, et al              Informational                     [Page 50] 
  1107.  RFC 1898                 CyberCash Version 0.8             February 1996 
  1108.  
  1109.     Use of text for messages has proven very beneficial.  This makes it    possible to easily deal with messages using common everyday tools    such as text editors and spead sheets.  Use of binary TLV (type,    length, value) encoding or the like is certainly possible but imposes    a significantly higher level of complexity on every tool that has to    deal with the messages. 
  1110.  
  1111.    Encryption and decryption impose some difficulties in development.    Any confusion about decryption keys or algorithms will render    encrypted material meaningless and tools are needed to provide    decyrption for debugging outside of normal program operation.  But    this pales compared with the stringencies imposed by signatures.  All    parts of the system must have absolutely identical ideas as to the    exact bit patterns to be hashed or signed and their exact order.    Seemingly trivial differences in capitalization, punctuation,    framing, order, or the like, in addition to any disagreement about    keys or algorithms, will lead to frustrating failures of signatures    to match.  Passing signatures through an intermediate system and    checking them at a third system, as is done when a customer's    signature is passed through a merchant and checked at the CyberCash    server, compounds the problem. 
  1112.  
  1113. 6. Security Considerations 
  1114.  
  1115.    The CyberCash Version 0.8 Credit Card system provides substantial    protection to payment messages as described above in sections 1.2,    2.2.4, and 2.2.5.  However, it provides no privacy to the shopping    interaction which is essentially outside of its purview.  It also    provides no protection against dishonest merchants other than those    normally available with credit card purchases.  Care must be taken to    avoid loss of control of the machines on which parts of this system    runs or security may be compromised. 
  1116.  
  1117.    Current credit card dispute  resolution  systems  require  deliberate    bypasses be implemented for some of the security normally established    by CyberCash as described in section 3.4. 
  1118.  
  1119. References 
  1120.  
  1121.    [ISO 4217] - Codes for the representation of currencies and funds 
  1122.  
  1123.    [ISO 8583] - Financial transaction card originated messages -    Interchange message specifications, 1993-12-15. 
  1124.  
  1125.    [RFC 822] - Crocker, D., "Standard for the format of ARPA Internet    text messages", STD 11, RFC 822, UDEL, August 1982. 
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131. Eastlake, et al              Informational                     [Page 51] 
  1132.  RFC 1898                 CyberCash Version 0.8             February 1996 
  1133.  
  1134.     [RFC 1521] - Borenstein, N., and N. Freed, "MIME (Multipurpose    Internet Mail Extensions) Part One: Mechanisms for Specifying and    Describing the Format of Internet Message Bodies", RFC 1521,    Bellcore, Innosoft, September 1993. 
  1135.  
  1136.    [RFC 1766] - Alvestrand, H., "Tags for the Identification of    Languages", UNINETT, March 1995. 
  1137.  
  1138. Authors' Addresses 
  1139.  
  1140.    Donald E. Eastlake 3rd    CyberCash, Inc.    318 Acton Street    Carlisle, MA 01741 USA 
  1141.  
  1142.    Phone:   +1 508 287 4877    EMail:   dee@cybercash.com 
  1143.  
  1144.     Brian Boesch    CyberCash, Inc.    2100 Reston Parkway, Suite 430    Reston, VA 22091 USA 
  1145.  
  1146.    Phone:   +1 703-620-4200    EMail:   boesch@cybercash.com 
  1147.  
  1148.     Steve Crocker    CyberCash, Inc.    2100 Reston Parkway, Suite 430    Reston, VA 22091 USA 
  1149.  
  1150.    Phone:   +1 703-620-4200    EMail:   crocker@cybercash.com 
  1151.  
  1152.     Magdalena Yesil    CyberCash, Inc.    555 Twin Dolphin Drive, Suite 570    Redwood City, CA 94065 USA 
  1153.  
  1154.    Phone:   +1 415-594-0800    EMail:   magdalen@cybercash.com 
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162. Eastlake, et al              Informational                     [Page 52] 
  1163.  
  1164.