v1

latestOpenAPI 3.0.32026-07-26208618579.9 KB
PIN operations with pre-shared key

Set PIN

This operation sets PIN with encrypted PIN block in ISO format 1. The PIN block is encrypted using a pre-shared double-length 3DES key.

Example

// PIN 1234 in ISO format 1
var pinBlock = "141234AAAAAAAAAA";
// pre-shared zpk
var zpk = Hex.decode("00112233445566778899AABBCCDDEEFF0011223344556677");
// encrypt pinBlock with zpk
var des = Cipher.getInstance("DESede/ECB/NoPadding");
des.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(zpk, "DESede"));
var encryptedPinBlock = Hex.toHexString(des.doFinal(Hex.decode(pinBlock)));
// make request
pinApiClient.post()
        .uri("/pin/v2/{plasticId}?auditUser={user}", 123456, "test")
        .bodyValue(Map.of(
                "zpkIndex", "0",
                "pinBlock", encryptedPinBlock
        ))
        .retrieve()
        .bodyToMono(Object.class)
        .block();
post/v2/{plasticId}

Path parameters

plasticIdstring biginteger required

The plastic id for given card

Query parameters

auditUserstring required

The audit user to log the request

Request body

zpkIndexstring required

The PIN encryption key (ZPK) index. This index is used to point out which key to use in case there are multiple keys available.

pinBlockstring required

ISO format 1 PIN block 3DES encrypted with PIN encryption key in hexadecimal.

Example request

{
  "zpkIndex": "0",
  "pinBlock": "0123456789ABCDEF"
}

Response

PIN set successfully

SetPinResponse required