From ca3e061bd3e7d8663b133666e70e21cbc31acb7f Mon Sep 17 00:00:00 2001 From: Ugochukwu Mmaduekwe Date: Fri, 5 Jun 2026 16:05:46 +0100 Subject: [PATCH 1/2] add delphi mobile test harness --- .../Delphi.Tests/CryptoLib.Tests.Mobile.dpr | 886 ++++++ .../Delphi.Tests/CryptoLib.Tests.Mobile.dproj | 2472 +++++++++++++++++ .../CryptoLibTestMobileRunner.pas | 201 ++ .../Delphi.Tests/MobileTestHostFormUnit.fmx | 81 + .../Delphi.Tests/MobileTestHostFormUnit.pas | 150 + scripts/sync-mobile-testdata.ps1 | 89 + 6 files changed, 3879 insertions(+) create mode 100644 CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dpr create mode 100644 CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dproj create mode 100644 CryptoLib.Tests/Delphi.Tests/CryptoLibTestMobileRunner.pas create mode 100644 CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.fmx create mode 100644 CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.pas create mode 100644 scripts/sync-mobile-testdata.ps1 diff --git a/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dpr b/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dpr new file mode 100644 index 00000000..64700ec8 --- /dev/null +++ b/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dpr @@ -0,0 +1,886 @@ +program CryptoLib.Tests.Mobile; + +{ FMX host for running CryptoLib DUnit tests on device with TestInsight on the dev PC. + use this project for Android/iOS harness work. } + +uses + System.StartUpCopy, + FMX.Forms, + MobileTestHostFormUnit in 'MobileTestHostFormUnit.pas' {MobileTestHostForm}, + CryptoLibTestMobileRunner in 'CryptoLibTestMobileRunner.pas', + ClpAesEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpAesEngine.pas', + ClpIAesEngineX86 in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIAesEngineX86.pas', + ClpAesEngineX86 in '..\..\CryptoLib\src\Crypto\Engines\ClpAesEngineX86.pas', + ClpAesUtilities in '..\..\CryptoLib\src\Crypto\ClpAesUtilities.pas', + ClpAesLightEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpAesLightEngine.pas', + ClpAgreementUtilities in '..\..\CryptoLib\src\Crypto\Agreements\ClpAgreementUtilities.pas', + ClpArgon2ParametersGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpArgon2ParametersGenerator.pas', + ClpArrayUtilities in '..\..\CryptoLib\src\GeneralUtilities\ClpArrayUtilities.pas', + ClpAsn1DigestFactory in '..\..\CryptoLib\src\Crypto\Operators\ClpAsn1DigestFactory.pas', + ClpAsn1Dumper in '..\..\CryptoLib\src\Asn1\ClpAsn1Dumper.pas', + ClpAsn1Comparers in '..\..\CryptoLib\src\Asn1\ClpAsn1Comparers.pas', + ClpAsn1Objects in '..\..\CryptoLib\src\Asn1\ClpAsn1Objects.pas', + ClpAsn1SignatureFactory in '..\..\CryptoLib\src\Crypto\Operators\ClpAsn1SignatureFactory.pas', + ClpAsn1Streams in '..\..\CryptoLib\src\Asn1\ClpAsn1Streams.pas', + ClpAsn1Utilities in '..\..\CryptoLib\src\Asn1\ClpAsn1Utilities.pas', + ClpAsn1VerifierFactory in '..\..\CryptoLib\src\Crypto\Operators\ClpAsn1VerifierFactory.pas', + ClpAsn1VerifierFactoryProvider in '..\..\CryptoLib\src\Crypto\Operators\ClpAsn1VerifierFactoryProvider.pas', + ClpAsymmetricCipherKeyPair in '..\..\CryptoLib\src\Crypto\ClpAsymmetricCipherKeyPair.pas', + ClpAsymmetricKeyParameter in '..\..\CryptoLib\src\Crypto\Parameters\ClpAsymmetricKeyParameter.pas', + ClpBaseKdfBytesGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpBaseKdfBytesGenerator.pas', + ClpBigInteger in '..\..\CryptoLib\src\Math\ClpBigInteger.pas', + ClpBigIntegerUtilities in '..\..\CryptoLib\src\Math\ClpBigIntegerUtilities.pas', + ClpPrimes in '..\..\CryptoLib\src\Math\ClpPrimes.pas', + ClpCbcBlockCipher in '..\..\CryptoLib\src\Crypto\Modes\ClpCbcBlockCipher.pas', + ClpCfbBlockCipher in '..\..\CryptoLib\src\Crypto\Modes\ClpCfbBlockCipher.pas', + ClpCtsBlockCipher in '..\..\CryptoLib\src\Crypto\Modes\ClpCtsBlockCipher.pas', + ClpOfbBlockCipher in '..\..\CryptoLib\src\Crypto\Modes\ClpOfbBlockCipher.pas', + ClpSicBlockCipher in '..\..\CryptoLib\src\Crypto\Modes\ClpSicBlockCipher.pas', + ClpBlockCipherBulkUtilities in '..\..\CryptoLib\src\Crypto\Modes\ClpBlockCipherBulkUtilities.pas', + ClpCipherModeParameterUtilities in '..\..\CryptoLib\src\Crypto\Modes\ClpCipherModeParameterUtilities.pas', + ClpBlowfishEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpBlowfishEngine.pas', + ClpBip340SchnorrUtilities in '..\..\CryptoLib\src\Crypto\Bip340\ClpBip340SchnorrUtilities.pas', + ClpBip327MuSig2Utilities in '..\..\CryptoLib\src\Crypto\Bip327\ClpBip327MuSig2Utilities.pas', + ClpBip327MuSig2KeyAggregation in '..\..\CryptoLib\src\Crypto\Bip327\ClpBip327MuSig2KeyAggregation.pas', + ClpBip327MuSig2 in '..\..\CryptoLib\src\Crypto\Bip327\ClpBip327MuSig2.pas', + ClpBsiObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Bsi\ClpBsiObjectIdentifiers.pas', + ClpBufferedAsymmetricBlockCipher in '..\..\CryptoLib\src\Crypto\ClpBufferedAsymmetricBlockCipher.pas', + ClpBufferedBlockCipher in '..\..\CryptoLib\src\Crypto\ClpBufferedBlockCipher.pas', + ClpBufferedCipherBase in '..\..\CryptoLib\src\Crypto\ClpBufferedCipherBase.pas', + ClpBufferedStreamCipher in '..\..\CryptoLib\src\Crypto\ClpBufferedStreamCipher.pas', + ClpBufferedIesCipher in '..\..\CryptoLib\src\Crypto\ClpBufferedIesCipher.pas', + ClpChaChaEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpChaChaEngine.pas', + ClpCheck in '..\..\CryptoLib\src\Crypto\ClpCheck.pas', + ClpCodec in '..\..\CryptoLib\src\Math\EC\Rfc8032\ClpCodec.pas', + ClpCipherKeyGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpCipherKeyGenerator.pas', + ClpCipherUtilities in '..\..\CryptoLib\src\Crypto\ClpCipherUtilities.pas', + ClpCollectionUtilities in '..\..\CryptoLib\src\GeneralUtilities\ClpCollectionUtilities.pas', + ClpConverters in '..\..\CryptoLib\src\Misc\ClpConverters.pas', + ClpCryptLibObjectIdentifiers in '..\..\CryptoLib\src\Asn1\CryptLib\ClpCryptLibObjectIdentifiers.pas', + ClpCryptoApiRandomGenerator in '..\..\CryptoLib\src\Rngs\ClpCryptoApiRandomGenerator.pas', + ClpCryptoLibComparers in '..\..\CryptoLib\src\Misc\ClpCryptoLibComparers.pas', + ClpCryptoLibTypes in '..\..\CryptoLib\src\Misc\ClpCryptoLibTypes.pas', + ClpCryptoProObjectIdentifiers in '..\..\CryptoLib\src\Asn1\CryptoPro\ClpCryptoProObjectIdentifiers.pas', + ClpDateTimeUtilities in '..\..\CryptoLib\src\GeneralUtilities\ClpDateTimeUtilities.pas', + ClpDefaultDigestCalculator in '..\..\CryptoLib\src\Crypto\Operators\ClpDefaultDigestCalculator.pas', + ClpDefaultDigestResult in '..\..\CryptoLib\src\Crypto\Operators\ClpDefaultDigestResult.pas', + ClpDefaultMacCalculator in '..\..\CryptoLib\src\Crypto\Operators\ClpDefaultMacCalculator.pas', + ClpDefaultMacResult in '..\..\CryptoLib\src\Crypto\Operators\ClpDefaultMacResult.pas', + ClpDefaultSignatureCalculator in '..\..\CryptoLib\src\Crypto\Operators\ClpDefaultSignatureCalculator.pas', + ClpDefaultSignatureResult in '..\..\CryptoLib\src\Crypto\Operators\ClpDefaultSignatureResult.pas', + ClpDefaultVerifierCalculator in '..\..\CryptoLib\src\Crypto\Operators\ClpDefaultVerifierCalculator.pas', + ClpDefaultVerifierResult in '..\..\CryptoLib\src\Crypto\Operators\ClpDefaultVerifierResult.pas', + ClpDHAgreement in '..\..\CryptoLib\src\Crypto\Agreements\ClpDHAgreement.pas', + ClpDHBasicAgreement in '..\..\CryptoLib\src\Crypto\Agreements\ClpDHBasicAgreement.pas', + ClpDHGenerators in '..\..\CryptoLib\src\Crypto\Generators\ClpDHGenerators.pas', + ClpDHKeyGeneratorHelper in '..\..\CryptoLib\src\Crypto\Generators\ClpDHKeyGeneratorHelper.pas', + ClpDHParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpDHParameters.pas', + ClpDHParametersHelper in '..\..\CryptoLib\src\Crypto\Generators\ClpDHParametersHelper.pas', + ClpDigest in '..\..\CryptoLib\src\Crypto\Digests\ClpDigest.pas', + ClpDigestRandomGenerator in '..\..\CryptoLib\src\Rngs\ClpDigestRandomGenerator.pas', + ClpDigestSink in '..\..\CryptoLib\src\Crypto\IO\ClpDigestSink.pas', + ClpDigestStream in '..\..\CryptoLib\src\Crypto\IO\ClpDigestStream.pas', + ClpDigestUtilities in '..\..\CryptoLib\src\Crypto\Digests\ClpDigestUtilities.pas', + ClpDsaDigestSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpDsaDigestSigner.pas', + ClpDsaGenerators in '..\..\CryptoLib\src\Crypto\Generators\ClpDsaGenerators.pas', + ClpDsaParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpDsaParameters.pas', + ClpDsaSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpDsaSigner.pas', + ClpEacObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Eac\ClpEacObjectIdentifiers.pas', + ClpECAlgorithms in '..\..\CryptoLib\src\Math\EC\ClpECAlgorithms.pas', + ClpECCurve in '..\..\CryptoLib\src\Math\EC\ClpECCurve.pas', + ClpECCurveConstants in '..\..\CryptoLib\src\Math\EC\ClpECCurveConstants.pas', + ClpECDHBasicAgreement in '..\..\CryptoLib\src\Crypto\Agreements\ClpECDHBasicAgreement.pas', + ClpECDHCBasicAgreement in '..\..\CryptoLib\src\Crypto\Agreements\ClpECDHCBasicAgreement.pas', + ClpECParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpECParameters.pas', + ClpECDsaSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpECDsaSigner.pas', + ClpECGost3410NamedCurves in '..\..\CryptoLib\src\Asn1\CryptoPro\ClpECGost3410NamedCurves.pas', + ClpECIESPublicKeyParser in '..\..\CryptoLib\src\Crypto\Parsers\ClpECIESPublicKeyParser.pas', + ClpECGenerators in '..\..\CryptoLib\src\Crypto\Generators\ClpECGenerators.pas', + ClpECNamedCurveTable in '..\..\CryptoLib\src\Asn1\X9\ClpECNamedCurveTable.pas', + ClpECNRSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpECNRSigner.pas', + ClpEd25519 in '..\..\CryptoLib\src\Math\EC\Rfc8032\ClpEd25519.pas', + ClpEd25519CtxSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpEd25519CtxSigner.pas', + ClpEd25519Parameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpEd25519Parameters.pas', + ClpBip340SchnorrParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpBip340SchnorrParameters.pas', + ClpEd25519Generators in '..\..\CryptoLib\src\Crypto\Generators\ClpEd25519Generators.pas', + ClpBip340SchnorrGenerators in '..\..\CryptoLib\src\Crypto\Generators\ClpBip340SchnorrGenerators.pas', + ClpEd25519PhSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpEd25519PhSigner.pas', + ClpEd25519Signer in '..\..\CryptoLib\src\Crypto\Signers\ClpEd25519Signer.pas', + ClpBip340SchnorrSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpBip340SchnorrSigner.pas', + ClpBip340SchnorrBatchVerifier in '..\..\CryptoLib\src\Crypto\Bip340\ClpBip340SchnorrBatchVerifier.pas', + ClpEdECObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Edec\ClpEdECObjectIdentifiers.pas', + ClpEncoders in '..\..\CryptoLib\src\Encoders\ClpEncoders.pas', + ClpEndoPreCompInfo in '..\..\CryptoLib\src\Math\EC\Endo\ClpEndoPreCompInfo.pas', + ClpEnumUtilities in '..\..\CryptoLib\src\GeneralUtilities\ClpEnumUtilities.pas', + ClpEphemeralKeyPair in '..\..\CryptoLib\src\Crypto\ClpEphemeralKeyPair.pas', + ClpEphemeralKeyPairGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpEphemeralKeyPairGenerator.pas', + ClpFiniteFields in '..\..\CryptoLib\src\Math\Field\ClpFiniteFields.pas', + ClpFixedPointPreCompInfo in '..\..\CryptoLib\src\Math\EC\Multiplier\ClpFixedPointPreCompInfo.pas', + ClpFixedPointUtilities in '..\..\CryptoLib\src\Math\EC\Multiplier\ClpFixedPointUtilities.pas', + ClpGeneratorUtilities in '..\..\CryptoLib\src\Crypto\Generators\ClpGeneratorUtilities.pas', + ClpGenericPolynomialExtensionField in '..\..\CryptoLib\src\Math\Field\ClpGenericPolynomialExtensionField.pas', + ClpGenericSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpGenericSigner.pas', + ClpGF2Polynomial in '..\..\CryptoLib\src\Math\Field\ClpGF2Polynomial.pas', + ClpGlvTypeBEndomorphism in '..\..\CryptoLib\src\Math\EC\Endo\ClpGlvTypeBEndomorphism.pas', + ClpGlvTypeBParameters in '..\..\CryptoLib\src\Math\EC\Endo\ClpGlvTypeBParameters.pas', + ClpHkdfBytesGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpHkdfBytesGenerator.pas', + ClpHkdfParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpHkdfParameters.pas', + ClpHMac in '..\..\CryptoLib\src\Crypto\Macs\ClpHMac.pas', + ClpHMacDsaKCalculator in '..\..\CryptoLib\src\Crypto\Signers\SignerCalculators\ClpHMacDsaKCalculator.pas', + ClpIAesEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIAesEngine.pas', + ClpIAesLightEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIAesLightEngine.pas', + ClpIanaObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Iana\ClpIanaObjectIdentifiers.pas', + ClpIArgon2ParametersGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIArgon2ParametersGenerator.pas', + ClpIAsn1Objects in '..\..\CryptoLib\src\Interfaces\Asn1\ClpIAsn1Objects.pas', + ClpIAsymmetricBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIAsymmetricBlockCipher.pas', + ClpIAsymmetricCipherKeyPair in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIAsymmetricCipherKeyPair.pas', + ClpIAsymmetricCipherKeyPairGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIAsymmetricCipherKeyPairGenerator.pas', + ClpIAsymmetricKeyParameter in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIAsymmetricKeyParameter.pas', + ClpIBaseKdfBytesGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIBaseKdfBytesGenerator.pas', + ClpIBasicAgreement in '..\..\CryptoLib\src\Interfaces\Crypto\Agreements\ClpIBasicAgreement.pas', + ClpIBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIBlockCipher.pas', + ClpICbcBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpICbcBlockCipher.pas', + ClpICfbBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpICfbBlockCipher.pas', + ClpICtsBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpICtsBlockCipher.pas', + ClpIOfbBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIOfbBlockCipher.pas', + ClpISicBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpISicBlockCipher.pas', + ClpIBlockCipherPadding in '..\..\CryptoLib\src\Interfaces\Crypto\Paddings\ClpIBlockCipherPadding.pas', + ClpIBlockResult in '..\..\CryptoLib\src\Interfaces\Crypto\Operators\ClpIBlockResult.pas', + ClpIBlowfishEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIBlowfishEngine.pas', + ClpIBufferedAsymmetricBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIBufferedAsymmetricBlockCipher.pas', + ClpIBufferedBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIBufferedBlockCipher.pas', + ClpIBufferedCipher in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIBufferedCipher.pas', + ClpIBufferedCipherBase in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIBufferedCipherBase.pas', + ClpIBufferedStreamCipher in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIBufferedStreamCipher.pas', + ClpIChaChaEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIChaChaEngine.pas', + ClpICipherKeyGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpICipherKeyGenerator.pas', + ClpICipherParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpICipherParameters.pas', + ClpICryptoApiRandomGenerator in '..\..\CryptoLib\src\Interfaces\Rngs\ClpICryptoApiRandomGenerator.pas', + ClpIDerivationFunction in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIDerivationFunction.pas', + ClpIDerivationParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIDerivationParameters.pas', + ClpIDHAgreement in '..\..\CryptoLib\src\Interfaces\Crypto\Agreements\ClpIDHAgreement.pas', + ClpIDHBasicAgreement in '..\..\CryptoLib\src\Interfaces\Crypto\Agreements\ClpIDHBasicAgreement.pas', + ClpIDHGenerators in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIDHGenerators.pas', + ClpIDHParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIDHParameters.pas', + ClpIDigest in '..\..\CryptoLib\src\Interfaces\Crypto\Digests\ClpIDigest.pas', + ClpIDigestFactory in '..\..\CryptoLib\src\Interfaces\Crypto\Operators\ClpIDigestFactory.pas', + ClpIDigestRandomGenerator in '..\..\CryptoLib\src\Interfaces\Rngs\ClpIDigestRandomGenerator.pas', + ClpIDsa in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIDsa.pas', + ClpIDsaDigestSigner in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIDsaDigestSigner.pas', + ClpIDsaKCalculator in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIDsaKCalculator.pas', + ClpIDsaGenerators in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIDsaGenerators.pas', + ClpIDsaParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIDsaParameters.pas', + ClpIDsaSigner in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIDsaSigner.pas', + ClpIECCommon in '..\..\CryptoLib\src\Interfaces\Math\EC\ClpIECCommon.pas', + ClpIECFieldElement in '..\..\CryptoLib\src\Interfaces\Math\EC\ClpIECFieldElement.pas', + ClpIECDHBasicAgreement in '..\..\CryptoLib\src\Interfaces\Crypto\Agreements\ClpIECDHBasicAgreement.pas', + ClpIECDHCBasicAgreement in '..\..\CryptoLib\src\Interfaces\Crypto\Agreements\ClpIECDHCBasicAgreement.pas', + ClpIECParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIECParameters.pas', + ClpIECDsaSigner in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIECDsaSigner.pas', + ClpIECIESPublicKeyParser in '..\..\CryptoLib\src\Interfaces\Crypto\Parsers\ClpIECIESPublicKeyParser.pas', + ClpIECGenerators in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIECGenerators.pas', + ClpIECNRSigner in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIECNRSigner.pas', + ClpIEd25519CtxSigner in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIEd25519CtxSigner.pas', + ClpIEd25519Parameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIEd25519Parameters.pas', + ClpIBip340SchnorrParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIBip340SchnorrParameters.pas', + ClpIEd25519Generators in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIEd25519Generators.pas', + ClpIBip340SchnorrGenerators in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIBip340SchnorrGenerators.pas', + ClpIEd25519PhSigner in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIEd25519PhSigner.pas', + ClpIEd25519Signer in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIEd25519Signer.pas', + ClpIBip340SchnorrSigner in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIBip340SchnorrSigner.pas', + ClpIEndoPreCompInfo in '..\..\CryptoLib\src\Interfaces\Math\EC\Endo\ClpIEndoPreCompInfo.pas', + ClpIEphemeralKeyPair in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIEphemeralKeyPair.pas', + ClpIEphemeralKeyPairGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIEphemeralKeyPairGenerator.pas', + ClpIesEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpIesEngine.pas', + ClpIesParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpIesParameters.pas', + ClpIetfUtilities in '..\..\CryptoLib\src\Asn1\X500\Style\ClpIetfUtilities.pas', + ClpIExtensionField in '..\..\CryptoLib\src\Interfaces\Math\Field\ClpIExtensionField.pas', + ClpIFiniteField in '..\..\CryptoLib\src\Interfaces\Math\Field\ClpIFiniteField.pas', + ClpIFixedPointPreCompInfo in '..\..\CryptoLib\src\Interfaces\Math\EC\Multiplier\ClpIFixedPointPreCompInfo.pas', + ClpIGenericPolynomialExtensionField in '..\..\CryptoLib\src\Interfaces\Math\Field\ClpIGenericPolynomialExtensionField.pas', + ClpIGenericSigner in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIGenericSigner.pas', + ClpIGF2Polynomial in '..\..\CryptoLib\src\Interfaces\Math\Field\ClpIGF2Polynomial.pas', + ClpIGlvTypeBEndomorphism in '..\..\CryptoLib\src\Interfaces\Math\EC\Endo\ClpIGlvTypeBEndomorphism.pas', + ClpIGlvTypeBParameters in '..\..\CryptoLib\src\Interfaces\Math\EC\Endo\ClpIGlvTypeBParameters.pas', + ClpIHkdfBytesGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIHkdfBytesGenerator.pas', + ClpIHkdfParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIHkdfParameters.pas', + ClpIHMac in '..\..\CryptoLib\src\Interfaces\Crypto\Macs\ClpIHMac.pas', + ClpIHMacDsaKCalculator in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\SignerCalculators\ClpIHMacDsaKCalculator.pas', + ClpIIesEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIIesEngine.pas', + ClpIIesParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIIesParameters.pas', + ClpIIso18033KdfParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIIso18033KdfParameters.pas', + ClpIISO9796d1Encoding in '..\..\CryptoLib\src\Interfaces\Crypto\Encodings\ClpIISO9796d1Encoding.pas', + ClpIKdf1BytesGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIKdf1BytesGenerator.pas', + ClpIKdf2BytesGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIKdf2BytesGenerator.pas', + ClpIKdfParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIKdfParameters.pas', + ClpIKeyEncoder in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIKeyEncoder.pas', + ClpIKeyGenerationParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIKeyGenerationParameters.pas', + ClpIKeyParameter in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIKeyParameter.pas', + ClpIKeyParser in '..\..\CryptoLib\src\Interfaces\ClpIKeyParser.pas', + ClpIKMac in '..\..\CryptoLib\src\Interfaces\Crypto\Macs\ClpIKMac.pas', + ClpIMac in '..\..\CryptoLib\src\Interfaces\Crypto\Macs\ClpIMac.pas', + ClpIMacFactory in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIMacFactory.pas', + ClpIOaepEncoding in '..\..\CryptoLib\src\Interfaces\Crypto\Encodings\ClpIOaepEncoding.pas', + ClpIOidTokenizer in '..\..\CryptoLib\src\Interfaces\Asn1\ClpIOidTokenizer.pas', + ClpIPaddedBufferedBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Paddings\ClpIPaddedBufferedBlockCipher.pas', + ClpIISO10126d2Padding in '..\..\CryptoLib\src\Interfaces\Crypto\Paddings\ClpIISO10126d2Padding.pas', + ClpIISO7816d4Padding in '..\..\CryptoLib\src\Interfaces\Crypto\Paddings\ClpIISO7816d4Padding.pas', + ClpIPkcs7Padding in '..\..\CryptoLib\src\Interfaces\Crypto\Paddings\ClpIPkcs7Padding.pas', + ClpITBCPadding in '..\..\CryptoLib\src\Interfaces\Crypto\Paddings\ClpITBCPadding.pas', + ClpIX923Padding in '..\..\CryptoLib\src\Interfaces\Crypto\Paddings\ClpIX923Padding.pas', + ClpIZeroBytePadding in '..\..\CryptoLib\src\Interfaces\Crypto\Paddings\ClpIZeroBytePadding.pas', + ClpIPAddressUtilities in '..\..\CryptoLib\src\Net\ClpIPAddressUtilities.pas', + ClpIParametersWithIV in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIParametersWithIV.pas', + ClpIParametersWithRandom in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIParametersWithRandom.pas', + ClpIPascalCoinECIESKdfBytesGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIPascalCoinECIESKdfBytesGenerator.pas', + ClpIPascalCoinIesEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIPascalCoinIesEngine.pas', + ClpIPbeParametersGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIPbeParametersGenerator.pas', + ClpIPemHeader in '..\..\CryptoLib\src\Interfaces\Pem\ClpIPemHeader.pas', + ClpIPemObject in '..\..\CryptoLib\src\Interfaces\Pem\ClpIPemObject.pas', + ClpIPkcs1Encoding in '..\..\CryptoLib\src\Interfaces\Crypto\Encodings\ClpIPkcs1Encoding.pas', + ClpIPkcs5S2ParametersGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIPkcs5S2ParametersGenerator.pas', + ClpIPkcsAsn1Objects in '..\..\CryptoLib\src\Interfaces\Asn1\Pkcs\ClpIPkcsAsn1Objects.pas', + ClpIPolynomial in '..\..\CryptoLib\src\Interfaces\Math\Field\ClpIPolynomial.pas', + ClpIPolynomialExtensionField in '..\..\CryptoLib\src\Interfaces\Math\Field\ClpIPolynomialExtensionField.pas', + ClpIPreCompCallback in '..\..\CryptoLib\src\Interfaces\Math\EC\Multiplier\ClpIPreCompCallback.pas', + ClpIPreCompInfo in '..\..\CryptoLib\src\Interfaces\Math\EC\Multiplier\ClpIPreCompInfo.pas', + ClpIPrehash in '..\..\CryptoLib\src\Interfaces\Crypto\Digests\ClpIPrehash.pas', + ClpIPrimeField in '..\..\CryptoLib\src\Interfaces\Math\Field\ClpIPrimeField.pas', + ClpIPssSigner in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIPssSigner.pas', + ClpIRandom in '..\..\CryptoLib\src\Interfaces\Crypto\Randoms\ClpIRandom.pas', + ClpIRandomDsaKCalculator in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\SignerCalculators\ClpIRandomDsaKCalculator.pas', + ClpIRandomGenerator in '..\..\CryptoLib\src\Interfaces\Rngs\ClpIRandomGenerator.pas', + ClpIRawAgreement in '..\..\CryptoLib\src\Interfaces\Crypto\Agreements\ClpIRawAgreement.pas', + ClpIRijndaelEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIRijndaelEngine.pas', + ClpIRsa in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIRsa.pas', + ClpIRsaBlindedEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIRsaBlindedEngine.pas', + ClpIRsaBlindingEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIRsaBlindingEngine.pas', + ClpIRsaGenerators in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIRsaGenerators.pas', + ClpIRsaCoreEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIRsaCoreEngine.pas', + ClpIRsaDigestSigner in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIRsaDigestSigner.pas', + ClpIRsaEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIRsaEngine.pas', + ClpIRsaParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIRsaParameters.pas', + ClpISalsa20Engine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpISalsa20Engine.pas', + ClpIScalarSplitParameters in '..\..\CryptoLib\src\Interfaces\Math\EC\Endo\ClpIScalarSplitParameters.pas', + ClpIScryptParametersGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIScryptParametersGenerator.pas', + ClpISecECAsn1Objects in '..\..\CryptoLib\src\Interfaces\Asn1\Sec\ClpISecECAsn1Objects.pas', + ClpISecP256K1Custom in '..\..\CryptoLib\src\Interfaces\Math\EC\Custom\Sec\ClpISecP256K1Custom.pas', + ClpISecP256R1Custom in '..\..\CryptoLib\src\Interfaces\Math\EC\Custom\Sec\ClpISecP256R1Custom.pas', + ClpISecP384R1Custom in '..\..\CryptoLib\src\Interfaces\Math\EC\Custom\Sec\ClpISecP384R1Custom.pas', + ClpISecP521R1Custom in '..\..\CryptoLib\src\Interfaces\Math\EC\Custom\Sec\ClpISecP521R1Custom.pas', + ClpISecT283K1Custom in '..\..\CryptoLib\src\Interfaces\Math\EC\Custom\Sec\ClpISecT283K1Custom.pas', + ClpISecureRandom in '..\..\CryptoLib\src\Interfaces\Crypto\Randoms\ClpISecureRandom.pas', + ClpISignatureFactory in '..\..\CryptoLib\src\Interfaces\Crypto\Operators\ClpISignatureFactory.pas', + ClpISigner in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpISigner.pas', + ClpIDsaEncoding in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\SignerEncodings\ClpIDsaEncoding.pas', + ClpIStandardDsaEncoding in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\SignerEncodings\ClpIStandardDsaEncoding.pas', + ClpIPlainDsaEncoding in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\SignerEncodings\ClpIPlainDsaEncoding.pas', + ClpIso18033KdfParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpIso18033KdfParameters.pas', + ClpISO9796d1Encoding in '..\..\CryptoLib\src\Crypto\Encodings\ClpISO9796d1Encoding.pas', + ClpIsoTrailers in '..\..\CryptoLib\src\Crypto\Signers\ClpIsoTrailers.pas', + ClpISpeckEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpISpeckEngine.pas', + ClpISpeckLegacyEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpISpeckLegacyEngine.pas', + ClpIStreamCalculator in '..\..\CryptoLib\src\Interfaces\Crypto\Operators\ClpIStreamCalculator.pas', + ClpIStreamCipher in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIStreamCipher.pas', + ClpIValidityPreCompInfo in '..\..\CryptoLib\src\Interfaces\Math\EC\Multiplier\ClpIValidityPreCompInfo.pas', + ClpIVerifier in '..\..\CryptoLib\src\Interfaces\Crypto\Operators\ClpIVerifier.pas', + ClpIVerifierFactory in '..\..\CryptoLib\src\Interfaces\Crypto\Operators\ClpIVerifierFactory.pas', + ClpIVerifierFactoryProvider in '..\..\CryptoLib\src\Interfaces\Crypto\Operators\ClpIVerifierFactoryProvider.pas', + ClpIWNafPreCompInfo in '..\..\CryptoLib\src\Interfaces\Math\EC\Multiplier\ClpIWNafPreCompInfo.pas', + ClpIWTauNafPreCompInfo in '..\..\CryptoLib\src\Interfaces\Math\EC\Multiplier\ClpIWTauNafPreCompInfo.pas', + ClpIX25519Agreement in '..\..\CryptoLib\src\Interfaces\Crypto\Agreements\ClpIX25519Agreement.pas', + ClpIX25519Parameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIX25519Parameters.pas', + ClpIX25519Generators in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIX25519Generators.pas', + ClpIX509Asn1Objects in '..\..\CryptoLib\src\Interfaces\Asn1\X509\ClpIX509Asn1Objects.pas', + ClpIX509Asn1Generators in '..\..\CryptoLib\src\Interfaces\Asn1\X509\ClpIX509Asn1Generators.pas', + ClpIX509NameEntryConverter in '..\..\CryptoLib\src\Interfaces\Asn1\X509\ClpIX509NameEntryConverter.pas', + ClpIX509NameTokenizer in '..\..\CryptoLib\src\Interfaces\Asn1\X509\ClpIX509NameTokenizer.pas', + ClpIX9DHAsn1Objects in '..\..\CryptoLib\src\Interfaces\Asn1\X9\ClpIX9DHAsn1Objects.pas', + ClpIX9ECAsn1Objects in '..\..\CryptoLib\src\Interfaces\Asn1\X9\ClpIX9ECAsn1Objects.pas', + ClpIXSalsa20Engine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIXSalsa20Engine.pas', + ClpIZTauElement in '..\..\CryptoLib\src\Interfaces\Math\EC\Abc\ClpIZTauElement.pas', + ClpKdf1BytesGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpKdf1BytesGenerator.pas', + ClpKdf2BytesGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpKdf2BytesGenerator.pas', + ClpKdfParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpKdfParameters.pas', + ClpECKeyEncoder in '..\..\CryptoLib\src\Crypto\ClpECKeyEncoder.pas', + ClpKeyGenerationParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpKeyGenerationParameters.pas', + ClpKeyParameter in '..\..\CryptoLib\src\Crypto\Parameters\ClpKeyParameter.pas', + ClpKMac in '..\..\CryptoLib\src\Crypto\Macs\ClpKMac.pas', + ClpLongArray in '..\..\CryptoLib\src\Math\EC\ClpLongArray.pas', + ClpMacUtilities in '..\..\CryptoLib\src\Crypto\Macs\ClpMacUtilities.pas', + ClpMiscObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Misc\ClpMiscObjectIdentifiers.pas', + ClpMultipliers in '..\..\CryptoLib\src\Math\EC\Multiplier\ClpMultipliers.pas', + ClpNistNamedCurves in '..\..\CryptoLib\src\Asn1\Nist\ClpNistNamedCurves.pas', + ClpNistObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Nist\ClpNistObjectIdentifiers.pas', + ClpNoOpDigest in '..\..\CryptoLib\src\Crypto\Digests\ClpNoOpDigest.pas', + ClpOaepEncoding in '..\..\CryptoLib\src\Crypto\Encodings\ClpOaepEncoding.pas', + ClpOidTokenizer in '..\..\CryptoLib\src\Asn1\ClpOidTokenizer.pas', + ClpOiwObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Oiw\ClpOiwObjectIdentifiers.pas', + ClpPaddedBufferedBlockCipher in '..\..\CryptoLib\src\Crypto\Paddings\ClpPaddedBufferedBlockCipher.pas', + ClpISO10126d2Padding in '..\..\CryptoLib\src\Crypto\Paddings\ClpISO10126d2Padding.pas', + ClpISO7816d4Padding in '..\..\CryptoLib\src\Crypto\Paddings\ClpISO7816d4Padding.pas', + ClpPkcs7Padding in '..\..\CryptoLib\src\Crypto\Paddings\ClpPkcs7Padding.pas', + ClpTBCPadding in '..\..\CryptoLib\src\Crypto\Paddings\ClpTBCPadding.pas', + ClpX923Padding in '..\..\CryptoLib\src\Crypto\Paddings\ClpX923Padding.pas', + ClpZeroBytePadding in '..\..\CryptoLib\src\Crypto\Paddings\ClpZeroBytePadding.pas', + ClpParametersWithIV in '..\..\CryptoLib\src\Crypto\Parameters\ClpParametersWithIV.pas', + ClpParametersWithRandom in '..\..\CryptoLib\src\Crypto\Parameters\ClpParametersWithRandom.pas', + ClpParameterUtilities in '..\..\CryptoLib\src\Crypto\Parameters\ClpParameterUtilities.pas', + ClpPascalCoinECIESKdfBytesGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpPascalCoinECIESKdfBytesGenerator.pas', + ClpPascalCoinIesEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpPascalCoinIesEngine.pas', + ClpPbeParametersGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpPbeParametersGenerator.pas', + ClpPemHeader in '..\..\CryptoLib\src\Pem\ClpPemHeader.pas', + ClpPemObject in '..\..\CryptoLib\src\Pem\ClpPemObject.pas', + ClpPkcs1Encoding in '..\..\CryptoLib\src\Crypto\Encodings\ClpPkcs1Encoding.pas', + ClpPkcs5S2ParametersGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpPkcs5S2ParametersGenerator.pas', + ClpPkcsAsn1Objects in '..\..\CryptoLib\src\Asn1\Pkcs\ClpPkcsAsn1Objects.pas', + ClpPkcsObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Pkcs\ClpPkcsObjectIdentifiers.pas', + ClpPlatformUtilities in '..\..\CryptoLib\src\GeneralUtilities\ClpPlatformUtilities.pas', + ClpPrehash in '..\..\CryptoLib\src\Crypto\Digests\ClpPrehash.pas', + ClpPrimeField in '..\..\CryptoLib\src\Math\Field\ClpPrimeField.pas', + ClpPrivateKeyFactory in '..\..\CryptoLib\src\Factories\ClpPrivateKeyFactory.pas', + ClpPssSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpPssSigner.pas', + ClpPublicKeyFactory in '..\..\CryptoLib\src\Factories\ClpPublicKeyFactory.pas', + ClpRandom in '..\..\CryptoLib\src\Crypto\Randoms\ClpRandom.pas', + ClpRandomDsaKCalculator in '..\..\CryptoLib\src\Crypto\Signers\SignerCalculators\ClpRandomDsaKCalculator.pas', + ClpRfc5280Asn1Utilities in '..\..\CryptoLib\src\Asn1\X509\ClpRfc5280Asn1Utilities.pas', + ClpRijndaelEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRijndaelEngine.pas', + ClpRosstandartObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Rosstandart\ClpRosstandartObjectIdentifiers.pas', + ClpRsaBlindedEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRsaBlindedEngine.pas', + ClpRsaBlindingEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRsaBlindingEngine.pas', + ClpRsaGenerators in '..\..\CryptoLib\src\Crypto\Generators\ClpRsaGenerators.pas', + ClpRsaCoreEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRsaCoreEngine.pas', + ClpRsaDigestSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpRsaDigestSigner.pas', + ClpRsaEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRsaEngine.pas', + ClpRsaParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpRsaParameters.pas', + ClpSalsa20Engine in '..\..\CryptoLib\src\Crypto\Engines\ClpSalsa20Engine.pas', + ClpScalarSplitParameters in '..\..\CryptoLib\src\Math\EC\Endo\ClpScalarSplitParameters.pas', + ClpECPointMaps in '..\..\CryptoLib\src\Math\EC\ClpECPointMaps.pas', + ClpScryptParametersGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpScryptParametersGenerator.pas', + ClpSecECAsn1Objects in '..\..\CryptoLib\src\Asn1\Sec\ClpSecECAsn1Objects.pas', + ClpSecNamedCurves in '..\..\CryptoLib\src\Asn1\Sec\ClpSecNamedCurves.pas', + ClpSecObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Sec\ClpSecObjectIdentifiers.pas', + ClpSecP256K1Custom in '..\..\CryptoLib\src\Math\EC\Custom\Sec\ClpSecP256K1Custom.pas', + ClpSecP256R1Custom in '..\..\CryptoLib\src\Math\EC\Custom\Sec\ClpSecP256R1Custom.pas', + ClpSecP384R1Custom in '..\..\CryptoLib\src\Math\EC\Custom\Sec\ClpSecP384R1Custom.pas', + ClpSecP521R1Custom in '..\..\CryptoLib\src\Math\EC\Custom\Sec\ClpSecP521R1Custom.pas', + ClpSecT283K1Custom in '..\..\CryptoLib\src\Math\EC\Custom\Sec\ClpSecT283K1Custom.pas', + ClpSecureRandom in '..\..\CryptoLib\src\Crypto\Randoms\ClpSecureRandom.pas', + ClpWeakRef in '..\..\CryptoLib\src\Misc\ClpWeakRef.pas', + ClpStandardDsaEncoding in '..\..\CryptoLib\src\Crypto\Signers\SignerEncodings\ClpStandardDsaEncoding.pas', + ClpPlainDsaEncoding in '..\..\CryptoLib\src\Crypto\Signers\SignerEncodings\ClpPlainDsaEncoding.pas', + ClpSignerSink in '..\..\CryptoLib\src\Crypto\IO\ClpSignerSink.pas', + ClpSignerStream in '..\..\CryptoLib\src\Crypto\IO\ClpSignerStream.pas', + ClpScalar25519 in '..\..\CryptoLib\src\Math\EC\Rfc8032\ClpScalar25519.pas', + ClpScalarUtilities in '..\..\CryptoLib\src\Math\EC\Rfc8032\ClpScalarUtilities.pas', + ClpSignerUtilities in '..\..\CryptoLib\src\Crypto\Signers\ClpSignerUtilities.pas', + ClpSimpleBigDecimal in '..\..\CryptoLib\src\Math\EC\Abc\ClpSimpleBigDecimal.pas', + ClpSpeckEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpSpeckEngine.pas', + ClpSpeckLegacyEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpSpeckLegacyEngine.pas', + ClpStreams in '..\..\CryptoLib\src\IO\ClpStreams.pas', + ClpStreamUtilities in '..\..\CryptoLib\src\IO\ClpStreamUtilities.pas', + ClpStringUtilities in '..\..\CryptoLib\src\GeneralUtilities\ClpStringUtilities.pas', + ClpSubjectPublicKeyInfoFactory in '..\..\CryptoLib\src\Factories\ClpSubjectPublicKeyInfoFactory.pas', + ClpTeleTrusTNamedCurves in '..\..\CryptoLib\src\Asn1\TeleTrust\ClpTeleTrusTNamedCurves.pas', + ClpTeleTrusTObjectIdentifiers in '..\..\CryptoLib\src\Asn1\TeleTrust\ClpTeleTrusTObjectIdentifiers.pas', + ClpTnaf in '..\..\CryptoLib\src\Math\EC\Abc\ClpTnaf.pas', + ClpValidityPreCompInfo in '..\..\CryptoLib\src\Math\EC\Multiplier\ClpValidityPreCompInfo.pas', + ClpWNafPreCompInfo in '..\..\CryptoLib\src\Math\EC\Multiplier\ClpWNafPreCompInfo.pas', + ClpWTauNafPreCompInfo in '..\..\CryptoLib\src\Math\EC\Multiplier\ClpWTauNafPreCompInfo.pas', + ClpWnaf in '..\..\CryptoLib\src\Math\EC\Rfc8032\ClpWnaf.pas', + ClpX25519 in '..\..\CryptoLib\src\Math\EC\Rfc7748\ClpX25519.pas', + ClpX25519Agreement in '..\..\CryptoLib\src\Crypto\Agreements\ClpX25519Agreement.pas', + ClpX25519Field in '..\..\CryptoLib\src\Math\EC\Rfc7748\ClpX25519Field.pas', + ClpX25519Parameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpX25519Parameters.pas', + ClpX25519Generators in '..\..\CryptoLib\src\Crypto\Generators\ClpX25519Generators.pas', + ClpX509Asn1Objects in '..\..\CryptoLib\src\Asn1\X509\ClpX509Asn1Objects.pas', + ClpX509DefaultEntryConverter in '..\..\CryptoLib\src\Asn1\X509\ClpX509DefaultEntryConverter.pas', + ClpX509Extension in '..\..\CryptoLib\src\Asn1\X509\ClpX509Extension.pas', + ClpX509Asn1Generators in '..\..\CryptoLib\src\Asn1\X509\ClpX509Asn1Generators.pas', + ClpX509NameEntryConverter in '..\..\CryptoLib\src\Asn1\X509\ClpX509NameEntryConverter.pas', + ClpX509NameTokenizer in '..\..\CryptoLib\src\Asn1\X509\ClpX509NameTokenizer.pas', + ClpX509ObjectIdentifiers in '..\..\CryptoLib\src\Asn1\X509\ClpX509ObjectIdentifiers.pas', + ClpX509SignatureUtilities in '..\..\CryptoLib\src\Asn1\X509\ClpX509SignatureUtilities.pas', + ClpX509ExtensionUtilities in '..\..\CryptoLib\src\X509\Extension\ClpX509ExtensionUtilities.pas', + ClpAttributeCertificateHolder in '..\..\CryptoLib\src\X509\ClpAttributeCertificateHolder.pas', + ClpAttributeCertificateIssuer in '..\..\CryptoLib\src\X509\ClpAttributeCertificateIssuer.pas', + ClpDeltaCertificateTool in '..\..\CryptoLib\src\X509\ClpDeltaCertificateTool.pas', + ClpX509AttrCertParser in '..\..\CryptoLib\src\X509\ClpX509AttrCertParser.pas', + ClpX509Attribute in '..\..\CryptoLib\src\X509\ClpX509Attribute.pas', + ClpX509Certificate in '..\..\CryptoLib\src\X509\ClpX509Certificate.pas', + ClpX509CertificateParser in '..\..\CryptoLib\src\X509\ClpX509CertificateParser.pas', + ClpX509Crl in '..\..\CryptoLib\src\X509\ClpX509Crl.pas', + ClpX509CrlEntry in '..\..\CryptoLib\src\X509\ClpX509CrlEntry.pas', + ClpX509CrlParser in '..\..\CryptoLib\src\X509\ClpX509CrlParser.pas', + ClpX509ExtensionBase in '..\..\CryptoLib\src\X509\ClpX509ExtensionBase.pas', + ClpX509Generators in '..\..\CryptoLib\src\X509\ClpX509Generators.pas', + ClpX509Utilities in '..\..\CryptoLib\src\X509\ClpX509Utilities.pas', + ClpX509V2AttributeCertificate in '..\..\CryptoLib\src\X509\ClpX509V2AttributeCertificate.pas', + ClpIX509Generators in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509Generators.pas', + ClpIAttributeCertificateHolder in '..\..\CryptoLib\src\Interfaces\X509\ClpIAttributeCertificateHolder.pas', + ClpIAttributeCertificateIssuer in '..\..\CryptoLib\src\Interfaces\X509\ClpIAttributeCertificateIssuer.pas', + ClpIX509Attribute in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509Attribute.pas', + ClpIX509V2AttributeCertificate in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509V2AttributeCertificate.pas', + ClpIX931Signer in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIX931Signer.pas', + ClpX931Signer in '..\..\CryptoLib\src\Crypto\Signers\ClpX931Signer.pas', + ClpX9DHAsn1Objects in '..\..\CryptoLib\src\Asn1\X9\ClpX9DHAsn1Objects.pas', + ClpX9ECAsn1Objects in '..\..\CryptoLib\src\Asn1\X9\ClpX9ECAsn1Objects.pas', + ClpX9ObjectIdentifiers in '..\..\CryptoLib\src\Asn1\X9\ClpX9ObjectIdentifiers.pas', + ClpXSalsa20Engine in '..\..\CryptoLib\src\Crypto\Engines\ClpXSalsa20Engine.pas', + ClpZTauElement in '..\..\CryptoLib\src\Math\EC\Abc\ClpZTauElement.pas', + ClpIOSRandomProvider in '..\..\CryptoLib\src\Rngs\Providers\ClpIOSRandomProvider.pas', + ClpMacOSRandomProvider in '..\..\CryptoLib\src\Rngs\Providers\ClpMacOSRandomProvider.pas', + ClpBsdRandomProvider in '..\..\CryptoLib\src\Rngs\Providers\ClpBsdRandomProvider.pas', + ClpLinuxRandomProvider in '..\..\CryptoLib\src\Rngs\Providers\ClpLinuxRandomProvider.pas', + ClpSolarisRandomProvider in '..\..\CryptoLib\src\Rngs\Providers\ClpSolarisRandomProvider.pas', + ClpUnixLikeRandomProvider in '..\..\CryptoLib\src\Rngs\Providers\ClpUnixLikeRandomProvider.pas', + ClpWindowsRandomProvider in '..\..\CryptoLib\src\Rngs\Providers\ClpWindowsRandomProvider.pas', + ClpRandomNumberGenerator in '..\..\CryptoLib\src\Rngs\ClpRandomNumberGenerator.pas', + ClpAndroidRandomProvider in '..\..\CryptoLib\src\Rngs\Providers\ClpAndroidRandomProvider.pas', + ClpIRandomSourceProvider in '..\..\CryptoLib\src\Interfaces\Rngs\Providers\ClpIRandomSourceProvider.pas', + ClpOSRandomProvider in '..\..\CryptoLib\src\Rngs\Providers\ClpOSRandomProvider.pas', + ClpIRandomNumberGenerator in '..\..\CryptoLib\src\Interfaces\Rngs\ClpIRandomNumberGenerator.pas', + ClpAesRandomProvider in '..\..\CryptoLib\src\Rngs\Providers\ClpAesRandomProvider.pas', + ClpUnixLikeRngCommon in '..\..\CryptoLib\src\Rngs\Providers\ClpUnixLikeRngCommon.pas', + ClpDevRandomReader in '..\..\CryptoLib\src\Rngs\Providers\ClpDevRandomReader.pas', + ClpGetRandomReader in '..\..\CryptoLib\src\Rngs\Providers\ClpGetRandomReader.pas', + ClpArc4RandomBufReader in '..\..\CryptoLib\src\Rngs\Providers\ClpArc4RandomBufReader.pas', + ClpSecRandomCopyBytesReader in '..\..\CryptoLib\src\Rngs\Providers\ClpSecRandomCopyBytesReader.pas', + ClpBaseRandomProvider in '..\..\CryptoLib\src\Rngs\Providers\ClpBaseRandomProvider.pas', + ClpAsn1Parsers in '..\..\CryptoLib\src\Asn1\ClpAsn1Parsers.pas', + ClpAsn1Core in '..\..\CryptoLib\src\Asn1\ClpAsn1Core.pas', + ClpIAsn1Parsers in '..\..\CryptoLib\src\Interfaces\Asn1\ClpIAsn1Parsers.pas', + ClpIAsn1Core in '..\..\CryptoLib\src\Interfaces\Asn1\ClpIAsn1Core.pas', + ClpAsn1Tags in '..\..\CryptoLib\src\Asn1\ClpAsn1Tags.pas', + ClpIAsn1Encodings in '..\..\CryptoLib\src\Interfaces\Asn1\ClpIAsn1Encodings.pas', + ClpAsn1Encodings in '..\..\CryptoLib\src\Asn1\ClpAsn1Encodings.pas', + ClpAsn1Generators in '..\..\CryptoLib\src\Asn1\ClpAsn1Generators.pas', + ClpIAsn1Generators in '..\..\CryptoLib\src\Interfaces\Asn1\ClpIAsn1Generators.pas', + ClpPkcs10CertificationRequest in '..\..\CryptoLib\src\Pkcs\ClpPkcs10CertificationRequest.pas', + ClpPkcs10CertificationRequestBuilder in '..\..\CryptoLib\src\Pkcs\ClpPkcs10CertificationRequestBuilder.pas', + ClpIPkcs10CertificationRequestBuilder in '..\..\CryptoLib\src\Interfaces\Pkcs\ClpIPkcs10CertificationRequestBuilder.pas', + ClpIX509Certificate in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509Certificate.pas', + ClpIX509CertificateParser in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509CertificateParser.pas', + ClpIX509CrlEntry in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509CrlEntry.pas', + ClpIX509Crl in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509Crl.pas', + ClpIX509CrlParser in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509CrlParser.pas', + ClpIX509AttrCertParser in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509AttrCertParser.pas', + ClpIX509Extension in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509Extension.pas', + ClpIPkcs10CertificationRequest in '..\..\CryptoLib\src\Interfaces\Pkcs\ClpIPkcs10CertificationRequest.pas', + ClpX9IntegerConverter in '..\..\CryptoLib\src\Asn1\X9\ClpX9IntegerConverter.pas', + ClpPkcsRsaAsn1Objects in '..\..\CryptoLib\src\Asn1\Pkcs\ClpPkcsRsaAsn1Objects.pas', + ClpIPkcsRsaAsn1Objects in '..\..\CryptoLib\src\Interfaces\Asn1\Pkcs\ClpIPkcsRsaAsn1Objects.pas', + ClpIX509DsaAsn1Objects in '..\..\CryptoLib\src\Interfaces\Asn1\X509\ClpIX509DsaAsn1Objects.pas', + ClpIX509RsaAsn1Objects in '..\..\CryptoLib\src\Interfaces\Asn1\X509\ClpIX509RsaAsn1Objects.pas', + ClpX509DsaAsn1Objects in '..\..\CryptoLib\src\Asn1\X509\ClpX509DsaAsn1Objects.pas', + ClpX509RsaAsn1Objects in '..\..\CryptoLib\src\Asn1\X509\ClpX509RsaAsn1Objects.pas', + ClpBinaryPrimitives in '..\..\CryptoLib\src\Misc\ClpBinaryPrimitives.pas', + ClpBitOperations in '..\..\CryptoLib\src\Misc\ClpBitOperations.pas', + ClpCpuFeatures in '..\..\CryptoLib\src\Misc\ClpCpuFeatures.pas', + ClpArmSimdFeatures in '..\..\CryptoLib\src\Misc\ClpArmSimdFeatures.pas', + ClpSimdLevels in '..\..\CryptoLib\src\Misc\ClpSimdLevels.pas', + ClpX86SimdFeatures in '..\..\CryptoLib\src\Misc\ClpX86SimdFeatures.pas', + ClpArmHwCapProvider in '..\..\CryptoLib\src\Misc\ClpArmHwCapProvider.pas', + ClpDarwinSysCtl in '..\..\CryptoLib\src\Misc\ClpDarwinSysCtl.pas', + ClpIntrinsicsVector in '..\..\CryptoLib\src\Misc\ClpIntrinsicsVector.pas', + ClpPack in '..\..\CryptoLib\src\Misc\ClpPack.pas', + ClpBits in '..\..\CryptoLib\src\Math\Raw\ClpBits.pas', + ClpMod in '..\..\CryptoLib\src\Math\Raw\ClpMod.pas', + ClpInterleave in '..\..\CryptoLib\src\Math\Raw\ClpInterleave.pas', + ClpNat in '..\..\CryptoLib\src\Math\Raw\ClpNat.pas', + ClpNat128 in '..\..\CryptoLib\src\Math\Raw\ClpNat128.pas', + ClpNat160 in '..\..\CryptoLib\src\Math\Raw\ClpNat160.pas', + ClpNat192 in '..\..\CryptoLib\src\Math\Raw\ClpNat192.pas', + ClpNat224 in '..\..\CryptoLib\src\Math\Raw\ClpNat224.pas', + ClpNat256 in '..\..\CryptoLib\src\Math\Raw\ClpNat256.pas', + ClpNat320 in '..\..\CryptoLib\src\Math\Raw\ClpNat320.pas', + ClpNat384 in '..\..\CryptoLib\src\Math\Raw\ClpNat384.pas', + ClpNat448 in '..\..\CryptoLib\src\Math\Raw\ClpNat448.pas', + ClpNat512 in '..\..\CryptoLib\src\Math\Raw\ClpNat512.pas', + ClpNat576 in '..\..\CryptoLib\src\Math\Raw\ClpNat576.pas', + ClpNullable in '..\..\CryptoLib\src\Misc\ClpNullable.pas', + ClpECPoint in '..\..\CryptoLib\src\Math\EC\ClpECPoint.pas', + ClpECFieldElement in '..\..\CryptoLib\src\Math\EC\ClpECFieldElement.pas', + ClpECLookupTables in '..\..\CryptoLib\src\Math\EC\ClpECLookupTables.pas', + ClpEndoUtilities in '..\..\CryptoLib\src\Math\EC\Endo\ClpEndoUtilities.pas', + ClpWNafUtilities in '..\..\CryptoLib\src\Math\EC\Multiplier\ClpWNafUtilities.pas', + ClpCustomNamedCurves in '..\..\CryptoLib\src\Crypto\EC\ClpCustomNamedCurves.pas', + ClpECUtilities in '..\..\CryptoLib\src\Crypto\EC\ClpECUtilities.pas', + ClpX962NamedCurves in '..\..\CryptoLib\src\Asn1\X9\ClpX962NamedCurves.pas', + ClpX509NameBuilder in '..\..\CryptoLib\src\X509\ClpX509NameBuilder.pas', + ClpIX509NameBuilder in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509NameBuilder.pas', + ClpCmsAsn1Objects in '..\..\CryptoLib\src\Asn1\Cms\ClpCmsAsn1Objects.pas', + ClpCmsECAsn1Objects in '..\..\CryptoLib\src\Asn1\Cms\ClpCmsECAsn1Objects.pas', + ClpCmsObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Cms\ClpCmsObjectIdentifiers.pas', + ClpCmsParsers in '..\..\CryptoLib\src\Asn1\Cms\ClpCmsParsers.pas', + ClpICmsAsn1Objects in '..\..\CryptoLib\src\Interfaces\Asn1\Cms\ClpICmsAsn1Objects.pas', + ClpICmsECAsn1Objects in '..\..\CryptoLib\src\Interfaces\Asn1\Cms\ClpICmsECAsn1Objects.pas', + ClpICmsParsers in '..\..\CryptoLib\src\Interfaces\Asn1\Cms\ClpICmsParsers.pas', + ClpCurve25519KeyUtilities in '..\..\CryptoLib\src\Crypto\Parameters\ClpCurve25519KeyUtilities.pas', + ClpOpenSslMiscPemGenerator in '..\..\CryptoLib\src\OpenSsl\ClpOpenSslMiscPemGenerator.pas', + ClpIOpenSslPkcs8Generator in '..\..\CryptoLib\src\Interfaces\OpenSsl\ClpIOpenSslPkcs8Generator.pas', + ClpOpenSslPkcs8Generator in '..\..\CryptoLib\src\OpenSsl\ClpOpenSslPkcs8Generator.pas', + ClpPrivateKeyInfoFactory in '..\..\CryptoLib\src\Factories\ClpPrivateKeyInfoFactory.pas', + ClpPkcsDHAsn1Objects in '..\..\CryptoLib\src\Asn1\Pkcs\ClpPkcsDHAsn1Objects.pas', + ClpIPkcsDHAsn1Objects in '..\..\CryptoLib\src\Interfaces\Asn1\Pkcs\ClpIPkcsDHAsn1Objects.pas', + ClpOpenSslPemWriter in '..\..\CryptoLib\src\OpenSsl\ClpOpenSslPemWriter.pas', + ClpIOpenSslPemWriter in '..\..\CryptoLib\src\Interfaces\OpenSsl\ClpIOpenSslPemWriter.pas', + ClpOpenSslPemReader in '..\..\CryptoLib\src\OpenSsl\ClpOpenSslPemReader.pas', + ClpIOpenSslPemReader in '..\..\CryptoLib\src\Interfaces\OpenSsl\ClpIOpenSslPemReader.pas', + ClpIPemParser in '..\..\CryptoLib\src\Interfaces\Pem\ClpIPemParser.pas', + ClpIPemReader in '..\..\CryptoLib\src\Interfaces\Pem\ClpIPemReader.pas', + ClpIPemWriter in '..\..\CryptoLib\src\Interfaces\Pem\ClpIPemWriter.pas', + ClpPemParser in '..\..\CryptoLib\src\Pem\ClpPemParser.pas', + ClpPemReader in '..\..\CryptoLib\src\Pem\ClpPemReader.pas', + ClpPemWriter in '..\..\CryptoLib\src\Pem\ClpPemWriter.pas', + ClpIOpenSslPasswordFinder in '..\..\CryptoLib\src\Interfaces\OpenSsl\ClpIOpenSslPasswordFinder.pas', + ClpOpenSslPemUtilities in '..\..\CryptoLib\src\OpenSsl\ClpOpenSslPemUtilities.pas', + ClpIOpenSslPbeParametersGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIOpenSslPbeParametersGenerator.pas', + ClpOpenSslPbeParametersGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpOpenSslPbeParametersGenerator.pas', + ClpIPkcs8EncryptedPrivateKeyInfo in '..\..\CryptoLib\src\Interfaces\Pkcs\ClpIPkcs8EncryptedPrivateKeyInfo.pas', + ClpPkcs8EncryptedPrivateKeyInfo in '..\..\CryptoLib\src\Pkcs\ClpPkcs8EncryptedPrivateKeyInfo.pas', + ClpPkcs8EncryptedPrivateKeyInfoBuilder in '..\..\CryptoLib\src\Pkcs\ClpPkcs8EncryptedPrivateKeyInfoBuilder.pas', + ClpPbeUtilities in '..\..\CryptoLib\src\Crypto\ClpPbeUtilities.pas', + ClpPkcs12ParametersGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpPkcs12ParametersGenerator.pas', + ClpPkcs5S1ParametersGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpPkcs5S1ParametersGenerator.pas', + ClpIPkcs12ParametersGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIPkcs12ParametersGenerator.pas', + ClpIPkcs5S1ParametersGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIPkcs5S1ParametersGenerator.pas', + ClpBcObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Bc\ClpBcObjectIdentifiers.pas', + ClpCipherStream in '..\..\CryptoLib\src\Crypto\IO\ClpCipherStream.pas', + ClpMacSink in '..\..\CryptoLib\src\Crypto\IO\ClpMacSink.pas', + ClpMacStream in '..\..\CryptoLib\src\Crypto\IO\ClpMacStream.pas', + ClpAlgorithmIdentifierFactory in '..\..\CryptoLib\src\Crypto\Factories\ClpAlgorithmIdentifierFactory.pas', + ClpCipherFactory in '..\..\CryptoLib\src\Crypto\Factories\ClpCipherFactory.pas', + ClpCipherKeyGeneratorFactory in '..\..\CryptoLib\src\Crypto\Factories\ClpCipherKeyGeneratorFactory.pas', + ClpAsn1CipherBuilderWithKey in '..\..\CryptoLib\src\Crypto\Operators\ClpAsn1CipherBuilderWithKey.pas', + ClpCryptoServicesRegistrar in '..\..\CryptoLib\src\Crypto\ClpCryptoServicesRegistrar.pas', + ClpEncryptedPrivateKeyInfoFactory in '..\..\CryptoLib\src\Factories\ClpEncryptedPrivateKeyInfoFactory.pas', + ClpIDecryptorBuilderProvider in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIDecryptorBuilderProvider.pas', + ClpICipherBuilderWithKey in '..\..\CryptoLib\src\Interfaces\Crypto\ClpICipherBuilderWithKey.pas', + ClpICipherBuilder in '..\..\CryptoLib\src\Interfaces\Crypto\ClpICipherBuilder.pas', + ClpICipher in '..\..\CryptoLib\src\Interfaces\Crypto\ClpICipher.pas', + ClpIBlockCipherMode in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIBlockCipherMode.pas', + ClpIBulkBlockCipherMode in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIBulkBlockCipherMode.pas', + ClpIBulkBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIBulkBlockCipher.pas', + ClpIEcbBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIEcbBlockCipher.pas', + ClpEcbBlockCipher in '..\..\CryptoLib\src\Crypto\Modes\ClpEcbBlockCipher.pas', + ClpGnuObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Gnu\ClpGnuObjectIdentifiers.pas', + ClpIWrapper in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIWrapper.pas', + ClpIRfc5649WrapEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIRfc5649WrapEngine.pas', + ClpIAesWrapPadEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIAesWrapPadEngine.pas', + ClpIRfc3211WrapEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIRfc3211WrapEngine.pas', + ClpIAesWrapEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIAesWrapEngine.pas', + ClpIRfc3394WrapEngine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIRfc3394WrapEngine.pas', + ClpWrapperUtilities in '..\..\CryptoLib\src\Crypto\ClpWrapperUtilities.pas', + ClpAesWrapPadEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpAesWrapPadEngine.pas', + ClpRfc3211WrapEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRfc3211WrapEngine.pas', + ClpAesWrapEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpAesWrapEngine.pas', + ClpRfc5649WrapEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRfc5649WrapEngine.pas', + ClpRfc3394WrapEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRfc3394WrapEngine.pas', + ClpChaCha7539Engine in '..\..\CryptoLib\src\Crypto\Engines\ClpChaCha7539Engine.pas', + ClpXChaCha20Engine in '..\..\CryptoLib\src\Crypto\Engines\ClpXChaCha20Engine.pas', + ClpCMac in '..\..\CryptoLib\src\Crypto\Macs\ClpCMac.pas', + ClpPoly1305 in '..\..\CryptoLib\src\Crypto\Macs\ClpPoly1305.pas', + ClpCbcBlockCipherMac in '..\..\CryptoLib\src\Crypto\Macs\ClpCbcBlockCipherMac.pas', + ClpOpenPgpCfbBlockCipher in '..\..\CryptoLib\src\Crypto\Modes\ClpOpenPgpCfbBlockCipher.pas', + ClpCcmBlockCipher in '..\..\CryptoLib\src\Crypto\Modes\ClpCcmBlockCipher.pas', + ClpChaCha20Poly1305 in '..\..\CryptoLib\src\Crypto\Modes\ClpChaCha20Poly1305.pas', + ClpXChaCha20Poly1305 in '..\..\CryptoLib\src\Crypto\Modes\ClpXChaCha20Poly1305.pas', + ClpEaxBlockCipher in '..\..\CryptoLib\src\Crypto\Modes\ClpEaxBlockCipher.pas', + ClpOcbBlockCipher in '..\..\CryptoLib\src\Crypto\Modes\ClpOcbBlockCipher.pas', + ClpGcmSivUtilities in '..\..\CryptoLib\src\Crypto\Modes\Gcm\ClpGcmSivUtilities.pas', + ClpFusedKernelTypes in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\Fused\ClpFusedKernelTypes.pas', + ClpIFusedGcmKernel in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\Fused\ClpIFusedGcmKernel.pas', + ClpIFusedOcbKernel in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\Fused\ClpIFusedOcbKernel.pas', + ClpIFusedCcmKernel in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\Fused\ClpIFusedCcmKernel.pas', + ClpIFusedEaxKernel in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\Fused\ClpIFusedEaxKernel.pas', + ClpIFusedGcmSivKernel in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\Fused\ClpIFusedGcmSivKernel.pas', + ClpFusedKernelRegistry in '..\..\CryptoLib\src\Crypto\Modes\Fused\ClpFusedKernelRegistry.pas', + ClpAesNiAeadResolver in '..\..\CryptoLib\src\Crypto\Modes\Fused\Internal\ClpAesNiAeadResolver.pas', + ClpAesNiOcbKernel in '..\..\CryptoLib\src\Crypto\Modes\Fused\ClpAesNiOcbKernel.pas', + ClpAesNiCcmKernel in '..\..\CryptoLib\src\Crypto\Modes\Fused\ClpAesNiCcmKernel.pas', + ClpAesNiEaxKernel in '..\..\CryptoLib\src\Crypto\Modes\Fused\ClpAesNiEaxKernel.pas', + ClpAesNiGcmKernel in '..\..\CryptoLib\src\Crypto\Modes\Fused\ClpAesNiGcmKernel.pas', + ClpPclmulGcmSivKernel in '..\..\CryptoLib\src\Crypto\Modes\Fused\ClpPclmulGcmSivKernel.pas', + ClpFusedKernelDefaults in '..\..\CryptoLib\src\Crypto\Modes\Fused\ClpFusedKernelDefaults.pas', + ClpAeadParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpAeadParameters.pas', + ClpBufferedAeadCipher in '..\..\CryptoLib\src\Crypto\ClpBufferedAeadCipher.pas', + ClpBufferedAeadBlockCipher in '..\..\CryptoLib\src\Crypto\ClpBufferedAeadBlockCipher.pas', + ClpIChaCha7539Engine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIChaCha7539Engine.pas', + ClpIXChaCha20Engine in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIXChaCha20Engine.pas', + ClpICbcBlockCipherMac in '..\..\CryptoLib\src\Interfaces\Crypto\Macs\ClpICbcBlockCipherMac.pas', + ClpICMac in '..\..\CryptoLib\src\Interfaces\Crypto\Macs\ClpICMac.pas', + ClpIPoly1305 in '..\..\CryptoLib\src\Interfaces\Crypto\Macs\ClpIPoly1305.pas', + ClpIAeadBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIAeadBlockCipher.pas', + ClpIAeadCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIAeadCipher.pas', + ClpICcmBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpICcmBlockCipher.pas', + ClpIChaCha20Poly1305 in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIChaCha20Poly1305.pas', + ClpIXChaCha20Poly1305 in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIXChaCha20Poly1305.pas', + ClpIEaxBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIEaxBlockCipher.pas', + ClpIOcbBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIOcbBlockCipher.pas', + ClpIOpenPgpCfbBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIOpenPgpCfbBlockCipher.pas', + ClpIAeadParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIAeadParameters.pas', + ClpIBufferedAeadBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIBufferedAeadBlockCipher.pas', + ClpIBufferedAeadCipher in '..\..\CryptoLib\src\Interfaces\Crypto\ClpIBufferedAeadCipher.pas', + ClpPoly1305KeyGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpPoly1305KeyGenerator.pas', + ClpIPoly1305KeyGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIPoly1305KeyGenerator.pas', + ClpMac in '..\..\CryptoLib\src\Crypto\Macs\ClpMac.pas', + ClpSipHashMac in '..\..\CryptoLib\src\Crypto\Macs\ClpSipHashMac.pas', + ClpISipHashMac in '..\..\CryptoLib\src\Interfaces\Crypto\Macs\ClpISipHashMac.pas', + ClpCfbBlockCipherMac in '..\..\CryptoLib\src\Crypto\Macs\ClpCfbBlockCipherMac.pas', + ClpICfbBlockCipherMac in '..\..\CryptoLib\src\Interfaces\Crypto\Macs\ClpICfbBlockCipherMac.pas', + ClpByteUtilities in '..\..\CryptoLib\src\NumberUtilities\ClpByteUtilities.pas', + ClpInt16Utilities in '..\..\CryptoLib\src\NumberUtilities\ClpInt16Utilities.pas', + ClpInt32Utilities in '..\..\CryptoLib\src\NumberUtilities\ClpInt32Utilities.pas', + ClpInt64Utilities in '..\..\CryptoLib\src\NumberUtilities\ClpInt64Utilities.pas', + ClpGMac in '..\..\CryptoLib\src\Crypto\Macs\ClpGMac.pas', + ClpIGMac in '..\..\CryptoLib\src\Interfaces\Crypto\Macs\ClpIGMac.pas', + ClpGcmSivBlockCipher in '..\..\CryptoLib\src\Crypto\Modes\ClpGcmSivBlockCipher.pas', + ClpGcmBlockCipher in '..\..\CryptoLib\src\Crypto\Modes\ClpGcmBlockCipher.pas', + ClpBasicGcmExponentiator in '..\..\CryptoLib\src\Crypto\Modes\Gcm\ClpBasicGcmExponentiator.pas', + ClpBasicGcmMultiplier in '..\..\CryptoLib\src\Crypto\Modes\Gcm\ClpBasicGcmMultiplier.pas', + ClpGcmUtilities in '..\..\CryptoLib\src\Crypto\Modes\Gcm\ClpGcmUtilities.pas', + ClpTables1kGcmExponentiator in '..\..\CryptoLib\src\Crypto\Modes\Gcm\ClpTables1kGcmExponentiator.pas', + ClpTables4kGcmMultiplier in '..\..\CryptoLib\src\Crypto\Modes\Gcm\ClpTables4kGcmMultiplier.pas', + ClpTables8kGcmMultiplier in '..\..\CryptoLib\src\Crypto\Modes\Gcm\ClpTables8kGcmMultiplier.pas', + ClpTables64kGcmMultiplier in '..\..\CryptoLib\src\Crypto\Modes\Gcm\ClpTables64kGcmMultiplier.pas', + ClpIGcmSivBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIGcmSivBlockCipher.pas', + ClpIGcmBlockCipher in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\ClpIGcmBlockCipher.pas', + ClpIGcmExponentiator in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\Gcm\ClpIGcmExponentiator.pas', + ClpIGcmMultiplier in '..\..\CryptoLib\src\Interfaces\Crypto\Modes\Gcm\ClpIGcmMultiplier.pas', + ClpDHStandardGroups in '..\..\CryptoLib\src\Crypto\Agreements\ClpDHStandardGroups.pas', + ClpECDHCWithKdfBasicAgreement in '..\..\CryptoLib\src\Crypto\Agreements\ClpECDHCWithKdfBasicAgreement.pas', + ClpECDHWithKdfBasicAgreement in '..\..\CryptoLib\src\Crypto\Agreements\ClpECDHWithKdfBasicAgreement.pas', + ClpBasicAgreementWithKdf in '..\..\CryptoLib\src\Crypto\Agreements\ClpBasicAgreementWithKdf.pas', + ClpConcatenationKdfGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpConcatenationKdfGenerator.pas', + ClpDHKekGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpDHKekGenerator.pas', + ClpECDHKekGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpECDHKekGenerator.pas', + ClpDHKdfParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpDHKdfParameters.pas', + ClpIDHKekGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIDHKekGenerator.pas', + ClpIConcatenationKdfGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIConcatenationKdfGenerator.pas', + ClpIECDHKekGenerator in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIECDHKekGenerator.pas', + ClpIECDHCWithKdfBasicAgreement in '..\..\CryptoLib\src\Interfaces\Crypto\Agreements\ClpIECDHCWithKdfBasicAgreement.pas', + ClpIECDHWithKdfBasicAgreement in '..\..\CryptoLib\src\Interfaces\Crypto\Agreements\ClpIECDHWithKdfBasicAgreement.pas', + ClpIDHKdfParameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIDHKdfParameters.pas', + ClpXof in '..\..\CryptoLib\src\Crypto\Digests\ClpXof.pas', + ClpIXof in '..\..\CryptoLib\src\Interfaces\Crypto\Digests\ClpIXof.pas', + ClpX448Agreement in '..\..\CryptoLib\src\Crypto\Agreements\ClpX448Agreement.pas', + ClpEd448Generators in '..\..\CryptoLib\src\Crypto\Generators\ClpEd448Generators.pas', + ClpX448Generators in '..\..\CryptoLib\src\Crypto\Generators\ClpX448Generators.pas', + ClpEd448Parameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpEd448Parameters.pas', + ClpX448Parameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpX448Parameters.pas', + ClpEd448PhSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpEd448PhSigner.pas', + ClpEd448Signer in '..\..\CryptoLib\src\Crypto\Signers\ClpEd448Signer.pas', + ClpIEd448PhSigner in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIEd448PhSigner.pas', + ClpIEd448Signer in '..\..\CryptoLib\src\Interfaces\Crypto\Signers\ClpIEd448Signer.pas', + ClpIX448Agreement in '..\..\CryptoLib\src\Interfaces\Crypto\Agreements\ClpIX448Agreement.pas', + ClpIEd448Generators in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIEd448Generators.pas', + ClpIX448Generators in '..\..\CryptoLib\src\Interfaces\Crypto\Generators\ClpIX448Generators.pas', + ClpIEd448Parameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIEd448Parameters.pas', + ClpIX448Parameters in '..\..\CryptoLib\src\Interfaces\Crypto\Parameters\ClpIX448Parameters.pas', + ClpX448 in '..\..\CryptoLib\src\Math\EC\Rfc7748\ClpX448.pas', + ClpX448Field in '..\..\CryptoLib\src\Math\EC\Rfc7748\ClpX448Field.pas', + ClpEd448 in '..\..\CryptoLib\src\Math\EC\Rfc8032\ClpEd448.pas', + ClpScalar448 in '..\..\CryptoLib\src\Math\EC\Rfc8032\ClpScalar448.pas', + ClpCurve448KeyUtilities in '..\..\CryptoLib\src\Crypto\Parameters\ClpCurve448KeyUtilities.pas', + ClpPkcs12Entry in '..\..\CryptoLib\src\Pkcs\ClpPkcs12Entry.pas', + ClpX509CertificateEntry in '..\..\CryptoLib\src\Pkcs\ClpX509CertificateEntry.pas', + ClpIPkcs12Entry in '..\..\CryptoLib\src\Interfaces\Pkcs\ClpIPkcs12Entry.pas', + ClpIX509CertificateEntry in '..\..\CryptoLib\src\Interfaces\Pkcs\ClpIX509CertificateEntry.pas', + ClpAsymmetricKeyEntry in '..\..\CryptoLib\src\Pkcs\ClpAsymmetricKeyEntry.pas', + ClpIAsymmetricKeyEntry in '..\..\CryptoLib\src\Interfaces\Pkcs\ClpIAsymmetricKeyEntry.pas', + ClpDefaultDigestAlgorithmFinder in '..\..\CryptoLib\src\Crypto\Operators\ClpDefaultDigestAlgorithmFinder.pas', + ClpIDigestAlgorithmFinder in '..\..\CryptoLib\src\Interfaces\Crypto\Operators\ClpIDigestAlgorithmFinder.pas', + ClpDefaultMacAlgorithmFinder in '..\..\CryptoLib\src\Crypto\Operators\ClpDefaultMacAlgorithmFinder.pas', + ClpIMacAlgorithmFinder in '..\..\CryptoLib\src\Interfaces\Crypto\Operators\ClpIMacAlgorithmFinder.pas', + ClpDefaultSignatureAlgorithmFinder in '..\..\CryptoLib\src\Crypto\Operators\ClpDefaultSignatureAlgorithmFinder.pas', + ClpISignatureAlgorithmFinder in '..\..\CryptoLib\src\Interfaces\Crypto\Operators\ClpISignatureAlgorithmFinder.pas', + ClpPkcs12Utilities in '..\..\CryptoLib\src\Pkcs\ClpPkcs12Utilities.pas', + ClpPkcs12StoreBuilder in '..\..\CryptoLib\src\Pkcs\ClpPkcs12StoreBuilder.pas', + ClpIPkcs12StoreBuilder in '..\..\CryptoLib\src\Interfaces\Pkcs\ClpIPkcs12StoreBuilder.pas', + ClpPkcs12Store in '..\..\CryptoLib\src\Pkcs\ClpPkcs12Store.pas', + ClpIPkcs12Store in '..\..\CryptoLib\src\Interfaces\Pkcs\ClpIPkcs12Store.pas', + ClpX509CertificatePairParser in '..\..\CryptoLib\src\X509\ClpX509CertificatePairParser.pas', + ClpX509CertificatePair in '..\..\CryptoLib\src\X509\ClpX509CertificatePair.pas', + ClpIX509CertificatePairParser in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509CertificatePairParser.pas', + ClpIX509CertificatePair in '..\..\CryptoLib\src\Interfaces\X509\ClpIX509CertificatePair.pas', + ClpFormatSettingsHelper in '..\..\CryptoLib\src\Helpers\ClpFormatSettingsHelper.pas', + ClpDateTimeHelper in '..\..\CryptoLib\src\Helpers\ClpDateTimeHelper.pas', + ClpValueHelper in '..\..\CryptoLib\src\Helpers\ClpValueHelper.pas', + FixedSecureRandom in '..\src\Utils\FixedSecureRandom.pas', + ShortenedDigest in '..\src\Utils\ShortenedDigest.pas', + AeadTestUtilities in '..\src\Crypto\AeadTestUtilities.pas', + CertTestUtilities in '..\src\Utils\CertTestUtilities.pas', + CryptoTestKeys in '..\src\Utils\CryptoTestKeys.pas', + FusedKernelToggle in '..\src\Utils\FusedKernelToggle.pas', + BlowfishTests in '..\src\Crypto\BlowfishTests.pas', + RijndaelTests in '..\src\Crypto\RijndaelTests.pas', + Asn1IntegerTests in '..\src\Asn1\Asn1IntegerTests.pas', + Asn1SequenceParserTests in '..\src\Asn1\Asn1SequenceParserTests.pas', + BitStringTests in '..\src\Asn1\BitStringTests.pas', + DerUtf8StringTests in '..\src\Asn1\DerUtf8StringTests.pas', + EnumeratedTests in '..\src\Asn1\EnumeratedTests.pas', + EqualsAndHashCodeTests in '..\src\Asn1\EqualsAndHashCodeTests.pas', + ExternalTests in '..\src\Asn1\ExternalTests.pas', + GeneralizedTimeTests in '..\src\Asn1\GeneralizedTimeTests.pas', + InputStreamTests in '..\src\Asn1\InputStreamTests.pas', + OctetStringTests in '..\src\Asn1\OctetStringTests.pas', + OIDTests in '..\src\Asn1\OIDTests.pas', + ParseTests in '..\src\Asn1\ParseTests.pas', + ParsingTests in '..\src\Asn1\ParsingTests.pas', + RelativeOidTests in '..\src\Asn1\RelativeOidTests.pas', + SetTests in '..\src\Asn1\SetTests.pas', + UtcTimeTests in '..\src\Asn1\UtcTimeTests.pas', + StringTests in '..\src\Asn1\StringTests.pas', + TagTests in '..\src\Asn1\TagTests.pas', + //SecureRandomTests in '..\src\Security\SecureRandomTests.pas', + BigIntegerTests in '..\src\Math\BigIntegerTests.pas', + PrimesTests in '..\src\Math\PrimesTests.pas', + //ECAlgorithmsTests in '..\src\Math\ECAlgorithmsTests.pas', + //ECPointTests in '..\src\Math\ECPointTests.pas', + SecP384R1FieldTests in '..\src\Math\EC\Custom\Sec\SecP384R1FieldTests.pas', + DigestTests in '..\src\Others\DigestTests.pas', + ECDsa5Tests in '..\src\Others\ECDsa5Tests.pas', + ECTests in '..\src\Others\ECTests.pas', + NamedCurveTests in '..\src\Others\NamedCurveTests.pas', + ShortenedDigestTests in '..\src\Others\ShortenedDigestTests.pas', + SignerUtilitiesTests in '..\src\Others\SignerUtilitiesTests.pas', + X25519HigherLevelTests in '..\src\Others\X25519HigherLevelTests.pas', + Ed25519HigherLevelTests in '..\src\Others\Ed25519HigherLevelTests.pas', + X25519Tests in '..\src\Math\EC\Rfc7748\X25519Tests.pas', + Ed25519Tests in '..\src\Math\EC\Rfc8032\Ed25519Tests.pas', + DigestRandomNumberTests in '..\src\Crypto\DigestRandomNumberTests.pas', + //FixedPointTests in '..\src\Math\EC\FixedPointTests.pas', + AESTests in '..\src\Crypto\AESTests.pas', + AesBlockCipherTestBase in '..\src\Crypto\AesBlockCipherTestBase.pas', + AesLightTests in '..\src\Crypto\AesLightTests.pas', + FusedExternalRegistrationTests in '..\src\Crypto\FusedExternalRegistrationTests.pas', + AesX86Tests in '..\src\Crypto\AesX86Tests.pas', + IESCipherTests in '..\src\Math\IESCipherTests.pas', + AESSICTests in '..\src\Crypto\AESSICTests.pas', + SicBulkParityTests in '..\src\Crypto\SicBulkParityTests.pas', + EcbBulkParityTests in '..\src\Crypto\EcbBulkParityTests.pas', + CbcBulkParityTests in '..\src\Crypto\CbcBulkParityTests.pas', + SpeckBlockCipherTestBase in '..\src\Crypto\SpeckBlockCipherTestBase.pas', + SpeckLegacyTests in '..\src\Crypto\SpeckLegacyTests.pas', + SpeckTests in '..\src\Crypto\SpeckTests.pas', + Pkcs5Tests in '..\src\Crypto\Pkcs5Tests.pas', + HkdfGeneratorTests in '..\src\Crypto\HkdfGeneratorTests.pas', + ECIESTests in '..\src\Math\ECIESTests.pas', + ECNRTests in '..\src\Math\ECNRTests.pas', + PaddingTests in '..\src\Crypto\PaddingTests.pas', + //DSATests in '..\src\Crypto\DSATests.pas', + DeterministicDsaTests in '..\src\Crypto\DeterministicDsaTests.pas', + HMacTests in '..\src\Crypto\HMacTests.pas', + MD5HMacTests in '..\src\Crypto\MD5HMacTests.pas', + SHA1HMacTests in '..\src\Crypto\SHA1HMacTests.pas', + SHA224HMacTests in '..\src\Crypto\SHA224HMacTests.pas', + SHA256HMacTests in '..\src\Crypto\SHA256HMacTests.pas', + SHA384HMacTests in '..\src\Crypto\SHA384HMacTests.pas', + SHA512HMacTests in '..\src\Crypto\SHA512HMacTests.pas', + RIPEMD128HMacTests in '..\src\Crypto\RIPEMD128HMacTests.pas', + RIPEMD160HMacTests in '..\src\Crypto\RIPEMD160HMacTests.pas', + SecP256R1FieldTests in '..\src\Math\EC\Custom\Sec\SecP256R1FieldTests.pas', + Salsa20Tests in '..\src\Crypto\Salsa20Tests.pas', + ChaChaTests in '..\src\Crypto\ChaChaTests.pas', + ChaCha7539ProcessBlocks2Tests in '..\src\Crypto\ChaCha7539ProcessBlocks2Tests.pas', + HChaCha20Tests in '..\src\Crypto\HChaCha20Tests.pas', + XChaCha20Tests in '..\src\Crypto\XChaCha20Tests.pas', + XChaCha20Poly1305Tests in '..\src\Crypto\XChaCha20Poly1305Tests.pas', + XSalsa20Tests in '..\src\Crypto\XSalsa20Tests.pas', + StreamCipherResetTests in '..\src\Crypto\StreamCipherResetTests.pas', + CTSTests in '..\src\Crypto\CTSTests.pas', + PascalCoinECIESTests in '..\src\Math\PascalCoinECIESTests.pas', + Kdf1GeneratorTests in '..\src\Crypto\Kdf1GeneratorTests.pas', + Kdf2GeneratorTests in '..\src\Crypto\Kdf2GeneratorTests.pas', + DHKekGeneratorTests in '..\src\Crypto\DHKekGeneratorTests.pas', + ECDHKekGeneratorTests in '..\src\Crypto\ECDHKekGeneratorTests.pas', + Argon2Tests in '..\src\Crypto\Argon2Tests.pas', + DigestUtilitiesTests in '..\src\Security\DigestUtilitiesTests.pas', + ScryptTests in '..\src\Crypto\ScryptTests.pas', + DHTests in '..\src\Crypto\DHTests.pas', + KMacTests in '..\src\Crypto\KMacTests.pas', + RSATests in '..\src\Crypto\RSATests.pas', + RSABlindedTests in '..\src\Crypto\RSABlindedTests.pas', + RSADigestSignerTests in '..\src\Crypto\RSADigestSignerTests.pas', + AlgorithmFinderTests in '..\src\Crypto\AlgorithmFinderTests.pas', + ISO9796Tests in '..\src\Crypto\ISO9796Tests.pas', + PssTests in '..\src\Crypto\PssTests.pas', + PrivateKeyInfoTests in '..\src\Asn1\PrivateKeyInfoTests.pas', + X9Tests in '..\src\Asn1\X9Tests.pas', + IPAddressUtilitiesTests in '..\src\Utils\Net\IPAddressUtilitiesTests.pas', + PemReaderTests in '..\src\Utils\Pem\PemReaderTests.pas', + X931SignerTests in '..\src\Crypto\X931SignerTests.pas', + CertificateTests in '..\src\Asn1\X509\CertificateTests.pas', + AuthorityKeyIdentifierTests in '..\src\Asn1\X509\AuthorityKeyIdentifierTests.pas', + GeneralNameTests in '..\src\Asn1\X509\GeneralNameTests.pas', + KeyUsageTests in '..\src\Asn1\X509\KeyUsageTests.pas', + SubjectKeyIdentifierTests in '..\src\Asn1\X509\SubjectKeyIdentifierTests.pas', + X509AltTests in '..\src\Asn1\X509\X509AltTests.pas', + X509ExtensionsTests in '..\src\Asn1\X509\X509ExtensionsTests.pas', + X509NameTests in '..\src\Asn1\X509\X509NameTests.pas', + Pkcs10CertRequestTests in '..\src\Asn1\Pkcs\Pkcs10CertRequestTests.pas', + DeltaCertificateTests in '..\src\Asn1\X509\DeltaCertificateTests.pas', + X509CertGenTests in '..\src\X509\X509CertGenTests.pas', + X509UtilitiesTests in '..\src\X509\X509UtilitiesTests.pas', + CertTests in '..\src\Others\CertTests.pas', + Curve25519KeyUtilitiesTests in '..\src\Others\Curve25519KeyUtilitiesTests.pas', + OpenSslReaderTests in '..\src\OpenSsl\OpenSslReaderTests.pas', + OpenSslWriterTests in '..\src\OpenSsl\OpenSslWriterTests.pas', + EncryptedPrivateKeyInfoTests in '..\src\Asn1\EncryptedPrivateKeyInfoTests.pas', + PkcsEncryptedPrivateKeyInfoTests in '..\src\Pkcs\PkcsEncryptedPrivateKeyInfoTests.pas', + CryptoIOStreamTests in '..\src\Crypto\CryptoIOStreamTests.pas', + CryptoIOSinkTests in '..\src\Crypto\CryptoIOSinkTests.pas', + ParameterUtilitiesTests in '..\src\Security\ParameterUtilitiesTests.pas', + OaepTests in '..\src\Crypto\OaepTests.pas', + EaxTests in '..\src\Crypto\EaxTests.pas', + CcmTests in '..\src\Crypto\CcmTests.pas', + OcbTests in '..\src\Crypto\OcbTests.pas', + CMacTests in '..\src\Crypto\CMacTests.pas', + MacTests in '..\src\Crypto\MacTests.pas', + ChaCha20Poly1305Tests in '..\src\Crypto\ChaCha20Poly1305Tests.pas', + Poly1305Tests in '..\src\Crypto\Poly1305Tests.pas', + Int32Tests in '..\src\Utils\NumberUtilities\Int32Tests.pas', + Int64Tests in '..\src\Utils\NumberUtilities\Int64Tests.pas', + GcmSivTests in '..\src\Crypto\GcmSivTests.pas', + GMacTests in '..\src\Crypto\GMacTests.pas', + GcmReorderTests in '..\src\Crypto\GcmReorderTests.pas', + //GCMTests in '..\src\Crypto\GCMTests.pas', + X448Tests in '..\src\Math\EC\Rfc7748\X448Tests.pas', + Ed448Tests in '..\src\Math\EC\Rfc8032\Ed448Tests.pas', + X448HigherLevelTests in '..\src\Others\X448HigherLevelTests.pas', + Ed448HigherLevelTests in '..\src\Others\Ed448HigherLevelTests.pas', + Curve448KeyUtilitiesTests in '..\src\Others\Curve448KeyUtilitiesTests.pas', + ECEncodingTests in '..\src\Math\ECEncodingTests.pas', + Pkcs12Tests in '..\src\Crypto\Pkcs12Tests.pas', + Pkcs12StoreTests in '..\src\Pkcs\Pkcs12StoreTests.pas', + X509CertificatePairTests in '..\src\X509\X509CertificatePairTests.pas', + Bip340SchnorrTests in '..\src\Crypto\Bip340SchnorrTests.pas', + Bip327MuSig2Tests in '..\src\Crypto\Bip327MuSig2Tests.pas', + SimdSelectSlotTests in '..\src\Misc\SimdSelectSlotTests.pas', + CryptoLibTestResourceLoader in '..\src\Utils\CryptoLibTestResourceLoader.pas', + CsvVectorParser in '..\src\Utils\Parsers\CsvVectorParser.pas', + JsonVectorParser in '..\src\Utils\Parsers\JsonVectorParser.pas', + Bip327Vectors in '..\src\Utils\Vectors\Bip327Vectors.pas', + Bip340Vectors in '..\src\Utils\Vectors\Bip340Vectors.pas', + HmacVectors in '..\src\Utils\Vectors\HmacVectors.pas', + Argon2Vectors in '..\src\Utils\Vectors\Argon2Vectors.pas', + AsymmetricTestVectors in '..\src\Utils\Vectors\AsymmetricTestVectors.pas', + SymmetricBlockVectors in '..\src\Utils\Vectors\SymmetricBlockVectors.pas', + ChaChaPoly1305Vectors in '..\src\Utils\Vectors\ChaChaPoly1305Vectors.pas', + OpenSslVectors in '..\src\Utils\Vectors\OpenSslVectors.pas', + PemReaderVectors in '..\src\Utils\Vectors\PemReaderVectors.pas', + PkcsVectors in '..\src\Utils\Vectors\PkcsVectors.pas', + CsvVectorLoaderBase in '..\src\Utils\Vectors\CsvVectorLoaderBase.pas', + TestKeyBuilders in '..\src\Utils\Vectors\TestKeyBuilders.pas', + PemDerCodec in '..\src\Utils\Vectors\PemDerCodec.pas', + CertVectors in '..\src\Utils\Vectors\CertVectors.pas', + CryptoLibTestBase in '..\src\CryptoLibTestBase.pas'; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TMobileTestHostForm, MobileTestHostForm); + Application.Run; +end. diff --git a/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dproj b/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dproj new file mode 100644 index 00000000..1ef1ce96 --- /dev/null +++ b/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dproj @@ -0,0 +1,2472 @@ + + + {28E22AD7-CDB1-41DD-878A-D81A204C0B05} + 20.4 + FMX + True + Release + Android64 + 2790419 + Application + CryptoLib.Tests.Mobile.dpr + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) + false + false + false + false + false + System;Xml;Data;Datasnap;Web;Soap;DUnitX;$(DCC_Namespace) + true + true + true + true + true + true + $(BDS)\bin\delphi_PROJECTICON.ico + $(BDS)\bin\delphi_PROJECTICNS.icns + $(PROJECTDIR)..\..\;$(DCC_UnitSearchPath) + true + CryptoLib_Tests_Mobile + + + fmx;emshosting;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=36 + Debug + true + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png + true + true + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Monochrome.xml + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Foreground.xml + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Background.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplash.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashDark.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31Dark.xml + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png + false + true + $(BDS)\bin\Artwork\Android\FM_VectorizedNotificationIcon.xml + activity-1.7.2.dex.jar;annotation-experimental-1.4.1.dex.jar;annotation-jvm-1.8.1.dex.jar;annotations-23.0.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-7.1.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-jvm-1.4.2.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.17.0.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.17.0.dex.jar;core-runtime-2.2.0.dex.jar;core-viewtree-1.0.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;jspecify-1.0.0.dex.jar;kotlin-stdlib-2.1.21.dex.jar;kotlinx-coroutines-android-1.8.1.dex.jar;kotlinx-coroutines-core-jvm-1.8.1.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.2.dex.jar;lifecycle-livedata-2.6.2.dex.jar;lifecycle-livedata-core-2.6.2.dex.jar;lifecycle-runtime-2.6.2.dex.jar;lifecycle-service-2.6.2.dex.jar;lifecycle-viewmodel-2.6.2.dex.jar;lifecycle-viewmodel-savedstate-2.6.2.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.5.0.dex.jar;play-services-basement-18.4.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.2.0.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.2.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar + + + fmx;emshosting;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=36 + Debug + true + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png + true + true + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Monochrome.xml + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Foreground.xml + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Background.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplash.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashDark.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31Dark.xml + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png + false + true + $(BDS)\bin\Artwork\Android\FM_VectorizedNotificationIcon.xml + activity-1.7.2.dex.jar;annotation-experimental-1.4.1.dex.jar;annotation-jvm-1.8.1.dex.jar;annotations-23.0.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-7.1.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-jvm-1.4.2.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.17.0.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.17.0.dex.jar;core-runtime-2.2.0.dex.jar;core-viewtree-1.0.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;jspecify-1.0.0.dex.jar;kotlin-stdlib-2.1.21.dex.jar;kotlinx-coroutines-android-1.8.1.dex.jar;kotlinx-coroutines-core-jvm-1.8.1.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.2.dex.jar;lifecycle-livedata-2.6.2.dex.jar;lifecycle-livedata-core-2.6.2.dex.jar;lifecycle-runtime-2.6.2.dex.jar;lifecycle-service-2.6.2.dex.jar;lifecycle-viewmodel-2.6.2.dex.jar;lifecycle-viewmodel-savedstate-2.6.2.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.5.0.dex.jar;play-services-basement-18.4.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.2.0.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.2.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar + + + fmx;emshosting;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers + iPhoneAndiPad + true + Debug + $(MSBuildProjectName) + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png + $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png + + + fmx;emshosting;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers + iPhoneAndiPad + true + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png + $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png + + + DataSnapServer;fmx;emshosting;DbxCommonDriver;bindengine;IndyIPCommon;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;ibxbindings;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;DBXInformixDriver;fmxobj;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface + Debug + true + + + DataSnapServer;fmx;emshosting;DbxCommonDriver;bindengine;IndyIPCommon;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;ibxbindings;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;DBXInformixDriver;fmxobj;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface + Debug + true + + + vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;vclx;Skia.Package.RTL;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACDBXDriver;Skia.Package.FMX;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + + + vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;vclx;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + + + vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;vclx;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + + + DEBUG;MOBILE_TEST_HOST;$(DCC_Define) + true + false + true + true + true + true + true + + + false + PerMonitorV2 + + + PerMonitorV2 + + + PerMonitorV2 + + + false + RELEASE;MOBILE_TEST_HOST;$(DCC_Define) + 0 + 0 + + + 1 + true + true + #FFFFFF + #000000 + false + #000000 + true + + + PerMonitorV2 + + + PerMonitorV2 + + + PerMonitorV2 + + + + MainSource + + +
MobileTestHostForm
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + +
+ + Delphi.Personality.12 + Application + + + + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + CryptoLib.Tests.Mobile.dpr + + + + + + true + + + + + true + + + + + true + + + + + ic_launcher_background.xml + true + + + + + ic_launcher_foreground.xml + true + + + + + ic_launcher_monochrome.xml + true + + + + + ic_launcher.png + true + + + + + ic_launcher.png + true + + + + + ic_launcher.png + true + + + + + ic_launcher.png + true + + + + + ic_launcher.png + true + + + + + ic_launcher.png + true + + + + + ic_notification.png + true + + + + + ic_notification.png + true + + + + + ic_notification.png + true + + + + + ic_notification.png + true + + + + + ic_notification.png + true + + + + + splash_image.png + true + + + + + splash_image.png + true + + + + + splash_image.png + true + + + + + splash_image.png + true + + + + + ic_notification.xml + true + + + + + splash_vector.xml + true + + + + + splash_vector.xml + true + + + + + splash_vector.xml + true + + + + + splash_vector.xml + true + + + + + libCryptoLib.Tests.Mobile.so + true + + + + + libCryptoLib.Tests.Mobile.so + true + + + + + libCryptoLib.Tests.Mobile.so + true + + + + + true + + + + + colors.xml + true + + + + + true + + + + + ic_launcher.xml + true + + + + + true + + + + + libCryptoLib_Tests_Mobile.so + true + + + + + splash_image_def.xml + true + + + + + true + + + + + true + + + + + styles.xml + true + + + + + styles.xml + true + + + + + styles.xml + true + + + + + true + + + + + CryptoLib.Tests.Mobile.exe + true + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + res\xml + 1 + + + res\xml + 1 + + + + + library\lib\armeabi + 1 + + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\mips + 1 + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v21 + 1 + + + res\drawable-anydpi-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values-v31 + 1 + + + res\values-v31 + 1 + + + + + res\values-v35 + 1 + + + res\values-v35 + 1 + + + + + res\drawable-anydpi-v26 + 1 + + + res\drawable-anydpi-v26 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v33 + 1 + + + res\drawable-anydpi-v33 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-night-v21 + 1 + + + res\values-night-v21 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\drawable-anydpi-v24 + 1 + + + res\drawable-anydpi-v24 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-night-anydpi-v21 + 1 + + + res\drawable-night-anydpi-v21 + 1 + + + + + res\drawable-anydpi-v31 + 1 + + + res\drawable-anydpi-v31 + 1 + + + + + res\drawable-night-anydpi-v31 + 1 + + + res\drawable-night-anydpi-v31 + 1 + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + 0 + + + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + Contents + 1 + + + Contents + 1 + + + Contents + 1 + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen + 64 + + + ..\$(PROJECTNAME).launchscreen + 64 + + + + + 1 + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + Assets + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + + + + + + + + + + + + + + True + True + True + True + True + True + True + True + True + + + 12 + + + + + +
diff --git a/CryptoLib.Tests/Delphi.Tests/CryptoLibTestMobileRunner.pas b/CryptoLib.Tests/Delphi.Tests/CryptoLibTestMobileRunner.pas new file mode 100644 index 00000000..0ac17755 --- /dev/null +++ b/CryptoLib.Tests/Delphi.Tests/CryptoLibTestMobileRunner.pas @@ -0,0 +1,201 @@ +unit CryptoLibTestMobileRunner; + +interface + +uses + System.SysUtils; + +type + TMobileTestStatusProc = reference to procedure(const AMessage: string); + TMobileTestFinishedProc = reference to procedure; + +function MobileTestsRunning: Boolean; +function LoadTestInsightBaseUrl: string; +procedure SaveTestInsightBaseUrl(const ABaseUrl: string); +function ProbeTestInsightServer(const ABaseUrl: string): Boolean; +procedure RunMobileTestsAsync(const ABaseUrl: string; + const AOnStatus: TMobileTestStatusProc; const AOnFinished: TMobileTestFinishedProc); + +implementation + +uses + System.Classes, + System.IniFiles, + System.IOUtils, + System.SyncObjs, + TestInsight.DUnit; + +const + TestInsightIniFileName = 'TestInsightSettings.ini'; + TestInsightIniSection = 'Config'; + TestInsightIniBaseUrlKey = 'BaseUrl'; + +type + TSyncStatusInvoker = class + private + FOnStatus: TMobileTestStatusProc; + FMessage: string; + public + constructor Create(const AOnStatus: TMobileTestStatusProc; const AMessage: string); + procedure Invoke; + end; + + TSyncFinishedInvoker = class + private + FOnFinished: TMobileTestFinishedProc; + public + constructor Create(const AOnFinished: TMobileTestFinishedProc); + procedure Invoke; + end; + + TMobileTestThread = class(TThread) + private + FBaseUrl: string; + FOnStatus: TMobileTestStatusProc; + FOnFinished: TMobileTestFinishedProc; + protected + procedure Execute; override; + public + constructor Create(const ABaseUrl: string; const AOnStatus: TMobileTestStatusProc; + const AOnFinished: TMobileTestFinishedProc); + end; + +var + GTestsRunning: Integer; + +function TestInsightSettingsIniPath: string; +begin + Result := TPath.Combine(TPath.GetDocumentsPath, TestInsightIniFileName); +end; + +function ReadBaseUrlFromIni(const AIniPath: string): string; +var + LIni: TIniFile; +begin + Result := ''; + if not FileExists(AIniPath) then + Exit; + LIni := TIniFile.Create(AIniPath); + try + Result := Trim(LIni.ReadString(TestInsightIniSection, TestInsightIniBaseUrlKey, '')); + finally + LIni.Free; + end; +end; + +function MobileTestsRunning: Boolean; +begin + Result := TInterlocked.CompareExchange(GTestsRunning, 0, 0) <> 0; +end; + +constructor TSyncStatusInvoker.Create(const AOnStatus: TMobileTestStatusProc; + const AMessage: string); +begin + inherited Create; + FOnStatus := AOnStatus; + FMessage := AMessage; +end; + +procedure TSyncStatusInvoker.Invoke; +begin + if Assigned(FOnStatus) then + FOnStatus(FMessage); +end; + +constructor TSyncFinishedInvoker.Create(const AOnFinished: TMobileTestFinishedProc); +begin + inherited Create; + FOnFinished := AOnFinished; +end; + +procedure TSyncFinishedInvoker.Invoke; +begin + if Assigned(FOnFinished) then + FOnFinished(); +end; + +constructor TMobileTestThread.Create(const ABaseUrl: string; + const AOnStatus: TMobileTestStatusProc; const AOnFinished: TMobileTestFinishedProc); +begin + inherited Create(True); + FreeOnTerminate := True; + FBaseUrl := Trim(ABaseUrl); + FOnStatus := AOnStatus; + FOnFinished := AOnFinished; +end; + +procedure TMobileTestThread.Execute; +var + LStatusInvoker: TSyncStatusInvoker; + LFinishedInvoker: TSyncFinishedInvoker; +begin + try + try + if FBaseUrl = '' then + raise Exception.Create('TestInsight BaseUrl is empty. Enter a URL in the app and tap Save URL.'); + TestInsight.DUnit.RunRegisteredTests(FBaseUrl); + except + on E: Exception do + begin + if Assigned(FOnStatus) then + begin + LStatusInvoker := TSyncStatusInvoker.Create(FOnStatus, 'Error: ' + E.Message); + try + Synchronize(LStatusInvoker.Invoke); + finally + LStatusInvoker.Free; + end; + end; + end; + end; + finally + TInterlocked.Exchange(GTestsRunning, 0); + if Assigned(FOnFinished) then + begin + LFinishedInvoker := TSyncFinishedInvoker.Create(FOnFinished); + try + Synchronize(LFinishedInvoker.Invoke); + finally + LFinishedInvoker.Free; + end; + end; + end; +end; + +function LoadTestInsightBaseUrl: string; +begin + Result := ReadBaseUrlFromIni(TestInsightSettingsIniPath); +end; + +procedure SaveTestInsightBaseUrl(const ABaseUrl: string); +var + LIni: TIniFile; + LPath: string; +begin + LPath := TestInsightSettingsIniPath; + ForceDirectories(TPath.GetDirectoryName(LPath)); + LIni := TIniFile.Create(LPath); + try + LIni.WriteString(TestInsightIniSection, TestInsightIniBaseUrlKey, Trim(ABaseUrl)); + finally + LIni.Free; + end; +end; + +function ProbeTestInsightServer(const ABaseUrl: string): Boolean; +begin + { TestInsight exposes no documented health URL; non-empty URL is the v1 check. } + Result := Trim(ABaseUrl) <> ''; +end; + +procedure RunMobileTestsAsync(const ABaseUrl: string; + const AOnStatus: TMobileTestStatusProc; const AOnFinished: TMobileTestFinishedProc); +begin + if TInterlocked.CompareExchange(GTestsRunning, 1, 0) <> 0 then + Exit; + + with TMobileTestThread.Create(ABaseUrl, AOnStatus, AOnFinished) do + Start; +end; + +end. diff --git a/CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.fmx b/CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.fmx new file mode 100644 index 00000000..10f772bf --- /dev/null +++ b/CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.fmx @@ -0,0 +1,81 @@ +object MobileTestHostForm: TMobileTestHostForm + Left = 0 + Top = 0 + Caption = 'CryptoLib Tests (Mobile)' + ClientHeight = 606 + ClientWidth = 360 + FormFactor.Width = 320 + FormFactor.Height = 480 + FormFactor.Devices = [Desktop] + OnActivate = FormActivate + OnShow = FormShow + DesignerMasterStyle = 3 + object lblBaseUrl: TLabel + AutoSize = True + Position.X = 8.000000000000000000 + Position.Y = 26.000000000000000000 + Size.Width = 177.000000000000000000 + Size.Height = 22.000000000000000000 + Size.PlatformDefault = False + Text = 'TestInsight URL' + TabOrder = 4 + end + object edtBaseUrl: TEdit + Touch.InteractiveGestures = [LongTap, DoubleTap] + Anchors = [akLeft, akTop, akRight, akBottom] + TabOrder = 0 + Position.X = 8.000000000000000000 + Position.Y = 56.000000000000000000 + Size.Width = 344.000000000000000000 + Size.Height = 32.000000000000000000 + Size.PlatformDefault = False + TextPrompt = 'http://IP:PORT' + OnChange = edtBaseUrlChange + OnChangeTracking = edtBaseUrlChange + end + object btnSaveUrl: TButton + Enabled = False + Position.X = 8.000000000000000000 + Position.Y = 114.000000000000000000 + Size.Width = 89.000000000000000000 + Size.Height = 44.000000000000000000 + Size.PlatformDefault = False + TabOrder = 1 + Text = 'Save URL' + OnClick = btnSaveUrlClick + end + object lblConnection: TLabel + AutoSize = True + Position.X = 8.000000000000000000 + Position.Y = 222.000000000000000000 + Size.Width = 344.000000000000000000 + Size.Height = 22.000000000000000000 + Size.PlatformDefault = False + Text = 'IDE: (status)' + TabOrder = 5 + end + object btnRunTests: TButton + Enabled = False + Position.X = 8.000000000000000000 + Position.Y = 166.000000000000000000 + Size.Width = 89.000000000000000000 + Size.Height = 44.000000000000000000 + Size.PlatformDefault = False + TabOrder = 2 + Text = 'Run Tests' + OnClick = btnRunTestsClick + end + object memLog: TMemo + Touch.InteractiveGestures = [Pan, LongTap, DoubleTap] + DataDetectorTypes = [] + Anchors = [akLeft, akTop, akRight, akBottom] + Position.X = 8.000000000000000000 + Position.Y = 264.000000000000000000 + Size.Width = 344.000000000000000000 + Size.Height = 334.000000000000000000 + Size.PlatformDefault = False + TabOrder = 3 + Viewport.Width = 336.000000000000000000 + Viewport.Height = 326.000000000000000000 + end +end diff --git a/CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.pas b/CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.pas new file mode 100644 index 00000000..1efadac3 --- /dev/null +++ b/CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.pas @@ -0,0 +1,150 @@ +unit MobileTestHostFormUnit; + +interface + +uses + System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, + System.IOUtils, + FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, + FMX.Controls.Presentation, FMX.Edit, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo, + CryptoLibTestResourceLoader, CryptoLibTestMobileRunner; + +type + TMobileTestHostForm = class(TForm) + lblBaseUrl: TLabel; + edtBaseUrl: TEdit; + btnSaveUrl: TButton; + lblConnection: TLabel; + btnRunTests: TButton; + memLog: TMemo; + procedure FormShow(Sender: TObject); + procedure FormActivate(Sender: TObject); + procedure edtBaseUrlChange(Sender: TObject); + procedure btnSaveUrlClick(Sender: TObject); + procedure btnRunTestsClick(Sender: TObject); + private + procedure RefreshDataRootSection; + procedure AppendLog(const ALine: string); + procedure UpdateConnectionLabel; + procedure UpdateActionButtons; + public + end; + +var + MobileTestHostForm: TMobileTestHostForm; + +implementation + +{$R *.fmx} + +procedure TMobileTestHostForm.AppendLog(const ALine: string); +begin + if ALine <> '' then + memLog.Lines.Add(ALine); +end; + +procedure TMobileTestHostForm.UpdateConnectionLabel; +var + LUrl: string; +begin + LUrl := Trim(edtBaseUrl.Text); + if not ProbeTestInsightServer(LUrl) then + lblConnection.Text := 'IDE: enter TestInsight BaseUrl' + else + lblConnection.Text := 'IDE: URL set (open TestInsight Explorer)'; +end; + +procedure TMobileTestHostForm.UpdateActionButtons; +var + LUrlOk: Boolean; +begin + LUrlOk := ProbeTestInsightServer(edtBaseUrl.Text); + btnSaveUrl.Enabled := LUrlOk; + btnRunTests.Enabled := LUrlOk and not MobileTestsRunning; +end; + +procedure TMobileTestHostForm.edtBaseUrlChange(Sender: TObject); +begin + UpdateConnectionLabel; + UpdateActionButtons; +end; + +procedure TMobileTestHostForm.RefreshDataRootSection; +var + LDataRoot, LSentinelPath: string; + LFiles: TArray; +begin + LDataRoot := TCryptoLibTestResourceLoader.DataRoot; + memLog.Lines.BeginUpdate; + try + memLog.Lines.Clear; + memLog.Lines.Add('=== Test data ==='); + memLog.Lines.Add('Data root: ' + LDataRoot); + if LDataRoot = '' then + begin + memLog.Lines.Add('(path provider did not resolve a data root)'); + Exit; + end; + LSentinelPath := TCryptoLibTestResourceLoader.ResolveRelativePath(LDataRoot, + TCryptoLibTestResourceLoader.CryptoLibTestDataSentinel); + if FileExists(LSentinelPath) then + memLog.Lines.Add('Sentinel ' + TCryptoLibTestResourceLoader.CryptoLibTestDataSentinel + ': yes') + else + memLog.Lines.Add('Sentinel ' + TCryptoLibTestResourceLoader.CryptoLibTestDataSentinel + ': no'); + if TDirectory.Exists(LDataRoot) then + begin + LFiles := TDirectory.GetFiles(LDataRoot, '*', TSearchOption.soAllDirectories); + memLog.Lines.Add('file count: ' + IntToStr(Length(LFiles))); + end + else + memLog.Lines.Add('(directory does not exist)'); + memLog.Lines.Add(''); + memLog.Lines.Add('=== Test log ==='); + finally + memLog.Lines.EndUpdate; + end; +end; + +procedure TMobileTestHostForm.FormShow(Sender: TObject); +begin + edtBaseUrl.Text := LoadTestInsightBaseUrl; + UpdateConnectionLabel; + UpdateActionButtons; + RefreshDataRootSection; +end; + +procedure TMobileTestHostForm.FormActivate(Sender: TObject); +begin + RefreshDataRootSection; +end; + +procedure TMobileTestHostForm.btnSaveUrlClick(Sender: TObject); +begin + SaveTestInsightBaseUrl(edtBaseUrl.Text); + UpdateConnectionLabel; + AppendLog('Saved TestInsight BaseUrl.'); +end; + +procedure TMobileTestHostForm.btnRunTestsClick(Sender: TObject); +begin + if MobileTestsRunning then + Exit; + + SaveTestInsightBaseUrl(edtBaseUrl.Text); + UpdateConnectionLabel; + AppendLog('Running tests (TestInsight remote)…'); + + RunMobileTestsAsync(edtBaseUrl.Text, + procedure(const AMessage: string) + begin + AppendLog(AMessage); + end, + procedure + begin + UpdateActionButtons; + AppendLog('Tests finished.'); + end); + UpdateActionButtons; +end; + +end. diff --git a/scripts/sync-mobile-testdata.ps1 b/scripts/sync-mobile-testdata.ps1 new file mode 100644 index 00000000..201bd10f --- /dev/null +++ b/scripts/sync-mobile-testdata.ps1 @@ -0,0 +1,89 @@ +# Generate mobile test-data deploy MSBuild project from CryptoLib.Tests/Data. +# Usage: +# .\sync-mobile-testdata.ps1 +# .\sync-mobile-testdata.ps1 -DeployProjName CryptoLib.Tests.Mobile.TestData.deployproj -AppDeployFolderName CryptoLib.Tests.Mobile +# .\sync-mobile-testdata.ps1 -DeployProjName Project1.TestData.deployproj -AppDeployFolderName Project1 +# Re-run when files under CryptoLib.Tests/Data change (or AppDeployFolderName changes), then rebuild the mobile test host. + +param( + [string]$RepoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path, + [string]$DeployProjName = "CryptoLib.Tests.Mobile.TestData.deployproj", + [string]$AppDeployFolderName = "CryptoLib.Tests.Mobile" +) + +$DelphiTestsDir = Join-Path $RepoRoot "CryptoLib.Tests\Delphi.Tests" +$DataDir = Join-Path $RepoRoot "CryptoLib.Tests\Data" +$OutPath = Join-Path $DelphiTestsDir $DeployProjName + +if (-not (Test-Path $DataDir)) { + Write-Error "Data directory not found: $DataDir" + exit 1 +} + +function Escape-Xml([string]$Text) { + return $Text.Replace('&', '&').Replace('<', '<').Replace('>', '>') +} + +function New-DeployFileBlock { + param( + [string]$IncludePath, + [string]$RemoteDir, + [string]$RemoteName + ) + $inc = Escape-Xml $IncludePath + $dir = Escape-Xml $RemoteDir + $name = Escape-Xml $RemoteName + return @" + + $dir + $name + File + 0 + + + True + +"@ +} + +$AndroidBlocks = New-Object System.Collections.Generic.List[string] +$IosBlocks = New-Object System.Collections.Generic.List[string] + +Get-ChildItem -Path $DataDir -Recurse -File | ForEach-Object { + $rel = $_.FullName.Substring($DataDir.Length).TrimStart('\', '/') + $relDir = Split-Path $rel -Parent + $fileName = Split-Path $rel -Leaf + $include = "..\Data\$rel" -replace '/', '\' + + if ($relDir) { + $relDirSlash = $relDir -replace '\\', '\' + $androidRemoteDir = "$AppDeployFolderName\assets\internal\CryptoLib.Tests\Data\$relDirSlash\" + $iosRemoteDir = "StartUpDocuments\CryptoLib.Tests\Data\$relDirSlash\" + } + else { + $androidRemoteDir = "$AppDeployFolderName\assets\internal\CryptoLib.Tests\Data\" + $iosRemoteDir = "StartUpDocuments\CryptoLib.Tests\Data\" + } + + $AndroidBlocks.Add((New-DeployFileBlock -IncludePath $include -RemoteDir $androidRemoteDir -RemoteName $fileName)) + $IosBlocks.Add((New-DeployFileBlock -IncludePath $include -RemoteDir $iosRemoteDir -RemoteName $fileName)) +} + +$sb = New-Object System.Text.StringBuilder +[void]$sb.AppendLine('') +[void]$sb.AppendLine(' ') +[void]$sb.AppendLine(" ") +[void]$sb.AppendLine(' ') +foreach ($b in $AndroidBlocks) { [void]$sb.AppendLine($b) } +[void]$sb.AppendLine(' ') +[void]$sb.AppendLine(' ') +foreach ($b in $IosBlocks) { [void]$sb.AppendLine($b) } +[void]$sb.AppendLine(' ') +[void]$sb.AppendLine(' ') +foreach ($b in $IosBlocks) { [void]$sb.AppendLine($b) } +[void]$sb.AppendLine(' ') +[void]$sb.AppendLine('') + +$utf8NoBom = New-Object System.Text.UTF8Encoding $false +[System.IO.File]::WriteAllText($OutPath, $sb.ToString(), $utf8NoBom) +Write-Host "Wrote $($AndroidBlocks.Count) data deploy entries to $OutPath (AppDeployFolderName=$AppDeployFolderName)" From 1cde3b909f088edd101bd8287582fa67d051555d Mon Sep 17 00:00:00 2001 From: Ugochukwu Mmaduekwe Date: Sat, 6 Jun 2026 00:03:03 +0100 Subject: [PATCH 2/2] move mobile test harness units --- CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dpr | 4 ++-- CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dproj | 4 ++-- .../Delphi.Tests/{ => Mobile}/MobileTestHostFormUnit.fmx | 0 .../Delphi.Tests/{ => Mobile}/MobileTestHostFormUnit.pas | 2 +- .../MobileTestRunner.pas} | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) rename CryptoLib.Tests/Delphi.Tests/{ => Mobile}/MobileTestHostFormUnit.fmx (100%) rename CryptoLib.Tests/Delphi.Tests/{ => Mobile}/MobileTestHostFormUnit.pas (98%) rename CryptoLib.Tests/Delphi.Tests/{CryptoLibTestMobileRunner.pas => Mobile/MobileTestRunner.pas} (99%) diff --git a/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dpr b/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dpr index 64700ec8..0a42f866 100644 --- a/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dpr +++ b/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dpr @@ -6,8 +6,8 @@ program CryptoLib.Tests.Mobile; uses System.StartUpCopy, FMX.Forms, - MobileTestHostFormUnit in 'MobileTestHostFormUnit.pas' {MobileTestHostForm}, - CryptoLibTestMobileRunner in 'CryptoLibTestMobileRunner.pas', + MobileTestHostFormUnit in 'Mobile\MobileTestHostFormUnit.pas' {MobileTestHostForm}, + MobileTestRunner in 'Mobile\MobileTestRunner.pas', ClpAesEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpAesEngine.pas', ClpIAesEngineX86 in '..\..\CryptoLib\src\Interfaces\Crypto\Engines\ClpIAesEngineX86.pas', ClpAesEngineX86 in '..\..\CryptoLib\src\Crypto\Engines\ClpAesEngineX86.pas', diff --git a/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dproj b/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dproj index 1ef1ce96..9822d5bd 100644 --- a/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dproj +++ b/CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.Mobile.dproj @@ -347,10 +347,10 @@ MainSource - +
MobileTestHostForm
- + diff --git a/CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.fmx b/CryptoLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.fmx similarity index 100% rename from CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.fmx rename to CryptoLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.fmx diff --git a/CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.pas b/CryptoLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.pas similarity index 98% rename from CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.pas rename to CryptoLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.pas index 1efadac3..4d6aa7fe 100644 --- a/CryptoLib.Tests/Delphi.Tests/MobileTestHostFormUnit.pas +++ b/CryptoLib.Tests/Delphi.Tests/Mobile/MobileTestHostFormUnit.pas @@ -7,7 +7,7 @@ interface System.IOUtils, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Controls.Presentation, FMX.Edit, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo, - CryptoLibTestResourceLoader, CryptoLibTestMobileRunner; + CryptoLibTestResourceLoader, MobileTestRunner; type TMobileTestHostForm = class(TForm) diff --git a/CryptoLib.Tests/Delphi.Tests/CryptoLibTestMobileRunner.pas b/CryptoLib.Tests/Delphi.Tests/Mobile/MobileTestRunner.pas similarity index 99% rename from CryptoLib.Tests/Delphi.Tests/CryptoLibTestMobileRunner.pas rename to CryptoLib.Tests/Delphi.Tests/Mobile/MobileTestRunner.pas index 0ac17755..e6011a50 100644 --- a/CryptoLib.Tests/Delphi.Tests/CryptoLibTestMobileRunner.pas +++ b/CryptoLib.Tests/Delphi.Tests/Mobile/MobileTestRunner.pas @@ -1,4 +1,4 @@ -unit CryptoLibTestMobileRunner; +unit MobileTestRunner; interface