Skip to content

Commit f6717fa

Browse files
committed
add RSA signing support
1 parent a6cea3a commit f6717fa

23 files changed

Lines changed: 2158 additions & 680 deletions

CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.TestInsight.dpr

Lines changed: 0 additions & 456 deletions
This file was deleted.

CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.dpr

Lines changed: 61 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,22 @@ program CryptoLib.Tests;
1111
}
1212

1313
{$WARN DUPLICATE_CTOR_DTOR OFF}
14-
{$IFDEF CONSOLE_TESTRUNNER}
15-
{$APPTYPE CONSOLE}
14+
15+
{$IFNDEF TESTINSIGHT}
16+
{$IFDEF CONSOLE_TESTRUNNER}
17+
{$APPTYPE CONSOLE}
18+
{$ENDIF}
1619
{$ENDIF}
1720

1821
uses
19-
madExcept,
20-
madLinkDisAsm,
21-
madListHardware,
22-
madListProcesses,
23-
madListModules,
24-
Forms,
25-
TestFramework,
26-
GUITestRunner,
27-
TextTestRunner,
22+
{$IFDEF TESTINSIGHT}
23+
TestInsight.DUnit,
24+
{$ELSE}
25+
Forms,
26+
TestFramework,
27+
GUITestRunner,
28+
TextTestRunner,
29+
{$ENDIF}
2830
ClpECGost3410NamedCurves in '..\..\CryptoLib\src\Asn1\CryptoPro\ClpECGost3410NamedCurves.pas',
2931
ClpCryptoProObjectIdentifiers in '..\..\CryptoLib\src\Asn1\CryptoPro\ClpCryptoProObjectIdentifiers.pas',
3032
ClpNistObjectIdentifiers in '..\..\CryptoLib\src\Asn1\Nist\ClpNistObjectIdentifiers.pas',
@@ -387,6 +389,49 @@ uses
387389
ClpIFixedSecureRandom in '..\src\Utils\ClpIFixedSecureRandom.pas',
388390
ClpIShortenedDigest in '..\src\Utils\ClpIShortenedDigest.pas',
389391
ClpShortenedDigest in '..\src\Utils\ClpShortenedDigest.pas',
392+
ClpIRsa in '..\..\CryptoLib\src\Interfaces\ClpIRsa.pas',
393+
ClpIRsaKeyParameters in '..\..\CryptoLib\src\Interfaces\ClpIRsaKeyParameters.pas',
394+
ClpRsaKeyParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpRsaKeyParameters.pas',
395+
ClpIRsaPrivateCrtKeyParameters in '..\..\CryptoLib\src\Interfaces\ClpIRsaPrivateCrtKeyParameters.pas',
396+
ClpRsaPrivateCrtKeyParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpRsaPrivateCrtKeyParameters.pas',
397+
ClpIRsaKeyGenerationParameters in '..\..\CryptoLib\src\Interfaces\ClpIRsaKeyGenerationParameters.pas',
398+
ClpRsaKeyGenerationParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpRsaKeyGenerationParameters.pas',
399+
ClpIAsymmetricBlockCipher in '..\..\CryptoLib\src\Interfaces\ClpIAsymmetricBlockCipher.pas',
400+
ClpIRsaCoreEngine in '..\..\CryptoLib\src\Interfaces\ClpIRsaCoreEngine.pas',
401+
ClpRsaCoreEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRsaCoreEngine.pas',
402+
ClpIRsaBlindedEngine in '..\..\CryptoLib\src\Interfaces\ClpIRsaBlindedEngine.pas',
403+
ClpRsaBlindedEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRsaBlindedEngine.pas',
404+
ClpIRsaEngine in '..\..\CryptoLib\src\Interfaces\ClpIRsaEngine.pas',
405+
ClpRsaEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRsaEngine.pas',
406+
ClpIRsaKeyPairGenerator in '..\..\CryptoLib\src\Interfaces\ClpIRsaKeyPairGenerator.pas',
407+
ClpRsaKeyPairGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpRsaKeyPairGenerator.pas',
408+
ClpIPkcs1Encoding in '..\..\CryptoLib\src\Interfaces\ClpIPkcs1Encoding.pas',
409+
ClpPkcs1Encoding in '..\..\CryptoLib\src\Crypto\Encodings\ClpPkcs1Encoding.pas',
410+
ClpIOaepEncoding in '..\..\CryptoLib\src\Interfaces\ClpIOaepEncoding.pas',
411+
ClpOaepEncoding in '..\..\CryptoLib\src\Crypto\Encodings\ClpOaepEncoding.pas',
412+
ClpIISO9796d1Encoding in '..\..\CryptoLib\src\Interfaces\ClpIISO9796d1Encoding.pas',
413+
ClpISO9796d1Encoding in '..\..\CryptoLib\src\Crypto\Encodings\ClpISO9796d1Encoding.pas',
414+
ClpIRsaDigestSigner in '..\..\CryptoLib\src\Interfaces\ClpIRsaDigestSigner.pas',
415+
ClpRsaDigestSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpRsaDigestSigner.pas',
416+
ClpIRsaBlindingParameters in '..\..\CryptoLib\src\Interfaces\ClpIRsaBlindingParameters.pas',
417+
ClpRsaBlindingParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpRsaBlindingParameters.pas',
418+
ClpIRsaBlindingFactorGenerator in '..\..\CryptoLib\src\Interfaces\ClpIRsaBlindingFactorGenerator.pas',
419+
ClpRsaBlindingFactorGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpRsaBlindingFactorGenerator.pas',
420+
ClpIAlgorithmIdentifier in '..\..\CryptoLib\src\Interfaces\ClpIAlgorithmIdentifier.pas',
421+
ClpAlgorithmIdentifier in '..\..\CryptoLib\src\Asn1\X509\ClpAlgorithmIdentifier.pas',
422+
ClpIDigestInfo in '..\..\CryptoLib\src\Interfaces\ClpIDigestInfo.pas',
423+
ClpDigestInfo in '..\..\CryptoLib\src\Asn1\X509\ClpDigestInfo.pas',
424+
ClpX509ObjectIdentifiers in '..\..\CryptoLib\src\Asn1\X509\ClpX509ObjectIdentifiers.pas',
425+
ClpIRsaBlindingEngine in '..\..\CryptoLib\src\Interfaces\ClpIRsaBlindingEngine.pas',
426+
ClpRsaBlindingEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRsaBlindingEngine.pas',
427+
ClpIBufferedAsymmetricBlockCipher in '..\..\CryptoLib\src\Interfaces\ClpIBufferedAsymmetricBlockCipher.pas',
428+
ClpBufferedAsymmetricBlockCipher in '..\..\CryptoLib\src\Crypto\ClpBufferedAsymmetricBlockCipher.pas',
429+
ClpIPssSigner in '..\..\CryptoLib\src\Interfaces\ClpIPssSigner.pas',
430+
ClpPssSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpPssSigner.pas',
431+
ClpIGenericSigner in '..\..\CryptoLib\src\Interfaces\ClpIGenericSigner.pas',
432+
ClpGenericSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpGenericSigner.pas',
433+
ClpIPrehash in '..\..\CryptoLib\src\Interfaces\ClpIPrehash.pas',
434+
ClpPrehash in '..\..\CryptoLib\src\Crypto\Digests\ClpPrehash.pas',
390435
BlowfishTestVectors in '..\src\Crypto\BlowfishTestVectors.pas',
391436
BlockCipherVectorTests in '..\src\Crypto\BlockCipherVectorTests.pas',
392437
AESTestVectors in '..\src\Crypto\AESTestVectors.pas',
@@ -455,57 +500,23 @@ uses
455500
DHTests in '..\src\Crypto\DHTests.pas',
456501
Asn1IntegerTests in '..\src\Asn1\Asn1IntegerTests.pas',
457502
KMacTests in '..\src\Crypto\KMacTests.pas',
458-
{ RSA Implementation }
459-
ClpIRsa in '..\..\CryptoLib\src\Interfaces\ClpIRsa.pas',
460-
ClpIRsaKeyParameters in '..\..\CryptoLib\src\Interfaces\ClpIRsaKeyParameters.pas',
461-
ClpRsaKeyParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpRsaKeyParameters.pas',
462-
ClpIRsaPrivateCrtKeyParameters in '..\..\CryptoLib\src\Interfaces\ClpIRsaPrivateCrtKeyParameters.pas',
463-
ClpRsaPrivateCrtKeyParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpRsaPrivateCrtKeyParameters.pas',
464-
ClpIRsaKeyGenerationParameters in '..\..\CryptoLib\src\Interfaces\ClpIRsaKeyGenerationParameters.pas',
465-
ClpRsaKeyGenerationParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpRsaKeyGenerationParameters.pas',
466-
ClpIAsymmetricBlockCipher in '..\..\CryptoLib\src\Interfaces\ClpIAsymmetricBlockCipher.pas',
467-
ClpIRsaCoreEngine in '..\..\CryptoLib\src\Interfaces\ClpIRsaCoreEngine.pas',
468-
ClpRsaCoreEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRsaCoreEngine.pas',
469-
ClpIRsaBlindedEngine in '..\..\CryptoLib\src\Interfaces\ClpIRsaBlindedEngine.pas',
470-
ClpRsaBlindedEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRsaBlindedEngine.pas',
471-
ClpIRsaEngine in '..\..\CryptoLib\src\Interfaces\ClpIRsaEngine.pas',
472-
ClpRsaEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRsaEngine.pas',
473-
ClpIRsaKeyPairGenerator in '..\..\CryptoLib\src\Interfaces\ClpIRsaKeyPairGenerator.pas',
474-
ClpRsaKeyPairGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpRsaKeyPairGenerator.pas',
475-
ClpIPkcs1Encoding in '..\..\CryptoLib\src\Interfaces\ClpIPkcs1Encoding.pas',
476-
ClpPkcs1Encoding in '..\..\CryptoLib\src\Crypto\Encodings\ClpPkcs1Encoding.pas',
477-
ClpIOaepEncoding in '..\..\CryptoLib\src\Interfaces\ClpIOaepEncoding.pas',
478-
ClpOaepEncoding in '..\..\CryptoLib\src\Crypto\Encodings\ClpOaepEncoding.pas',
479-
ClpIISO9796d1Encoding in '..\..\CryptoLib\src\Interfaces\ClpIISO9796d1Encoding.pas',
480-
ClpISO9796d1Encoding in '..\..\CryptoLib\src\Crypto\Encodings\ClpISO9796d1Encoding.pas',
481-
ClpIRsaDigestSigner in '..\..\CryptoLib\src\Interfaces\ClpIRsaDigestSigner.pas',
482-
ClpRsaDigestSigner in '..\..\CryptoLib\src\Crypto\Signers\ClpRsaDigestSigner.pas',
483-
ClpIRsaBlindingParameters in '..\..\CryptoLib\src\Interfaces\ClpIRsaBlindingParameters.pas',
484-
ClpRsaBlindingParameters in '..\..\CryptoLib\src\Crypto\Parameters\ClpRsaBlindingParameters.pas',
485-
ClpIRsaBlindingFactorGenerator in '..\..\CryptoLib\src\Interfaces\ClpIRsaBlindingFactorGenerator.pas',
486-
ClpRsaBlindingFactorGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpRsaBlindingFactorGenerator.pas',
487-
ClpIAlgorithmIdentifier in '..\..\CryptoLib\src\Interfaces\ClpIAlgorithmIdentifier.pas',
488-
ClpAlgorithmIdentifier in '..\..\CryptoLib\src\Asn1\X509\ClpAlgorithmIdentifier.pas',
489-
ClpIDigestInfo in '..\..\CryptoLib\src\Interfaces\ClpIDigestInfo.pas',
490-
ClpDigestInfo in '..\..\CryptoLib\src\Asn1\X509\ClpDigestInfo.pas',
491-
ClpX509ObjectIdentifiers in '..\..\CryptoLib\src\Asn1\X509\ClpX509ObjectIdentifiers.pas',
492-
ClpIRsaBlindingEngine in '..\..\CryptoLib\src\Interfaces\ClpIRsaBlindingEngine.pas',
493-
ClpRsaBlindingEngine in '..\..\CryptoLib\src\Crypto\Engines\ClpRsaBlindingEngine.pas',
494-
ClpIBufferedAsymmetricBlockCipher in '..\..\CryptoLib\src\Interfaces\ClpIBufferedAsymmetricBlockCipher.pas',
495-
ClpBufferedAsymmetricBlockCipher in '..\..\CryptoLib\src\Crypto\ClpBufferedAsymmetricBlockCipher.pas',
496-
{ RSA Tests }
497503
RSATests in '..\src\Crypto\RSATests.pas',
498504
RSABlindedTests in '..\src\Crypto\RSABlindedTests.pas',
499505
RSADigestSignerTests in '..\src\Crypto\RSADigestSignerTests.pas',
500506
ISO9796Tests in '..\src\Crypto\ISO9796Tests.pas',
507+
PssTests in '..\src\Crypto\PssTests.pas',
501508
CryptoLibTestBase in '..\src\CryptoLibTestBase.pas';
502509

