Payment
...
Appendices
Common operations
9 min
this appendix provides code examples demonstrating typical cryptographic operations performed using the excrypt security module adapter with your hsm calculate cvv (visa) smadapter\<securekey> adapter = createadapter(); securedeskey cvka = new securedeskey(smadapter length des, smadapter type cvk, "47569324523156ed", "000000"); securedeskey cvkb = new securedeskey(smadapter length des, smadapter type cvk, "31ef061469307970", "000000"); string cvv = adapter calculatecvd("4111111111111", cvka, cvkb, "2512", "000"); validate cvv (visa) string pan = "4111111111111"; string exp = "2512"; string servicecode = "000"; string cvv = "588"; securedeskey cvka = new securedeskey(smadapter length des, smadapter type cvk, "47569324523156ed", "000000"); securedeskey cvkb = new securedeskey(smadapter length des, smadapter type cvk, "31ef061469307970", "000000"); smadapter\<securekey> adapter = createadapter(); adapter verifycvd(pan, cvka, cvkb, cvv, exp, servicecode); calculate cvc (mastercard) string pan = "5555444433331111"; string exp = "2512"; string servicecode = "000"; string cvk = "47569324523156ed31ef061469307970"; excryptadapter adapter = createadapter(); string cvv = adapter calculatecvcmastercard(pan, exp, servicecode, cvk); validate cvc (mastercard) string pan = "5555444433331111"; string exp = "2512"; string servicecode = "000"; string cvk = "47569324523156ed31ef061469307970"; string cvv = "267"; excryptadapter adapter = createadapter(); adapter verifycvcmastercard(pan, exp, servicecode, cvv, cvk); generating a new working key string kek = "042faedf91fe6ed67f97982ce545401c"; // kek under mfk excryptadapter adapter = createadapter(); string\[] r = adapter generateworkingkey(kek, "pek"); string keyundermfk = r\[0]; // new key under mfk string keyunderkek = r\[1]; // new key under kek string kcv = r\[2]; // check digits translating a pin block smadapter\<securekey> adapter = createadapter(); string pan = "5556543210123455"; // get the last 12 digits, excluding the check digit pan = pan substring(0, pan length() 1); pan = isoutil takelastn(pan, 12); encryptedpin pinunderzpk1 = new encryptedpin(); pinunderzpk1 setaccountnumber(pan); pinunderzpk1 setpinblock(isoutil hex2byte("0e3fccb186078f16")); // incoming pin block pinunderzpk1 setpinblockformat(smadapter format01); securedeskey zpk1 = new securedeskey(smadapter length des3 2key, smadapter type zpk, "69901bdf941207303b41d17aff85d60c", "000000"); securedeskey zpk2 = new securedeskey(smadapter length des3 2key, smadapter type zpk, "bda3222ff277198e87d994795f9c4902", "000000"); encryptedpin pinunderzpk2 = adapter translatepin(pinunderzpk1, zpk1, zpk2, smadapter format01); system out println(isoutil byte2hex(pinunderzpk2 getpinblock())); // pin block under zpk 2 encrypt a clear pin under key encrypt key ( {{kek}} ) string kek = "69901bdf941207303b41d17aff85d60c"; string pan = "4111111111111111"; string pin = "1234"; excryptadapter adapter = createadapter(); string encpinblk = adapter encryptpin(pan, pin, zpk1); // returns pin block in hex arqc validation string pan = "123456789012"; string psn = "10"; securedeskey imkac = new securedeskey(smadapter length des3 2key, smadapter type mk ac, "12345678901234561234567890123456", "000000"); byte\[] atc = isoutil hex2byte("abcd"); byte\[] txndata = isoutil hex2byte("deadbeefdeadbedead"); byte\[] arqc = isoutil hex2byte("a8f6741a34f1a6b2"); byte\[] upn = isoutil hex2byte("1234abcd"); smadapter\<securekey> adapter = createadapter(); boolean isvalid = adapter verifyarqc(mkdmethod option a, skdmethod mchip, imkac, pan, psn, arqc,atc, upn, txndata); arqc validation and arpc generation string pan = "123456789012"; // last 12 bytes, excluding check digit string psn = "10"; securedeskey imkac = new securedeskey(smadapter length des3 2key, smadapter type mk ac,"12345678901234561234567890123456", "000000"); byte\[] atc = isoutil hex2byte("abcd"); byte\[] txndata = isoutil hex2byte("deadbeefdeadbedead"); byte\[] arqc = isoutil hex2byte("a8f6741a34f1a6b2"); byte\[] upn = isoutil hex2byte("1234abcd"); smadapter\<securekey> adapter = createadapter(); byte\[] arpc = adapter verifyarqcgeneratearpc(mkdmethod option a, skdmethod mchip, imkac, pan, psn, arqc, atc, upn, txndata, arpcmethod method 1, isoutil hex2byte("0012"), null)