feat: Add Application Cryptogram Spec #499
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Quick summary
In an online authorization scenario, an ARQC (Authorization ReQuest Cryptogram ) is generated on the card chip, forwarded to the card scheme, and later validated by the Issuer. To perform an adequate validation, the issuer needs to consider:
different cryptogram algorithm (versions)
a different collection of data that might be part of the cryptogram
This PR aims to create a set of components that could simplify the process of validating an ARQC and generating the adequate ARPC (Application Response Cryptogram) in a version-agnostic approach.
Implementation details
We are proposing a set of java components that could be able to:
Validate the cryptogram with a version-agnostic approach.
Automatically detect the cryptogram version (particularly useful for environment where several cryptogram version might coexist).
Give flexibility to the set of data elements used for the cryptogram validation.
These requirements could be better appreciated in this sample code:
To cover these requirements, the following changes are added:
Interfaces are added to generically represent the different cryptogram generation algorithms. Additionally, an interface is created that represents the set of data used by the different algorithms to generate the cryptogram.
Specification of the application cryptogram generation algorithm used by M/Chip and VISA are added.
Support to detect the specifications of the cryptogram generation algorithm is added, It is using the format and CVN information contained in IAD.