503510
begin
504511

512+
{$IFDEF TESTINSIGHT}
513+
TestInsight.DUnit.RunRegisteredTests;
514+
{$ELSE}
505515
Application.Initialize;
506516
if IsConsole then
507517
TextTestRunner.RunRegisteredTests
508518
else
509519
GUITestRunner.RunRegisteredTests;
520+
{$ENDIF}
510521

511522
end.

CryptoLib.Tests/FreePascal.Tests/CryptoLib.Tests.lpi

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
<PackageName Value="FCL"/>
7878
</Item4>
7979
</RequiredPackages>
80-
<Units Count="74">
80+
<Units Count="79">
8181
<Unit0>
8282
<Filename Value="CryptoLib.lpr"/>
8383
<IsPartOfProject Value="True"/>
@@ -375,6 +375,26 @@
375375
<Filename Value="..\src\Crypto\KMacTests.pas"/>
376376
<IsPartOfProject Value="True"/>
377377
</Unit73>
378+
<Unit74>
379+
<Filename Value="..\src\Crypto\PssTests.pas"/>
380+
<IsPartOfProject Value="True"/>
381+
</Unit74>
382+
<Unit75>
383+
<Filename Value="..\src\Crypto\ISO9796Tests.pas"/>
384+
<IsPartOfProject Value="True"/>
385+
</Unit75>
386+
<Unit76>
387+
<Filename Value="..\src\Crypto\RSABlindedTests.pas"/>
388+
<IsPartOfProject Value="True"/>
389+
</Unit76>
390+
<Unit77>
391+
<Filename Value="..\src\Crypto\RSADigestSignerTests.pas"/>
392+
<IsPartOfProject Value="True"/>
393+
</Unit77>
394+
<Unit78>
395+
<Filename Value="..\src\Crypto\RSATests.pas"/>
396+
<IsPartOfProject Value="True"/>
397+
</Unit78>
378398
</Units>
379399
</ProjectOptions>
380400
<CompilerOptions>

