mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 11:29:27 +02:00
* Do not make assumptions about string encoding
This commit is contained in:
parent
c6e9c7c1f8
commit
82c27c72c9
@ -97,8 +97,36 @@ Function Base64 : TAlphabetEncoder;
|
||||
Function Base64URL : TAlphabetEncoder;
|
||||
Function GetStandardEncoder(aEncoder : TStandardEncoder): TAlphabetEncoder;
|
||||
|
||||
Function GetRawStringBytes(S : String) : TBytes;
|
||||
Function GetRawStringFromBytes(B : TBytes) : RawByteString;
|
||||
|
||||
implementation
|
||||
|
||||
Function GetRawStringFromBytes(B : TBytes) : RawByteString;
|
||||
|
||||
Var
|
||||
L : Integer;
|
||||
|
||||
begin
|
||||
L:=Length(B);
|
||||
SetLength(Result,L);
|
||||
If L>0 then
|
||||
Move(B[0],Result[1],L);
|
||||
end;
|
||||
|
||||
Function GetRawStringBytes(S : String) : TBytes;
|
||||
|
||||
Var
|
||||
L : Integer;
|
||||
|
||||
begin
|
||||
L:=Length(S);
|
||||
SetLength(Result,L);
|
||||
If L>0 then
|
||||
Move(S[1],Result[0],L);
|
||||
end;
|
||||
|
||||
|
||||
Function TAlphabetEncoder.Encode(aBuffer : TBytes; doPad : Boolean = True) : AnsiString;
|
||||
|
||||
begin
|
||||
@ -109,7 +137,7 @@ end;
|
||||
function TAlphabetEncoder.Encode(Const aBuffer: AnsiString; doPad : Boolean = True): AnsiString;
|
||||
|
||||
begin
|
||||
Result:=Encode(TEncoding.UTF8.GetAnsiBytes(aBuffer),DoPad);
|
||||
Result:=Encode(GetRawBytesFromString(aBuffer),DoPad);
|
||||
end;
|
||||
|
||||
|
||||
|
@ -767,7 +767,7 @@ begin
|
||||
BufToString(S2);
|
||||
if S2[1] = Char(#00) then
|
||||
Delete(S2,1,1);
|
||||
BytesToHexStr(S,TEncoding.UTF8.GetAnsiBytes(S2));
|
||||
BytesToHexStr(S,GetRawStringBytes(S2));
|
||||
end;
|
||||
ASNParseAdd(List, S, ASNType, ASNSize);
|
||||
end;
|
||||
|
@ -59,7 +59,7 @@ begin
|
||||
PemLoadPublicKey64FromList(List,PrivateKey,PublicKey,PublicKeyX64,PublicKeyY64);
|
||||
// Thumbprint
|
||||
S:='{"crv":"P-256","kty":"EC","x":"' + PublicKeyX64 + '","y":"' + PublicKeyY64 + '"}';
|
||||
TSHA256.DigestBase64(TEncoding.UTF8.GetAnsiBytes(S),True,ThumbPrint);
|
||||
TSHA256.DigestBase64(GetRawStringBytes(S),True,ThumbPrint);
|
||||
end;
|
||||
|
||||
procedure PemLoadPublicKey64FromList(List: TStrings; out PrivateKey: TEccPrivateKey; out PublicKey: TEccPublicKey; out PublicKeyX64, PublicKeyY64: AnsiString);
|
||||
@ -346,12 +346,12 @@ end;
|
||||
|
||||
procedure PemToDER(PEM: TBytes; const BeginTag, EndTag: String; out DER: TBytes);
|
||||
begin
|
||||
DER:=PemToDER(TEncoding.UTF8.GetAnsiString(PEM),BeginTag,EndTag);
|
||||
DER:=PemToDER(GetRawStringFromBytes(PEM),BeginTag,EndTag);
|
||||
end;
|
||||
|
||||
procedure ASNParsePemSection(const PEM: TBytes; List: TStrings; const BeginTag, EndTag: String);
|
||||
begin
|
||||
ASNParsePemSection(TEncoding.UTF8.GetAnsiString(PEM),List,BeginTag,EndTag);
|
||||
ASNParsePemSection(GetRawStringFromBytes(PEM),List,BeginTag,EndTag);
|
||||
end;
|
||||
|
||||
procedure ASNParsePemSection(const PEM: String; List: TStrings; const BeginTag, EndTag: String);
|
||||
|
Loading…
Reference in New Issue
Block a user