Протокол для работы с кредитными картами CyberCash




Оттиски (Thumbprints) - часть 61


Сообщение же PRes может быть прислано до выполнения авторизации и оплаты. Если владелец карты обладает сертификатом, то для обеспечения целосности и аутентичности сообщения выполняется двойная подпись.

PReq представляет собой наиболее сложное сообщение в протоколе. Оно состоит из двух частей: инструкции-заказа OI (Order Instruction) для продавца и платежной инструкции PI (Payment Instruction), которая проходит транзитом через продавца в расчетный центр. Эти две части принципиально должны подписываться независимо. Продавец получает описание заказа OD (Order Description) и PurchAmt. В PI включаются хэши OD и PurchAmt (HODINput). Расчетный центр проверяет, что хэш передан покупателем (владельцем карты) через продавца и равен хэшу, выданному продавцом в AuthReq. Некоторые владельцы карт могут не иметь сертификатов. Сообщения от таких владельцев не будут подписаны, вместо этого PIHead связывается с OIData. Целостность таких сообщений обеспечивается следующими мерами:

  • C PI используется OAEP

  • В блок OAEP включается H(PIHead) (вместе с PANData)

  • С PIHead используется H(OIData)

  • Расчетным центром производится сравнение H(OIData), присланного продавцом, с H(OIData) из PIHead.

Владелец карты формирует сообщение PReq следующим образом (эти действия предпринимаются как для PReqUnsigned так и для PreqDualSigned).

ШагДействие
1Извлечь PurchAmt и OD
2Сформировать OIData следующим образом:
a)Если имел место обмен PInitReq/ PInitRes:Скопировать TransIDs из PInitRes
В противном случае:Для формирования TransIDs владелец карты сгенерирует PreqDate (текущие дата/время), LID-C и XID
b)Сформировать новый RRPID, запомнить его значение для сверки с откликом продавца
Если имел место обмен PInitReq/PInitRes:Скопировать Chall-c из PInitRes
В противном случае:Сформировать новый Chall-C
c)Сформировать новый ODSalt
d)

Сформировать HODInput посредством следующей процедуры:

  • Скопировать OD из данных процесса инициализации SET

  • Записать PurchAmt cо значением, одобренным владельцем карты на фазе инициации SET.

  • Скопировать ODSalt из пункта 2 с)

  • Если владелец карты намерен выполнить инсталляцию или последовательные платежи, то записать InstallRecurData

  • Опционно: добавить любые ODExtensions

e)Сформировать HOD с HODInput из пункта 2 d
f)Если имел место обмен PInitReq/ PInitRes:Скопировать Chall-M из PInitRes и не заполнять BrandID
В противном случае:

Не заполнять Chall-M
Записать BrandID, указав предпочтительный тип карты

g)Произвести записьв поле BIN с HODInput из пункта 2d
h)

Если HODInput из шага 2.d имеет какие-то расширения OIExtensions, внести ODExtOIDs со всеми OID в ODExtensions. ODExtOIDs будут перечислены в том же порядке, что и расширения ODExtensions, таким образом продавец сможет вычислить тот же самый хэш

i)Опционно: добавить любые расширения OIExtensions.
3Сформировать PIHead следующим образом:
a)Скопировать TransIDs, вычисленные в пункте 2.а
b)

Сгенерировать Inputs согласно процедуре:

  • Скопировать HOD из пункта 2.е

  • Скопировать PurchAmt из шага 2.d.2

c)Скопировать MerchandID из сертификата продавца в PInitRes, или из CD-ROM-каталога
d)Скопировать InstallRecurData из пункта 2.d.4 (если имеется)
e)

Сформировать TransStain, как HMAC, используя XID в качестве данных и CardSecret - в качестве ключа. Если владелец карты не имеет сертификата, использовать CardSecret, заполненный нулями.

f)

Записать SWIdent, который получен из локальных данных. Это значение будет соответствовать коду в цифровом конверте сообщения

g)

Если присутствует туннельное расширение Cert_PE, сформировать AcqBackInfo следующим образом:

  1. Найти туннельное расширение для алгоритма шифрования, приемлемое для владельца карты. Если такое найдено, заполнить AcqBackAlg, в противном случае, не формировать AcqBackInfo и перейти к пункту f.

  2. Сформировать новый AcqBackKey (приемлемый для AcqBackAlg)

h)Опционно добавить любые PIExtensions
4Сформировать PANData
5

Сгенерировать PU-OIData c L-оператором, используя PIHead из пункта 3 (параметр t1) и OIData из пункта 2 (параметр t2)

6

Используя результат пунктов 2, 3 и 4, сгенерировать PreqDualSigned, если владелец карты имеет сертификат или PreqUnsigned, если сертификата нет.




Содержание  Назад  Вперед