EMV CVM Results - chuwuwang/ReadingNote GitHub Wiki

If you have "lame" EMV kernel which don't provide CVM output for CTLS then your only option is to parse it from transaction output. Unfortunately every card issuer using their specific way of "handling" CVM output.

Step 1

Determine card issuer and card type. Use AID (tag 4F) to do it.

Step 2

  • Visa and UnionPay EMV - you need to parse tag 9F6C - Card Transaction Qualifiers where Byte 1 bit 8 set to 1 means Online PIN. Byte 1 bit 7 set to 1 means Signature.

  • JCB EMV - (JCB have 2 other modes but it's not in use in my region. Possibly it's already deprecated for whole world.) you need to parse tag 9F50 - Cardholder verification status where 00 means No CVM. 10 means Signature. 20 means Online PIN.

  • MasterCard EMV - (MasterCard have also MSR mode but it's not in use in my region) you need to parse tag 9F34 - CVM Results. This is same tag as for contact transactions so just check and follow contact EMV book rules.

  • MasterCard Mobile - I'm not 100% sure but it has to be same as for MasterCard EMV.

  • Amex EMV - parse tag 95 - Terminal Verification Result. When Byte 3 bit 3 is set to 1 then CVM is Online PIN else No CVM.

  • Amex Mobile - parse tag 9F71 - Mobile CVM Results. Check corresponding EMV Contactless book for specs.

  • For other issuers you have to check corresponding EMV Contactless books.