⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 32dll.frm

📁 vb下调用usb 接口smartcard的应用例程
💻 FRM
📖 第 1 页 / 共 2 页
字号:
    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 + -