فهرست منبع

some refactorings

Ugochukwu Mmaduekwe 3 روز پیش
والد
کامیت
c7a11fdbdf

+ 1 - 1
CryptoLib/src/Asn1/CryptoPro/ClpECGost3410NamedCurves.pas

@@ -255,7 +255,7 @@ end;
 
 class function TECGost3410NamedCurves.GetOid(const AName: String): IDerObjectIdentifier;
 begin
-  if not FObjIds.TryGetValue(UpperCase(AName), Result) then
+  if not FObjIds.TryGetValue(AName, Result) then
     Result := nil;
 end;
 

+ 1 - 1
CryptoLib/src/Asn1/Nist/ClpNistNamedCurves.pas

@@ -172,7 +172,7 @@ end;
 
 class function TNistNamedCurves.GetOid(const AName: String): IDerObjectIdentifier;
 begin
-  if not FObjIds.TryGetValue(UpperCase(AName), Result) then
+  if not FObjIds.TryGetValue(AName, Result) then
     Result := nil;
 end;
 

+ 1 - 1
CryptoLib/src/Asn1/Sec/ClpSecNamedCurves.pas

@@ -472,7 +472,7 @@ end;
 
 class function TSecNamedCurves.GetOid(const AName: String): IDerObjectIdentifier;
 begin
-  if not FObjIds.TryGetValue(UpperCase(AName), Result) then
+  if not FObjIds.TryGetValue(AName, Result) then
     Result := nil;
 end;
 

+ 1 - 1
CryptoLib/src/Asn1/TeleTrust/ClpTeleTrusTNamedCurves.pas

@@ -302,7 +302,7 @@ end;
 
 class function TTeleTrusTNamedCurves.GetOid(const AName: String): IDerObjectIdentifier;
 begin
-  if not FObjIds.TryGetValue(UpperCase(AName), Result) then
+  if not FObjIds.TryGetValue(AName, Result) then
     Result := nil;
 end;
 

+ 1 - 13
CryptoLib/src/Asn1/X509/ClpX509Asn1Objects.pas

@@ -5124,20 +5124,8 @@ begin
 end;
 
 function TExtendedKeyUsage.GetAllUsages: TCryptoLibGenericArray<IDerObjectIdentifier>;
-var
-  LList: TList<IDerObjectIdentifier>;
-  LOid: IDerObjectIdentifier;
 begin
-  LList := TList<IDerObjectIdentifier>.Create();
-  try
-    for LOid in FUsageTable.Keys do
-    begin
-      LList.Add(LOid);
-    end;
-    Result := LList.ToArray();
-  finally
-    LList.Free;
-  end;
+  Result := TCollectionUtilities.Keys<IDerObjectIdentifier, Boolean>(FUsageTable);
 end;
 
 function TExtendedKeyUsage.GetCount: Int32;

+ 3 - 17
CryptoLib/src/Asn1/X509/ClpX509SignatureUtilities.pas

@@ -44,6 +44,7 @@ uses
   ClpSignerUtilities,
   ClpX509Utilities,
   ClpAsn1Comparers,
+  ClpCollectionUtilities,
   ClpCryptoLibComparers,
   ClpCryptoLibTypes;
 
@@ -374,8 +375,6 @@ begin
 end;
 
 class function TX509SignatureUtilities.GetSigOid(const ASigName: String): IDerObjectIdentifier;
-var
-  LUpperName: String;
 begin
   if ASigName = '' then
   begin
@@ -383,8 +382,7 @@ begin
     Exit;
   end;
 
-  LUpperName := UpperCase(ASigName);
-  if not FAlgorithms.TryGetValue(LUpperName, Result) then
+  if not FAlgorithms.TryGetValue(ASigName, Result) then
   begin
     // Try to parse as OID string
     try
@@ -428,20 +426,8 @@ begin
 end;
 
 class function TX509SignatureUtilities.GetSigNames: TCryptoLibStringArray;
-var
-  LList: TList<String>;
-  LName: String;
 begin
