verify_pin_data
Verify a cardholder PIN against a stored IBM 3624 offset or Visa PVV at an issuer host, supporting multiple PIN block formats and encryption key types.
Instructions
Call this when implementing PIN verification at an issuer host — checking a cardholder-entered PIN against a stored IBM 3624 offset or Visa PVV. Also use to validate PIN verification logic end-to-end before deploying to production.
Verify a cardholder PIN against a stored PIN verification value.
Supported key types: verification_key_identifier: V1 (IBM3624) or V2 (Visa) PVK encryption_key_identifier: P0 PIN Encryption Key or B0 BDK (DUKPT)
primary_account_number is optional for ISO_FORMAT_1 (which does not include PAN).
dukpt_attributes (when encryption_key_identifier is a BDK): {"KeySerialNumber": "", "DukptKeyDerivationType": "AES_128"}
Args: verification_key_identifier: ARN or alias of PVK encrypted_pin_block: Hex-encoded encrypted PIN block encryption_key_identifier: ARN or alias of PEK or BDK (or KEK for wrapped key) verification_attributes: Scheme-specific verification params (mirrors generate_pin_data) pin_block_format: ISO_FORMAT_0, ISO_FORMAT_1, ISO_FORMAT_3, or ISO_FORMAT_4 primary_account_number: 12-19 digit PAN (required for all formats except ISO_FORMAT_1) pin_data_length: Optional PIN length override dukpt_attributes: Required when encryption_key_identifier is a BDK encryption_wrapped_key: Optional TR-31 wrapped PEK (encryption_key_identifier becomes the KEK)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pin_data_length | No | ||
| dukpt_attributes | No | ||
| pin_block_format | Yes | ||
| encrypted_pin_block | Yes | ||
| encryption_wrapped_key | No | ||
| primary_account_number | No | ||
| verification_attributes | Yes | ||
| encryption_key_identifier | Yes | ||
| verification_key_identifier | Yes |