Quellcode durchsuchen

Revert "Update UCrypto.pas"

This reverts commit 1c5950349c6d54815cd1aa018b9022f41d1b7043.
PascalCoin vor 6 Jahren
Ursprung
Commit
17130d72a3
1 geänderte Dateien mit 23 neuen und 7 gelöschten Zeilen
  1. 23 7
      src/core/UCrypto.pas

+ 23 - 7
src/core/UCrypto.pas

@@ -518,22 +518,38 @@ begin
 end;
 end;
 
 
 class function TCrypto.HexaToRaw(const HexaString: String): TRawBytes;
 class function TCrypto.HexaToRaw(const HexaString: String): TRawBytes;
+Var P : PAnsiChar;
+ lc : AnsiString;
+ i : Integer;
 begin
 begin
-  HexaToRaw(HexaString,Result);
+  SetLength(Result,0);
+  if ((Length(HexaString) MOD 2)<>0) Or (Length(HexaString)=0) then exit;
+  SetLength(Result,Length(HexaString) DIV 2);
+  P := @Result[Low(Result)];
+  lc := LowerCase(HexaString);
+  i := HexToBin(PAnsiChar(@lc[Low(lc)]),P,Length(Result));
+  if (i<>(Length(HexaString) DIV 2)) then begin
+    TLog.NewLog(lterror,Classname,'Invalid HEXADECIMAL string result '+inttostr(i)+'<>'+inttostr(Length(HexaString) DIV 2)+': '+HexaString);
+    SetLength(Result,0);
+  end;
 end;
 end;
 
 
 class function TCrypto.HexaToRaw(const HexaString: String; out raw: TRawBytes): Boolean;
 class function TCrypto.HexaToRaw(const HexaString: String; out raw: TRawBytes): Boolean;
-Var P : PByte;
+Var P : PAnsiChar;
+ lc : AnsiString;
  i : Integer;
  i : Integer;
- ansi : AnsiString;
 begin
 begin
+  Result := False;
   SetLength(raw,0);
   SetLength(raw,0);
-  if ((Length(HexaString) MOD 2)<>0) then Exit(False);
-  if (Length(HexaString)=0) then Exit(True);
+  if ((Length(HexaString) MOD 2)<>0) then Exit;
+  if (Length(HexaString)=0) then begin
+    Result := True;
+    exit;
+  end;
   SetLength(raw,Length(HexaString) DIV 2);
   SetLength(raw,Length(HexaString) DIV 2);
   P := @raw[Low(raw)];
   P := @raw[Low(raw)];
-  ansi := HexaString;
-  i := HexToBin(PAnsiChar(ansi),P,Length(raw));
+  lc := LowerCase(HexaString);
+  i := HexToBin(PAnsiChar(@lc[Low(lc)]),P,Length(raw));
   Result := (i = (Length(HexaString) DIV 2));
   Result := (i = (Length(HexaString) DIV 2));
 end;
 end;