mirror of
https://github.com/dkam/hsmr.git
synced 2025-12-28 08:44:53 +00:00
CVC & CVC2 working
This commit is contained in:
@@ -131,7 +131,66 @@ class TestHSMR < Test::Unit::TestCase
|
||||
kl = "0123456789ABCDEF"
|
||||
kr = "FEDCBA1234567890"
|
||||
|
||||
HSMR.cvv(kl, kr, "4509494222049051", "0907", "1010")
|
||||
#HSMR.cvv(kl, kr, "4509494222049051", "0907", "1010")
|
||||
end
|
||||
|
||||
test "Test PIN, PVV, CVV and CVV2 generation" do
|
||||
cases=[]
|
||||
# Account Exp PIN PVV CVV2 CVV PGK1 PGK2 PVKI PVK1 PVK2 CVKA CVKB DEC
|
||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13
|
||||
cases << %W{ 5560501200002101 1010 4412 6183 134 317 3737373737373737 0000000000000000 2 1111111111111111 1111111111111111 1111111111111111 1111111111111111 0123456789012345}
|
||||
cases << %W{ 5560501200002111 1010 4784 0931 561 924 3737373737373737 0000000000000000 2 1111111111111111 1111111111111111 1111111111111111 1111111111111111 0123456789012345}
|
||||
cases << %W{ 5560501200002121 1010 1040 4895 462 673 3737373737373737 0000000000000000 2 1111111111111111 1111111111111111 1111111111111111 1111111111111111 0123456789012345}
|
||||
cases << %W{ 5560501200002131 1010 3680 6373 826 267 3737373737373737 0000000000000000 2 1111111111111111 1111111111111111 1111111111111111 1111111111111111 0123456789012345}
|
||||
cases << %W{ 5560501200002101 1110 4412 6183 900 155 3737373737373737 0000000000000000 2 1111111111111111 1111111111111111 1111111111111111 1111111111111111 0123456789012345}
|
||||
cases << %W{ 5560501200002111 1110 4784 0931 363 513 3737373737373737 0000000000000000 2 1111111111111111 1111111111111111 1111111111111111 1111111111111111 0123456789012345}
|
||||
cases << %W{ 5560501200002121 1110 1040 4895 952 937 3737373737373737 0000000000000000 2 1111111111111111 1111111111111111 1111111111111111 1111111111111111 0123456789012345}
|
||||
cases << %W{ 5560501200002131 1110 3680 6373 667 522 3737373737373737 0000000000000000 2 1111111111111111 1111111111111111 1111111111111111 1111111111111111 0123456789012345}
|
||||
cases << %W{ 5560501200002101 1010 9907 7527 777 473 0123456789ABCDEF FEDCBA9876543210 2 7BB19E3D56A1237E 29F7C8FA379EE25C 007A5048DB9531B3 0322DA78AB2F85E1 0123456789012345}
|
||||
cases << %W{ 5560501200002111 1010 2345 0658 638 553 0123456789ABCDEF FEDCBA9876543210 2 7BB19E3D56A1237E 29F7C8FA379EE25C 007A5048DB9531B3 0322DA78AB2F85E1 0123456789012345}
|
||||
cases << %W{ 5560501200002121 1010 8245 8196 085 480 0123456789ABCDEF FEDCBA9876543210 2 7BB19E3D56A1237E 29F7C8FA379EE25C 007A5048DB9531B3 0322DA78AB2F85E1 0123456789012345}
|
||||
cases << %W{ 5560501200002131 1010 3812 2948 591 546 0123456789ABCDEF FEDCBA9876543210 2 7BB19E3D56A1237E 29F7C8FA379EE25C 007A5048DB9531B3 0322DA78AB2F85E1 0123456789012345}
|
||||
cases << %W{ 5560501200002101 1110 9907 7527 349 994 0123456789ABCDEF FEDCBA9876543210 2 7BB19E3D56A1237E 29F7C8FA379EE25C 007A5048DB9531B3 0322DA78AB2F85E1 0123456789012345}
|
||||
cases << %W{ 5560501200002111 1110 2345 0658 245 266 0123456789ABCDEF FEDCBA9876543210 2 7BB19E3D56A1237E 29F7C8FA379EE25C 007A5048DB9531B3 0322DA78AB2F85E1 0123456789012345}
|
||||
cases << %W{ 5560501200002121 1110 8245 8196 441 115 0123456789ABCDEF FEDCBA9876543210 2 7BB19E3D56A1237E 29F7C8FA379EE25C 007A5048DB9531B3 0322DA78AB2F85E1 0123456789012345}
|
||||
cases << %W{ 5560501200002131 1110 3812 2948 126 768 0123456789ABCDEF FEDCBA9876543210 2 7BB19E3D56A1237E 29F7C8FA379EE25C 007A5048DB9531B3 0322DA78AB2F85E1 0123456789012345}
|
||||
|
||||
cases.each do |c|
|
||||
ibm1=HSMR::Component.new(c[6])
|
||||
ibm2=HSMR::Component.new(c[7])
|
||||
ibm=ibm1.xor(ibm2)
|
||||
|
||||
pvk=HSMR::Key.new(c[9]+c[10])
|
||||
|
||||
pin = HSMR::ibm3624(ibm, c[0], 4, c[13]).join
|
||||
pvv = HSMR::pvv(pvk, c[0], c[8], pin)
|
||||
|
||||
assert_equal pin, c[2]
|
||||
assert_equal pin.to_i, c[2].to_i
|
||||
assert_equal pvv, c[3]
|
||||
assert_equal pvv.to_i, c[3].to_i
|
||||
|
||||
cvv = HSMR::cvv(HSMR::Key.new(c[11]), HSMR::Key.new(c[12]), c[0], c[1], '0')
|
||||
cvv2 = HSMR::cvv(HSMR::Key.new(c[11]), HSMR::Key.new(c[12]), c[0], c[1], '101')
|
||||
|
||||
assert_equal c[4].to_i, cvv2.to_i
|
||||
assert_equal c[5].to_i, cvv.to_i
|
||||
|
||||
#puts "#{pin} == #{c[2]} ? #{pin.to_i == c[2].to_i} | #{pvv} == #{c[3]} ? #{pvv.to_i == c[3].to_i}"
|
||||
#
|
||||
end
|
||||
end
|
||||
|
||||
#test "cvv generation" do
|
||||
# keya=HSMR::Key.new("0123456789ABCDEF")
|
||||
# keyb=HSMR::Key.new("FEDCBA1234567890")
|
||||
# key =HSMR::Key.new("0123456789ABCDEFFEDCBA1234567890")
|
||||
#
|
||||
# pan="4509494222049051"
|
||||
# exp="0907"
|
||||
# svc="101000000000"
|
||||
# res="271"
|
||||
# r=HSMR::cvv(keya, keyb, pan, exp, svc)
|
||||
# assert_equal res, r
|
||||
# end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user