VERSION 5.00
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
Begin VB.Form frmMain
BorderStyle = 1 'Fixed Single
Caption = "Sign Code"
ClientHeight = 2055
ClientLeft = 480
ClientTop = 1590
ClientWidth = 7425
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 2055
ScaleWidth = 7425
Begin MSComDlg.CommonDialog dlgFileOpen
Left = 0
Top = 1680
_ExtentX = 847
_ExtentY = 847
_Version = 393216
End
Begin VB.CommandButton cmdCancel
Caption = "Cancel"
Height = 375
Left = 6120
TabIndex = 12
Top = 1560
Width = 1215
End
Begin VB.CommandButton cmdOK
Caption = "OK"
Height = 375
Left = 4800
TabIndex = 11
Top = 1560
Width = 1215
End
Begin VB.CommandButton cmd
Caption = "..."
Height = 255
Index = 2
Left = 7080
TabIndex = 8
Top = 840
Width = 255
End
Begin VB.CommandButton cmd
Caption = "..."
Height = 255
Index = 1
Left = 7080
TabIndex = 5
Top = 480
Width = 255
End
Begin VB.CommandButton cmd
Caption = "..."
Height = 255
Index = 0
Left = 7080
TabIndex = 2
Top = 120
Width = 255
End
Begin VB.TextBox txt
Height = 285
Index = 3
Left = 1440
TabIndex = 10
Top = 1200
Width = 5535
End
Begin VB.TextBox txt
Height = 285
Index = 2
Left = 1440
TabIndex = 7
Top = 840
Width = 5535
End
Begin VB.TextBox txt
Height = 285
Index = 1
Left = 1440
TabIndex = 4
Top = 480
Width = 5535
End
Begin VB.TextBox txt
Height = 285
Index = 0
Left = 1440
TabIndex = 1
Top = 120
Width = 5535
End
Begin VB.Label lbl
Caption = "Vendor ID:"
Height = 255
Index = 3
Left = 120
TabIndex = 9
Top = 1200
Width = 1215
End
Begin VB.Label lbl
Caption = "Private key file:"
Height = 255
Index = 2
Left = 120
TabIndex = 6
Top = 840
Width = 1215
End
Begin VB.Label lbl
Caption = "Output file:"
Height = 255
Index = 1
Left = 120
TabIndex = 3
Top = 480
Width = 1215
End
Begin VB.Label lbl
Caption = "Input file:"
Height = 255
Index = 0
Left = 120
TabIndex = 0
Top = 120
Width = 1215
End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Declare Function GetRealCodeAndSignature Lib "SignScriptBlock" ( _
PrivateKey As Variant, _
Code As Variant, _
Signature As Variant _
) As Long
Private Enum INDEX_E
INPUT_FILE_E = 0
OUTPUT_FILE_E = 1
PRIVATE_KEY_FILE_E = 2
VENDOR_ID_E = 3
End Enum
Private Sub Form_Load()
If (Command$ <> "") Then
If (OptionExists(Command$, "h,help,?", True)) Then
p_ShowUsage
End
End If
End If
End Sub
Private Sub Form_Activate()
If (Command$ <> "") Then
p_RunBatch
End If
cmdOK.Default = True
cmdCancel.Cancel = True
End Sub
Private Sub cmd_Click(Index As Integer)
On Error GoTo LErrorHandler
dlgFileOpen.CancelError = True
dlgFileOpen.flags = cdlOFNHideReadOnly
dlgFileOpen.ShowOpen
txt(Index) = dlgFileOpen.FileName
LEnd:
Exit Sub
LErrorHandler:
GoTo LEnd
End Sub
Private Sub cmdOK_Click()
On Error GoTo LErrorHandler
Dim intIndex As Long
Dim strPrivateKey As String
For intIndex = 0 To 3
If (Trim$(txt(intIndex)) = "") Then
txt(intIndex).SetFocus
Exit Sub
End If
Next
strPrivateKey = p_GetPrivateKey(txt(PRIVATE_KEY_FILE_E))
p_SignHTMLElement txt(INPUT_FILE_E), txt(OUTPUT_FILE_E), strPrivateKey, txt(VENDOR_ID_E)
cmdCancel_Click
Exit Sub
LErrorHandler:
MsgBox "Error 0x" & Hex(Err.Number) & vbCrLf & Err.Description, vbExclamation + vbOKOnly
Err.Clear
End Sub
Private Sub cmdCancel_Click()
Set frmMain = Nothing
Unload Me
End Sub
Private Function p_GetPrivateKey(ByVal i_strFile As String)
Dim FSO As Scripting.FileSystemObject
Dim TS As Scripting.TextStream
Set FSO = New Scripting.FileSystemObject
Set TS = FSO.OpenTextFile(i_strFile)
p_GetPrivateKey = TS.ReadLine
End Function
Private Sub p_SignHTMLElement( _
ByVal i_strInputFile As String, _
ByVal i_strOutputFile As String, _
ByVal i_strPrivateKey As String, _
ByVal i_strVendorID As String _
)
Dim Tokenizer As Tokenizer
Dim arrTags(1) As String
Dim str As String
Dim strNewCode As String
Dim vntKey As Variant
Dim vntCode As Variant
Dim vntSignature As Variant
Dim strOutput As String
Dim hr As Long
Set Tokenizer = New Tokenizer
arrTags(0) = "", False, vbTextCompare)
vntCode = str
hr = GetRealCodeAndSignature(vntKey, vntCode, vntSignature)
If (hr <> 0) Then
MsgBox "GetRealCodeAndSignature failed and returned 0x" & Hex(hr), _
vbExclamation + vbOKOnly
Err.Raise hr
End If
strOutput = strOutput & vbCrLf
strOutput = strOutput & "VendorID:" & i_strVendorID & vbCrLf
strOutput = strOutput & "Signature:" & vntSignature & vbCrLf & vbCrLf
strOutput = strOutput & vntCode
End Select
Loop
str = Tokenizer.GetAfter("")
strOutput = strOutput & str
FileWrite i_strOutputFile, strOutput
End Sub
Private Sub p_ShowUsage()
MsgBox "Usage: " & App.EXEName & " " & _
"/i /o /p /v " & vbCrLf & _
"Where:" & vbCrLf & _
vbTab & "input_file is the HTML file to be signed" & vbCrLf & _
vbTab & "output_file is the HTML file that will be created" & vbCrLf & _
vbTab & "private_key_file is a text file containing the private key" & vbCrLf & _
vbTab & "vendor_id is the Vendor ID, eg CN=pchtest,L=Redmond,S=Washington,C=US" & vbCrLf & _
"All options are required."
End Sub
Private Sub p_RunBatch()
txt(INPUT_FILE_E) = GetOption(Command$, "i", True)
txt(OUTPUT_FILE_E) = GetOption(Command$, "o", True)
txt(PRIVATE_KEY_FILE_E) = GetOption(Command$, "p", True)
txt(VENDOR_ID_E) = GetOption(Command$, "v", True)
cmdOK_Click
End
End Sub