CryptoLib.Tests/FreePascal.Tests/CryptoLib.lpr

Lines changed: 20 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -3,82 +3,26 @@
33
{$mode objfpc}{$H+}
44

55
uses
6-
Interfaces,
7-
Forms,
8-
GuiTestRunner,
9-
Asn1SequenceParserTests,
10-
DerApplicationSpecificTests,
11-
EqualsAndHashCodeTests,
12-
OIDTests,
13-
EnumeratedTests,
14-
ParsingTests,
15-
ParseTests,
16-
StringTests,
17-
TagTests,
18-
BigIntegerTests,
19-
ECAlgorithmsTests,
20-
ECPointTests,
21-
SecP256R1FieldTests,
22-
SecP384R1FieldTests,
23-
ECDsa5Tests,
24-
ECTests,
25-
NamedCurveTests,
26-
ECSchnorrTests,
27-
SignerUtilitiesTests,
28-
SecureRandomTests,
29-
DigestRandomNumberTests,
30-
FixedPointTests,
31-
AESTests,
32-
BlockCipherVectorTests,
33-
BlockCipherMonteCarloTests,
34-
AESTestVectors,
35-
BlowfishTestVectors,
36-
SpeckTestVectors,
37-
RijndaelTestVectors,
38-
AESSICTests,
39-
SPECKTests,
40-
IESCipherTests,
41-
MD5HMacTests,
42-
SHA1HMacTests,
43-
SHA224HMacTests,
44-
SHA256HMacTests,
45-
SHA384HMacTests,
46-
SHA512HMacTests,
47-
RIPEMD128HMacTests,
48-
RIPEMD160HMacTests,
49-
HMacTests,
50-
Pkcs5Tests,
51-
HkdfGeneratorTests,
52-
ECIESTests,
53-
PascalCoinECIESTests,
54-
ECNRTests,
55-
PaddingTests,
56-
DSATests,
57-
DeterministicDsaTests,
58-
Salsa20Tests,
59-
XSalsa20Tests,
60-
ChaChaTests,
61-
StreamCipherResetTests,
62-
CTSTests,
63-
X25519Tests,
64-
Ed25519Tests,
65-
X25519HigherLevelTests,
66-
Ed25519HigherLevelTests,
67-
ShortenedDigestTests,
68-
Kdf1GeneratorTests,
69-
Kdf2GeneratorTests,
70-
Argon2Tests,
71-
ScryptTests,
72-
DigestTests,
73-
DigestUtilitiesTests,
74-
DHTests,
75-
Asn1IntegerTests,
76-
KMacTests,
77-
CryptoLibTestBase,
78-
ClpFixedSecureRandom,
79-
ClpIFixedSecureRandom,
80-
ClpShortenedDigest,
81-
ClpIShortenedDigest;
6+
Interfaces, Forms, GuiTestRunner, Asn1SequenceParserTests,
7+
DerApplicationSpecificTests, EqualsAndHashCodeTests, OIDTests,
8+
EnumeratedTests, ParsingTests, ParseTests, StringTests, TagTests,
9+
BigIntegerTests, ECAlgorithmsTests, ECPointTests, SecP256R1FieldTests,
10+
SecP384R1FieldTests, ECDsa5Tests, ECTests, NamedCurveTests, ECSchnorrTests,
11+
SignerUtilitiesTests, SecureRandomTests, DigestRandomNumberTests,
12+
FixedPointTests, AESTests, BlockCipherVectorTests, BlockCipherMonteCarloTests,
13+
AESTestVectors, BlowfishTestVectors, SpeckTestVectors, RijndaelTestVectors,
14+
AESSICTests, SPECKTests, IESCipherTests, MD5HMacTests, SHA1HMacTests,
15+
SHA224HMacTests, SHA256HMacTests, SHA384HMacTests, SHA512HMacTests,
16+
RIPEMD128HMacTests, RIPEMD160HMacTests, HMacTests, Pkcs5Tests,
17+
HkdfGeneratorTests, ECIESTests, PascalCoinECIESTests, ECNRTests, PaddingTests,
18+
DSATests, DeterministicDsaTests, Salsa20Tests, XSalsa20Tests, ChaChaTests,
19+
StreamCipherResetTests, CTSTests, X25519Tests, Ed25519Tests,
20+
X25519HigherLevelTests, Ed25519HigherLevelTests, ShortenedDigestTests,
21+
Kdf1GeneratorTests, Kdf2GeneratorTests, Argon2Tests, ScryptTests, DigestTests,
22+
DigestUtilitiesTests, DHTests, Asn1IntegerTests, KMacTests, RSATests,
23+
PssTests, ISO9796Tests, RSABlindedTests, RSADigestSignerTests,
24+
CryptoLibTestBase, ClpFixedSecureRandom, ClpIFixedSecureRandom,
25+
ClpShortenedDigest, ClpIShortenedDigest;
8226