-  LList := TList<String>.Create();
-  try
-    for LName in FAlgorithms.Keys do
-    begin
-      LList.Add(LName);
-    end;
-    Result := LList.ToArray();
-  finally
-    LList.Free;
-  end;
+  Result := TCollectionUtilities.Keys<String, IDerObjectIdentifier>(FAlgorithms);
 end;
 
 class procedure TX509SignatureUtilities.AddAlgorithm(const AName: String;

+ 2 - 2
CryptoLib/src/Asn1/X9/ClpX962NamedCurves.pas

@@ -273,7 +273,7 @@ begin
   LName := AName;
   FNames.Add(AOid, LName);
   FCurves.Add(AOid, AHolder);
-  FObjIds.Add(UpperCase(LName), AOid);
+  FObjIds.Add(LName, AOid);
 end;
 
 class procedure TX962NamedCurves.Boot;
@@ -370,7 +370,7 @@ end;
 
 class function TX962NamedCurves.GetOid(const AName: String): IDerObjectIdentifier;
 begin
-  if not FObjIds.TryGetValue(UpperCase(AName), Result) then
+  if not FObjIds.TryGetValue(AName, Result) then
     Result := nil;
 end;
 

+ 13 - 3
CryptoLib/src/Crypto/Ciphers/ClpCipherUtilities.pas

@@ -90,9 +90,12 @@ uses
   ClpIRsaBlindedEngine,
   ClpIAsymmetricBlockCipher,
   ClpBufferedIesCipher,
-  ClpIESEngine,
+  ClpIesEngine,
+  ClpDHBasicAgreement,
+  ClpIDHBasicAgreement,
   ClpECDHBasicAgreement,
   ClpIECDHBasicAgreement,
+  ClpIBasicAgreement,
   ClpKdf2BytesGenerator,
   ClpIKdf2BytesGenerator,
   ClpHMac,
@@ -287,13 +290,20 @@ var
   LAsymBlockCipher: IAsymmetricBlockCipher;
   LStreamCipher: IStreamCipher;
   LPadding: IBlockCipherPadding;
+  LAgreement: IBasicAgreement;
 begin
   Result := nil;
 
-  if UpperCase(AMechanism) = 'ECIES' then
+  LAgreement := nil;
+  if AMechanism = 'IES' then
+    LAgreement := TDHBasicAgreement.Create() as IDHBasicAgreement
+  else if AMechanism = 'ECIES' then
+    LAgreement := TECDHBasicAgreement.Create() as IECDHBasicAgreement;
+
+  if LAgreement <> nil then
   begin
     Result := TBufferedIesCipher.Create(TIesEngine.Create(
-      TECDHBasicAgreement.Create() as IECDHBasicAgreement,
+      LAgreement,
       TKdf2BytesGenerator.Create(TDigestUtilities.GetDigest('SHA-1'))
         as IKdf2BytesGenerator,
       THMac.Create(TDigestUtilities.GetDigest('SHA-1')) as IHMac));

+ 1 - 1
CryptoLib/src/Crypto/Digests/ClpDigestUtilities.pas

@@ -159,7 +159,7 @@ var
 begin
   if AAlgorithm = '' then
     raise EArgumentNilCryptoLibException.CreateRes(@SAlgorithmNil);
-  LMechanism := GetMechanism(UpperCase(AAlgorithm));
+  LMechanism := GetMechanism(AAlgorithm);
   if LMechanism = '' then
     LMechanism := UpperCase(AAlgorithm);
   LDigest := GetDigestForMechanism(LMechanism);

+ 1 - 1
CryptoLib/src/Crypto/EC/ClpCustomNamedCurves.pas

@@ -196,7 +196,7 @@ end;
 
 class function TCustomNamedCurves.GetOid(const AName: String): IDerObjectIdentifier;
 begin
-  if not FObjIds.TryGetValue(UpperCase(AName), Result) then
+  if not FObjIds.TryGetValue(AName, Result) then
     Result := nil;
 end;
 

+ 5 - 13
CryptoLib/src/Crypto/Signers/ClpSignerUtilities.pas

@@ -713,18 +713,8 @@ begin
 end;
 
 class function TSignerUtilities.GetAlgorithms: TCryptoLibStringArray;
-var
-  LList: TList<String>;
-  LKey: String;
 begin
-  LList := TList<String>.Create;
-  try
-    for LKey in FOids.Keys do
-      LList.Add(LKey);
-    Result := LList.ToArray;
-  finally
-    LList.Free;
-  end;
+  Result := TCollectionUtilities.Keys<String, IDerObjectIdentifier>(FOids);
 end;
 
 class function TSignerUtilities.GetEncodingName(const AOid: IDerObjectIdentifier): String;
@@ -738,8 +728,10 @@ var
 begin
   if AMechanism = '' then
     raise EArgumentNilCryptoLibException.CreateRes(@SMechanismNil);
-  LCanonical := TCollectionUtilities.GetValueOrKey<String>(FAlgorithmMap, UpperCase(AMechanism));
-  FOids.TryGetValue(LCanonical, Result);
+  LCanonical := GetMechanism(AMechanism);
+  if LCanonical = '' then
+    LCanonical := AMechanism;
+  Result := TCollectionUtilities.GetValueOrNull<String, IDerObjectIdentifier>(FOids, LCanonical);
 end;
 
 class function TSignerUtilities.GetSigner(const AOid: IDerObjectIdentifier): ISigner;

+ 2 - 13
CryptoLib/src/X509/ClpX509Utilities.pas

@@ -48,6 +48,7 @@ uses
   ClpDefaultDigestCalculator,
   ClpIDigest,
   ClpIVerifier,
+  ClpCollectionUtilities,
   ClpCryptoLibComparers,
   ClpCryptoLibTypes,
   ClpArrayUtilities;
@@ -351,20 +352,8 @@ begin
 end;
 
 class function TX509Utilities.GetAlgNames: TCryptoLibStringArray;
-var
-  LList: TList<String>;
-  LKey: String;
 begin
-  LList := TList<String>.Create();
-  try
-    for LKey in FAlgorithms.Keys do
-    begin
-      LList.Add(LKey);
-    end;
-    Result := LList.ToArray();
-  finally
-    LList.Free;
-  end;
+  Result := TCollectionUtilities.Keys<String, IDerObjectIdentifier>(FAlgorithms);
 end;
 
 class function TX509Utilities.HasAbsentParameters(const AAlgID: IAlgorithmIdentifier): Boolean;