📄 32dll.frm
字号:
End If
st = hex_asc(IcRead(Rlen - 2), Sw1Sw2, 4)
List1.AddItem ("Create MF End : " & Sw1Sw2)
End Sub
Private Sub Form_Load()
shareMode = 0 'Use the USB port privately
'shareMode = 1 'Use the USB port in share
st = Mw_GetDevState(DevState)
For i = 1 To 8
If Mid(DevState, i, 1) = 1 Then
USBport = i - 1
st = mw_init(USBport, shareMode, icdev)
If (st <> 0) Then
List1.AddItem ("mw_init ERR:" & CStr(st))
Else
List1.AddItem ("MW_Init OK")
End If
Exit Sub
End If
Next i
End Sub
Private Sub Form_Unload(Cancel As Integer)
st = mw_close(icdev)
If (st <> 0) Then
List1.AddItem ("mw_close ERR")
End If
End Sub
Private Sub GenerateRSA_Click()
Dim StartTime
Dim CommandTime
Dim GenerateTime As Integer
List1.Clear
List1.Refresh
'Reset
AtrLen = 50
st = mw_reset(icdev, AtrByte(0), AtrLen)
If (st <> 0) Then
List1.AddItem ("Reset Err:" & CStr(st))
Else
st = hex_asc(AtrByte(0), str, AtrLen)
List1.AddItem ("RESET:" & str)
End If
'Select 2F01
Rlen = 50
strIns = "00a40000022f01"
Wlen = Len(Trim(strIns)) / 2
st = asc_hex(strIns, IcWrite(0), Wlen)
st = mw_protocol(icdev, Wlen, IcWrite(0), Rlen, IcRead(0))
If (st <> 0) Then
List1.AddItem ("Select DF Err:" & CStr(st))
Exit Sub
End If
st = hex_asc(IcRead(Rlen - 2), Sw1Sw2, 4)
List1.AddItem ("Select DF :" & Sw1Sw2)
'Generate PK
Rlen = 50
strIns = "804600000400020001"
Wlen = Len(Trim(strIns)) / 2
st = asc_hex(strIns, IcWrite(0), Wlen)
StartTime = Time
st = mw_protocol(icdev, Wlen, IcWrite(0), Rlen, IcRead(0))
CommandTime = Time
GenerateTime = Second(CommandTime - StartTime)
If (st = 0 And (IcRead(Rlen - 2) = &H90 And IcRead(Rlen - 1) = &H0)) Then
List1.AddItem ("Generate PK time:" & GenerateTime)
Else
st = hex_asc(IcRead(Rlen - 2), Sw1Sw2, 4)
List1.AddItem ("Generate PK ERR:" & Sw1Sw2)
End If
End Sub
Private Sub List1_Click()
List1.Clear
End Sub
Private Sub Reset_Click()
List1.Clear
List1.Refresh
'Reset
AtrLen = 50
st = mw_reset(icdev, AtrByte(0), AtrLen)
If (st <> 0) Then
List1.AddItem ("Reset Err:" & CStr(st))
Else
st = hex_asc(AtrByte(0), str, AtrLen)
List1.AddItem ("RESET:" & str)
End If
End Sub
Private Sub SignVer_Click()
Dim RSAsour(130) As Byte
List1.Clear
List1.Refresh
AtrLen = 50
st = mw_reset(icdev, AtrByte(0), AtrLen)
If (st <> 0) Then
List1.AddItem ("Reset Err:" & CStr(st))
Exit Sub
End If
'Select DF
Rlen = 50
strIns = "00a40000022f01"
Wlen = Len(Trim(strIns)) / 2
st = asc_hex(strIns, IcWrite(0), Wlen)
st = mw_protocol(icdev, Wlen, IcWrite(0), Rlen, IcRead(0))
If (st <> 0) Then
List1.AddItem ("Select DF Err:" & CStr(st))
Exit Sub
Else
st = hex_asc(IcRead(Rlen - 2), Sw1Sw2, 4)
List1.AddItem ("Select DF OK")
End If
'HASH
Rlen = 200
strIns = "80cc010040" & "93A2A3A4A5A6A7A8B1B2B3B4B5B6B7B8A1A2A3A4A5A6A7A8B1B2B3B4B5B6B7B8A1A2A3A4A5A6A7A8B1B2B3B4B5B6B7B8A1A2A3A4A5A6A7A8B1B2B3B4B5B6B7B8"
Wlen = Len(Trim(strIns)) / 2
st = asc_hex(strIns, IcWrite(0), Wlen)
st = mw_protocol(icdev, Wlen, IcWrite(0), Rlen, IcRead(0))
If (st <> 0) Then
List1.AddItem ("Hash ERR: " & CStr(st))
Else
st = hex_asc(IcRead(0), str, Rlen)
Sw1Sw2 = Mid(str, 2 * Rlen - 3, 4)
If (Sw1Sw2 <> "9000") Then
List1.AddItem ("Hash ERR :" & Sw1Sw2)
Else
List1.AddItem ("Hash OK: " & str)
End If
End If
'Sign Data must be 128 Bytes,thus fill 00H in front of Hash Data
For i = 0 To 127
If i < (128 - 20) Then
RSAsour(i) = 0
Else
RSAsour(i) = IcRead(i - 108)
End If
Next i
'RSA Sign
Rlen = 200
strIns = "8086000280"
Wlen = Len(Trim(strIns)) / 2
st = asc_hex(strIns, IcWrite(0), Wlen)
For i = 0 To 128
IcWrite(Wlen + i) = RSAsour(i)
Next i
Wlen = Wlen + 128
st = mw_protocol(icdev, Wlen, IcWrite(0), Rlen, IcRead(0))
If (st <> 0) Then
List1.AddItem ("Sign ERR:" & CStr(st))
Else
st = hex_asc(IcRead(0), str, Rlen)
Sw1Sw2 = Mid(str, 2 * Rlen - 3, 4)
If (Sw1Sw2 <> "9000") Then
List1.AddItem ("Sign ERR:" & Sw1Sw2)
Else
List1.AddItem ("Sign OK : " & str)
End If
End If
'Sign Verify
Rlen = 200
strIns = "808a000180"
Wlen = Len(Trim(strIns)) / 2
st = asc_hex(strIns, IcWrite(0), Wlen)
For i = 0 To 128
IcWrite(Wlen + i) = IcRead(i)
Next i
Wlen = Wlen + 128
st = mw_protocol(icdev, Wlen, IcWrite(0), Rlen, IcRead(0))
If (st <> 0) Then
List1.AddItem ("SignVerify ERR:" & CStr(st))
Else
st = hex_asc(IcRead(0), str, Rlen)
Sw1Sw2 = Mid(str, 2 * Rlen - 3, 4)
If (Sw1Sw2 <> "9000") Then
List1.AddItem ("SignVerify ERR:" & Sw1Sw2)
Else
List1.AddItem ("Verify OK : " & Mid(str, (2 * 108 + 1), 44))
End If
End If
End Sub
Private Sub WR_Binary_Click()
List1.Clear
List1.Refresh
'Reset
AtrLen = 50
st = mw_reset(icdev, AtrByte(0), AtrLen)
If (st <> 0) Then
List1.AddItem ("Reset Err:" & CStr(st))
Exit Sub
End If
'Select DF
Rlen = 50
strIns = "00a40000022f01"
Wlen = Len(Trim(strIns)) / 2
st = asc_hex(strIns, IcWrite(0), Wlen)
st = mw_protocol(icdev, Wlen, IcWrite(0), Rlen, IcRead(0))
If (st <> 0) Then
List1.AddItem ("Select DF Err:" & CStr(st))
Exit Sub
Else
st = hex_asc(IcRead(Rlen - 2), Sw1Sw2, 4)
List1.AddItem ("Select DF OK")
End If
'Update Binary Maxlen=171B
Rlen = 200
WRlen = 171
strIns = "00d68300" & CStr(hex(WRlen))
Wlen = Len(Trim(strIns)) / 2
st = asc_hex(strIns, IcWrite(0), Wlen)
For i = 1 To WRlen
IcWrite(i + 5 - 1) = i
Next
Wlen = Wlen + WRlen
st = mw_protocol(icdev, Wlen, IcWrite(0), Rlen, IcRead(0))
If (st <> 0) Then
List1.AddItem ("Update Bin ERR: " & CStr(st))
Else
st = hex_asc(IcRead(0), str, Rlen)
Sw1Sw2 = Mid(str, 2 * Rlen - 3, 4)
If (Sw1Sw2 <> "9000") Then
List1.AddItem ("Update Bin ERR: " & Sw1Sw2)
Else
List1.AddItem ("Update Bin OK")
End If
End If
'Read Binary Maxlen=173B
Rlen = 200
strIns = "00b08300" & CStr(hex(WRlen))
Wlen = Len(Trim(strIns)) / 2
st = asc_hex(strIns, IcWrite(0), Wlen)
st = mw_protocol(icdev, Wlen, IcWrite(0), Rlen, IcRead(0))
If (st <> 0) Then
List1.AddItem ("Read Bin ERR: " & CStr(st))
Else
st = hex_asc(IcRead(0), str, Rlen)
Sw1Sw2 = Mid(str, 2 * Rlen - 3, 4)
If (Sw1Sw2 <> "9000") Then
List1.AddItem ("Read Bin ERR: " & Sw1Sw2)
Else
List1.AddItem ("Read Bin OK")
End If
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -