337 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			337 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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) = "<SCRIPT"    ' Note that there is no >
 | 
						|
    
 | 
						|
    Tokenizer.Init FileRead(i_strInputFile)
 | 
						|
    Tokenizer.NormalizeTokens arrTags
 | 
						|
    
 | 
						|
    vntKey = i_strPrivateKey
 | 
						|
    
 | 
						|
    Do While (True)
 | 
						|
        str = Tokenizer.GetUpTo("<SCRIPT", , vbTextCompare)
 | 
						|
        strOutput = strOutput & str
 | 
						|
        
 | 
						|
        If (str = "") Then
 | 
						|
            Exit Do
 | 
						|
        End If
 | 
						|
        
 | 
						|
        str = Tokenizer.GetUpTo("LANGUAGE=", , vbTextCompare)
 | 
						|
        strOutput = strOutput & str
 | 
						|
        
 | 
						|
        str = Tokenizer.GetUpTo(">", False)
 | 
						|
        strOutput = strOutput & str
 | 
						|
        str = LCase$(str)
 | 
						|
        
 | 
						|
        Select Case str
 | 
						|
        Case "signedjavascript"
 | 
						|
            str = Tokenizer.GetUpTo(">")
 | 
						|
            strOutput = strOutput & str
 | 
						|
            
 | 
						|
            str = Tokenizer.GetUpTo("</SCRIPT>", 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 <input_file> /o <output_file> /p <private_key_file> /v <vendor_id>" & 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
 |