﻿Dim FirstDigest
Dim Digest
dim EnData
Digest= "01234567890123456"

dim bErr

sub ShowErr(Msg)
	bErr = true
	MsgBox Msg
End Sub


function Validate()
	Digest = "01234567890123456"
	On Error Resume Next
	Dim TheForm
	Set TheForm = Document.forms("aspnetForm")
	
	If Len(TheForm.txtUserID.Value) < 1  Then
		MsgBox "请输入您的用户名！"	 
		Validate = FALSE
		TheForm.txtUserID.focus()
		Exit Function
	End If
	
	If Len(TheForm.txtUserPwd.Value) < 1  Then
		MsgBox "请输入您的登录密码！"	 
		Validate = FALSE
		TheForm.txtUserPwd.focus()
		Exit Function
	End If

	bErr = false

	'Let detecte whether the haikey Safe Active Control loaded.
	'If we call any method and the Err.number be set to &H1B6, it 
	'means the hakey Safe Active Control had not be loaded.
	dim LibVer
	LibVer = htactx.GetLibVersion
	If Err.number <> 0 Then       
		ShowErr "未正确安装ActiveX控件！请修改IE浏览器的Internet选项，选择“安全”标签中的“自定义级别”，把“ActiveX控件和插件”均设置为“启用”状态。"
		Validate = false
		Exit function
	Else
		dim hCard
		hCard = 0	
		hCard = htactx.OpenDevice(1)
		If Err.number<>0 or hCard = 0 then
			ShowErr "打开电子密钥失败！请确认您插入了电子密钥并正确安装了电子密钥驱动程序。 "
			Validate = false
			Exit function
		End if
		
		dim UserName
		UserName = htactx.GetUserName(hCard)'
		If Err.number<>0 Then
			ShowErr "获取电子密钥用户名失败！"
			Validate = false
			htactx.CloseDevice hCard
			Exit function
		End If
				
		if UserName<>TheForm.txtUserID.Value then			   
		    ShowErr "校验电子密钥用户名失败！"
			Validate = false
			htactx.CloseDevice hCard
			Exit function
		end if
		
		htactx.VerifyUserPin hCard, CStr(TheForm.txtUserPwd.Value)
		If Err.number<>0 Then
			ShowErr "校验电子密钥口令失败！"
			Validate = false
			htactx.CloseDevice hCard
			Exit function
		End If
		
		
		
		Digest = htactx.HTSHA1(UserName,Len(UserName))
		If Err.number<>0 Then
			ShowErr "SHA1 failed."
			Validate = false
			htactx.CloseDevice hCard
			Exit function
		End If		
		
		Digest = Digest&"04040404"
		EnData = htactx.HTCrypt(hCard,0 ,0,Digest, len(Digest))
		If Err.number<>0 Then 
			ShowErr "HashToken compute"
			Validate = false
			htactx.CloseDevice hCard
			Exit function
		End If
		htactx.CloseDevice hCard	
		
		DigestID.innerHTML = "<input type='hidden' name='EnData' Value='" & EnData & "'>"
		snID.innerHTML = "<input type='hidden' name='UserID' Value='" & UserName & "'>"
		TheForm.submit()
	End If
End function' VBScript 文件

