This operation retrieves temporary PIN enryption key used for setting PIN. Returned tzpk is encrypted with the provided RSA public key.
// generate RSA key pair var kpg = KeyPairGenerator.getInstance(“RSA”); kpg.initialize(1024); var keyPair = kpg.generateKeyPair(); var publicKey = Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded());
// controlId received from pincontrol API var controlId = “83fa5f55-3dd7-453a-8233-4242a6bad179”;
// public RSA key, generated by the card-holder device in Step 1 var publicKey = // fetched from the device
// make request var tzpkResponse = pinApiClient.post() .uri(“/pin/v2/set/tzpk?auditUser=”, “test”) .bodyValue(Map.of( “controlId”, controlId, “publicKey”, publicKey )) .retrieve() .bodyToMono(TzpkResponse.class) .block();
// response from the API call done in Step 2, given by the backend var tzpkResponse = // given by the backend
// decrypt tzpk with private key var rsa = Cipher.getInstance(“RSA/ECB/NoPadding”); rsa.init(Cipher.DECRYPT_MODE, keyPair.getPrivate()); var decryptedTzpk = rsa.doFinal(Base64.getDecoder().decode(tzpkResponse.getTzpk())); // convert double-length key to triple-length - used if the library support only triple-length 3DES var tzpk = new byte[24]; System.arraycopy(decryptedTzpk, 0, tzpk, 0, 16); System.arraycopy(decryptedTzpk, 0, tzpk, 16, 8);
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
The audit user to log the request
The related PIN control request data
Control ID received from PIN control API.
"83fa5f55-3dd7-453a-8233-4242a6bad179"
RSA public key under which the received temporary PIN encryption key (tzpk) will be encrypted. Key should be base64-encoded, without any begin or end markers.
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDP7yu/kPSEPHjqsUYIfarstoX4mx9PeJPZl/2zYFbN3dOAk0YnJYYC5udW+fkfNoaj2cf20XMrXGAatK/N30P9YoksJg8SINss+zn+/suDL/cRDXnVvYUn8fHwMcNNFYx7RbpYGaZHqshp5D96yfTTESu90nP8wrnjXH8iY4JIewIDAQAB"
Temporary PIN encryption key, encrypted using the RSA public key provided. Base64 encoded.
"i6IWYm4FzTTBrtGF0FFdcHjEEQh8X3qCUcKkNgIXs2R4jLhECfoUHULWoyUu8T9R90MFZnPOuY5tel1Pww4iyKpRG2ChAwPWaHO2g0j9/xKYDBQHY57HklwBdazp03qU9vJIbmwpEOkrJIW1AW7FpypY4amoO565bCg2WfyG69U="