浏览代码

Cleanup / fix. This reverts commit 4b954ee8.

Martijn Laan 4 月之前
父节点
当前提交
1470994d6a
共有 3 个文件被更改,包括 9 次插入29 次删除
  1. 2 20
      Projects/Src/Setup.InstFunc.pas
  2. 0 2
      Projects/Src/Setup.Install.pas
  3. 7 7
      Projects/Src/Setup.ScriptFunc.pas

+ 2 - 20
Projects/Src/Setup.InstFunc.pas

@@ -12,7 +12,7 @@ unit Setup.InstFunc;
 interface
 
 uses
-  Windows, SysUtils, Classes, Shared.Int64Em, SHA256, Shared.CommonFunc;
+  Windows, SysUtils, Shared.Int64Em, SHA256, Shared.CommonFunc;
 
 type
   PSimpleStringListArray = ^TSimpleStringListArray;
@@ -59,7 +59,6 @@ function GetComputerNameString: String;
 function GetFileDateTime(const DisableFsRedir: Boolean; const Filename: String;
   var DateTime: TFileTime): Boolean;
 function GetSHA256OfFile(const DisableFsRedir: Boolean; const Filename: String): TSHA256Digest;
-function GetSHA256OfStream(const Stream: TStream): TSHA256Digest;
 function GetSHA256OfAnsiString(const S: AnsiString): TSHA256Digest;
 function GetSHA256OfUnicodeString(const S: UnicodeString): TSHA256Digest;
 function GetRegRootKeyName(const RootKey: HKEY): String;
@@ -103,7 +102,7 @@ implementation
 uses
   Messages, ShellApi, PathFunc, SetupLdrAndSetup.InstFunc, SetupLdrAndSetup.Messages,
   Shared.SetupMessageIDs, Shared.FileClass, SetupLdrAndSetup.RedirFunc, Shared.SetupTypes,
-  RegStr, Math;
+  Classes, RegStr, Math;
 
 procedure InternalError(const Id: String);
 begin
@@ -575,23 +574,6 @@ begin
   Result := SHA256Final(Context);
 end;
 
-function GetSHA256OfStream(const Stream: TStream): TSHA256Digest;
-{ Gets SHA-256 sum as a string of the stream. An exception will be raised upon
-  failure. }
-var
-  Buf: array[0..65535] of Byte;
-begin
-  var Context: TSHA256Context;
-  SHA256Init(Context);
-  while True do begin
-    var NumRead := Stream.Read(Buf, SizeOf(Buf));
-    if NumRead = 0 then
-      Break;
-    SHA256Update(Context, Buf, NumRead);
-  end;
-  Result := SHA256Final(Context);
-end;
-
 function GetSHA256OfAnsiString(const S: AnsiString): TSHA256Digest;
 begin
   Result := SHA256Buf(Pointer(S)^, Length(S)*SizeOf(S[1]));

+ 0 - 2
Projects/Src/Setup.Install.pas

@@ -3169,8 +3169,6 @@ begin
       RegisterFilesList := TList.Create;
 
       SetLength(ISSigAvailableKeys, Entries[seISSigKey].Count);
-      for var N := 0 to Entries[seISSigKey].Count-1 do
-        ISSigAvailableKeys[N] := nil;
       for var N := 0 to Entries[seISSigKey].Count-1 do begin
         var ISSigKeyEntry := PSetupISSigKeyEntry(Entries[seISSigKey][N]);
         ISSigAvailableKeys[N] := TECDSAKey.Create;

+ 7 - 7
Projects/Src/Setup.ScriptFunc.pas

@@ -882,7 +882,7 @@ var
     end);
     RegisterScriptFunc('GETSHA256OFSTREAM', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
-      Stack.SetString(PStart, SHA256DigestToString(GetSHA256OfStream(TStream(Stack.GetClass(PStart-1)))));
+      Stack.SetString(PStart, SHA256DigestToString(ISSigCalcStreamHash(TStream(Stack.GetClass(PStart-1)))));
     end);
     RegisterScriptFunc('GETSHA256OFSTRING', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
@@ -1831,8 +1831,6 @@ var
       var AllowedKeys: TArrayOfECDSAKey;
       const NAllowedKeys = Length(AllowedKeysTexts);
       SetLength(AllowedKeys, NAllowedKeys);
-      for var I := 0 to NAllowedKeys-1 do
-        AllowedKeys[I] := nil;
       var F: TFileStream;
       try
         { Import keys }
@@ -1867,13 +1865,15 @@ var
         try
           if Int64(F.Size) <> ExpectedFileSize then
             raise Exception.Create('File size is incorrect');
-          const ActualFileHash = GetSHA256OfStream(F);
+          const ActualFileHash = ISSigCalcStreamHash(F);
           if not SHA256DigestsEqual(ActualFileHash, ExpectedFileHash) then
             raise Exception.Create('File hash is incorrect');
-        finally
-          if not KeepOpen then
-            FreeAndNil(F);
+        except
+          FreeAndNil(F);
+          raise;
         end;
+        if not KeepOpen then
+          FreeAndNil(F);
       finally
         for var I := 0 to NAllowedKeys-1 do
           AllowedKeys[I].Free;