8327
{$R *.res}
8428

CryptoLib.Tests/FreePascal.Tests/CryptoLibConsole.lpi

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
<PackageName Value="FCL"/>
3838
</Item2>
3939
</RequiredPackages>
40-
<Units Count="74">
40+
<Units Count="79">
4141
<Unit0>
4242
<Filename Value="CryptoLibConsole.lpr"/>
4343
<IsPartOfProject Value="True"/>
@@ -334,6 +334,26 @@
334334
<Filename Value="..\src\Crypto\KMacTests.pas"/>
335335
<IsPartOfProject Value="True"/>
336336
</Unit73>
337+
<Unit74>
338+
<Filename Value="..\src\Crypto\PssTests.pas"/>
339+
<IsPartOfProject Value="True"/>
340+
</Unit74>
341+
<Unit75>
342+
<Filename Value="..\src\Crypto\ISO9796Tests.pas"/>
343+
<IsPartOfProject Value="True"/>
344+
</Unit75>
345+
<Unit76>
346+
<Filename Value="..\src\Crypto\RSABlindedTests.pas"/>
347+
<IsPartOfProject Value="True"/>
348+
</Unit76>
349+
<Unit77>
350+
<Filename Value="..\src\Crypto\RSADigestSignerTests.pas"/>
351+
<IsPartOfProject Value="True"/>
352+
</Unit77>
353+
<Unit78>
354+
<Filename Value="..\src\Crypto\RSATests.pas"/>
355+
<IsPartOfProject Value="True"/>
356+
</Unit78>
337357
</Units>
338358
</ProjectOptions>
339359
<CompilerOptions>

0 commit comments

Comments
 (0)