diff --git a/crypto/BouncyCastle.Android.csproj b/crypto/BouncyCastle.Android.csproj
index 367bd7ff9..b339f4f79 100644
--- a/crypto/BouncyCastle.Android.csproj
+++ b/crypto/BouncyCastle.Android.csproj
@@ -562,6 +562,15 @@
<Compile Include="src\bcpg\sig\SignatureExpirationTime.cs" />
<Compile Include="src\bcpg\sig\SignerUserId.cs" />
<Compile Include="src\bcpg\sig\TrustSignature.cs" />
+ <Compile Include="src\cmp\CertificateConfirmationContent.cs" />
+ <Compile Include="src\cmp\CertificateConfirmationContentBuilder.cs" />
+ <Compile Include="src\cmp\CertificateStatus.cs" />
+ <Compile Include="src\cmp\CmpException.cs" />
+ <Compile Include="src\cmp\GeneralPkiMessage.cs" />
+ <Compile Include="src\cmp\ProtectedPkiMessage.cs" />
+ <Compile Include="src\cmp\ProtectedPkiMessageBuilder.cs" />
+ <Compile Include="src\cmp\RevocationDetails.cs" />
+ <Compile Include="src\cmp\RevocationDetailsBuilder.cs" />
<Compile Include="src\cms\BaseDigestCalculator.cs" />
<Compile Include="src\cms\CMSAttributeTableGenerationException.cs" />
<Compile Include="src\cms\CMSAttributeTableGenerator.cs" />
@@ -603,6 +612,7 @@
<Compile Include="src\cms\CounterSignatureDigestCalculator.cs" />
<Compile Include="src\cms\DefaultAuthenticatedAttributeTableGenerator.cs" />
<Compile Include="src\cms\DefaultSignedAttributeTableGenerator.cs" />
+ <Compile Include="src\cms\EnvelopedDataHelper.cs" />
<Compile Include="src\cms\IDigestCalculator.cs" />
<Compile Include="src\cms\KEKRecipientInfoGenerator.cs" />
<Compile Include="src\cms\KEKRecipientInformation.cs" />
@@ -626,6 +636,20 @@
<Compile Include="src\cms\SignerInformation.cs" />
<Compile Include="src\cms\SignerInformationStore.cs" />
<Compile Include="src\cms\SimpleAttributeTableGenerator.cs" />
+ <Compile Include="src\crmf\AuthenticatorControl.cs" />
+ <Compile Include="src\crmf\CertificateRequestMessage.cs" />
+ <Compile Include="src\crmf\CertificateRequestMessageBuilder.cs" />
+ <Compile Include="src\crmf\CrmfException.cs" />
+ <Compile Include="src\crmf\DefaultPKMacPrimitivesProvider.cs" />
+ <Compile Include="src\crmf\EncryptedValueBuilder.cs" />
+ <Compile Include="src\crmf\IControl.cs" />
+ <Compile Include="src\crmf\IEncryptedValuePadder.cs" />
+ <Compile Include="src\crmf\IPKMacPrimitivesProvider.cs" />
+ <Compile Include="src\crmf\PkiArchiveControl.cs" />
+ <Compile Include="src\crmf\PkiArchiveControlBuilder.cs" />
+ <Compile Include="src\crmf\PKMacBuilder.cs" />
+ <Compile Include="src\crmf\ProofOfPossessionSigningKeyBuilder.cs" />
+ <Compile Include="src\crmf\RegTokenControl.cs" />
<Compile Include="src\crypto\AsymmetricCipherKeyPair.cs" />
<Compile Include="src\crypto\AsymmetricKeyParameter.cs" />
<Compile Include="src\crypto\BufferedAeadBlockCipher.cs" />
@@ -650,15 +674,22 @@
<Compile Include="src\crypto\IBlockCipher.cs" />
<Compile Include="src\crypto\IBlockResult.cs" />
<Compile Include="src\crypto\IBufferedCipher.cs" />
+ <Compile Include="src\crypto\ICipher.cs" />
+ <Compile Include="src\crypto\ICipherBuilder.cs" />
+ <Compile Include="src\crypto\ICipherBuilderWithKey.cs" />
<Compile Include="src\crypto\ICipherParameters.cs" />
- <Compile Include="src\crypto\IDSA.cs" />
- <Compile Include="src\crypto\IDsaExt.cs" />
+ <Compile Include="src\crypto\IDecryptorBuilderProvider.cs" />
<Compile Include="src\crypto\IDerivationFunction.cs" />
<Compile Include="src\crypto\IDerivationParameters.cs" />
<Compile Include="src\crypto\IDigest.cs" />
+ <Compile Include="src\crypto\IDSA.cs" />
+ <Compile Include="src\crypto\IDsaExt.cs" />
<Compile Include="src\crypto\IEntropySource.cs" />
<Compile Include="src\crypto\IEntropySourceProvider.cs" />
+ <Compile Include="src\crypto\IKeyUnwrapper.cs" />
+ <Compile Include="src\crypto\IKeyWrapper.cs" />
<Compile Include="src\crypto\IMac.cs" />
+ <Compile Include="src\crypto\IMacFactory.cs" />
<Compile Include="src\crypto\IRawAgreement.cs" />
<Compile Include="src\crypto\IRsa.cs" />
<Compile Include="src\crypto\ISignatureFactory.cs" />
@@ -677,20 +708,8 @@
<Compile Include="src\crypto\OutputLengthException.cs" />
<Compile Include="src\crypto\parameters\HKDFParameters.cs" />
<Compile Include="src\crypto\PbeParametersGenerator.cs" />
- <Compile Include="src\crypto\prng\BasicEntropySourceProvider.cs" />
- <Compile Include="src\crypto\prng\CryptoApiEntropySourceProvider.cs" />
- <Compile Include="src\crypto\prng\drbg\CtrSP800Drbg.cs" />
- <Compile Include="src\crypto\prng\drbg\DrbgUtilities.cs" />
- <Compile Include="src\crypto\prng\drbg\HashSP800Drbg.cs" />
- <Compile Include="src\crypto\prng\drbg\HMacSP800Drbg.cs" />
- <Compile Include="src\crypto\prng\drbg\ISP80090Drbg.cs" />
- <Compile Include="src\crypto\prng\EntropyUtilities.cs" />
- <Compile Include="src\crypto\prng\IDrbgProvider.cs" />
- <Compile Include="src\crypto\prng\SP800SecureRandom.cs" />
- <Compile Include="src\crypto\prng\SP800SecureRandomBuilder.cs" />
- <Compile Include="src\crypto\prng\X931Rng.cs" />
- <Compile Include="src\crypto\prng\X931SecureRandom.cs" />
- <Compile Include="src\crypto\prng\X931SecureRandomBuilder.cs" />
+ <Compile Include="src\crypto\Security.cs" />
+ <Compile Include="src\crypto\SimpleBlockResult.cs" />
<Compile Include="src\crypto\StreamBlockCipher.cs" />
<Compile Include="src\crypto\agreement\DHAgreement.cs" />
<Compile Include="src\crypto\agreement\DHBasicAgreement.cs" />
@@ -882,11 +901,16 @@
<Compile Include="src\crypto\modes\gcm\Tables1kGcmExponentiator.cs" />
<Compile Include="src\crypto\modes\gcm\Tables64kGcmMultiplier.cs" />
<Compile Include="src\crypto\modes\gcm\Tables8kGcmMultiplier.cs" />
+ <Compile Include="src\crypto\operators\Asn1CipherBuilder.cs" />
+ <Compile Include="src\crypto\operators\Asn1KeyWrapper.cs" />
<Compile Include="src\crypto\operators\Asn1Signature.cs" />
+ <Compile Include="src\crypto\operators\CmsContentEncryptorBuilder.cs" />
+ <Compile Include="src\crypto\operators\CmsKeyTransRecipientInfoGenerator.cs" />
<Compile Include="src\crypto\operators\DefaultSignatureCalculator.cs" />
<Compile Include="src\crypto\operators\DefaultSignatureResult.cs" />
<Compile Include="src\crypto\operators\DefaultVerifierCalculator.cs" />
<Compile Include="src\crypto\operators\DefaultVerifierResult.cs" />
+ <Compile Include="src\crypto\operators\GenericKey.cs" />
<Compile Include="src\crypto\paddings\BlockCipherPadding.cs" />
<Compile Include="src\crypto\paddings\ISO10126d2Padding.cs" />
<Compile Include="src\crypto\paddings\ISO7816d4Padding.cs" />
@@ -913,8 +937,10 @@
<Compile Include="src\crypto\parameters\DsaPublicKeyParameters.cs" />
<Compile Include="src\crypto\parameters\DsaValidationParameters.cs" />
<Compile Include="src\crypto\parameters\ECDomainParameters.cs" />
+ <Compile Include="src\crypto\parameters\ECGOST3410Parameters.cs" />
<Compile Include="src\crypto\parameters\ECKeyGenerationParameters.cs" />
<Compile Include="src\crypto\parameters\ECKeyParameters.cs" />
+ <Compile Include="src\crypto\parameters\ECNamedDomainParameters.cs" />
<Compile Include="src\crypto\parameters\ECPrivateKeyParameters.cs" />
<Compile Include="src\crypto\parameters\ECPublicKeyParameters.cs" />
<Compile Include="src\crypto\parameters\Ed25519KeyGenerationParameters.cs" />
@@ -967,12 +993,26 @@
<Compile Include="src\crypto\parameters\X448KeyGenerationParameters.cs" />
<Compile Include="src\crypto\parameters\X448PrivateKeyParameters.cs" />
<Compile Include="src\crypto\parameters\X448PublicKeyParameters.cs" />
+ <Compile Include="src\crypto\prng\BasicEntropySourceProvider.cs" />
+ <Compile Include="src\crypto\prng\CryptoApiEntropySourceProvider.cs" />
<Compile Include="src\crypto\prng\CryptoApiRandomGenerator.cs" />
<Compile Include="src\crypto\prng\DigestRandomGenerator.cs" />
+ <Compile Include="src\crypto\prng\EntropyUtilities.cs" />
+ <Compile Include="src\crypto\prng\IDrbgProvider.cs" />
<Compile Include="src\crypto\prng\IRandomGenerator.cs" />
<Compile Include="src\crypto\prng\ReversedWindowGenerator.cs" />
+ <Compile Include="src\crypto\prng\SP800SecureRandom.cs" />
+ <Compile Include="src\crypto\prng\SP800SecureRandomBuilder.cs" />
<Compile Include="src\crypto\prng\ThreadedSeedGenerator.cs" />
<Compile Include="src\crypto\prng\VMPCRandomGenerator.cs" />
+ <Compile Include="src\crypto\prng\X931Rng.cs" />
+ <Compile Include="src\crypto\prng\X931SecureRandom.cs" />
+ <Compile Include="src\crypto\prng\X931SecureRandomBuilder.cs" />
+ <Compile Include="src\crypto\prng\drbg\CtrSP800Drbg.cs" />
+ <Compile Include="src\crypto\prng\drbg\DrbgUtilities.cs" />
+ <Compile Include="src\crypto\prng\drbg\HashSP800Drbg.cs" />
+ <Compile Include="src\crypto\prng\drbg\HMacSP800Drbg.cs" />
+ <Compile Include="src\crypto\prng\drbg\ISP80090Drbg.cs" />
<Compile Include="src\crypto\signers\DsaDigestSigner.cs" />
<Compile Include="src\crypto\signers\DsaSigner.cs" />
<Compile Include="src\crypto\signers\ECDsaSigner.cs" />
@@ -1161,6 +1201,9 @@
<Compile Include="src\crypto\tls\UrlAndHash.cs" />
<Compile Include="src\crypto\tls\UseSrtpData.cs" />
<Compile Include="src\crypto\tls\UserMappingType.cs" />
+ <Compile Include="src\crypto\util\AlgorithmIdentifierFactory.cs" />
+ <Compile Include="src\crypto\util\CipherFactory.cs" />
+ <Compile Include="src\crypto\util\CipherKeyGeneratorFactory.cs" />
<Compile Include="src\crypto\util\Pack.cs" />
<Compile Include="src\math\BigInteger.cs" />
<Compile Include="src\math\Primes.cs" />
@@ -1415,6 +1458,10 @@
<Compile Include="src\pkcs\Pkcs12Entry.cs" />
<Compile Include="src\pkcs\Pkcs12Store.cs" />
<Compile Include="src\pkcs\Pkcs12Utilities.cs" />
+ <Compile Include="src\pkcs\Pkcs8EncryptedPrivateKeyInfo.cs" />
+ <Compile Include="src\pkcs\Pkcs8EncryptedPrivateKeyInfoBuilder.cs" />
+ <Compile Include="src\pkcs\PkcsException.cs" />
+ <Compile Include="src\pkcs\PkcsIOException.cs" />
<Compile Include="src\pkcs\PrivateKeyInfoFactory.cs" />
<Compile Include="src\pkcs\X509CertificateEntry.cs" />
<Compile Include="src\pkix\CertStatus.cs" />
@@ -1515,6 +1562,8 @@
<Compile Include="src\util\io\BaseInputStream.cs" />
<Compile Include="src\util\io\BaseOutputStream.cs" />
<Compile Include="src\util\io\FilterStream.cs" />
+ <Compile Include="src\util\io\MemoryInputStream.cs" />
+ <Compile Include="src\util\io\MemoryOutputStream.cs" />
<Compile Include="src\util\io\NullOutputStream.cs" />
<Compile Include="src\util\io\PushbackStream.cs" />
<Compile Include="src\util\io\StreamOverflowException.cs" />
diff --git a/crypto/BouncyCastle.csproj b/crypto/BouncyCastle.csproj
index 5dfdd35e5..af51afd16 100644
--- a/crypto/BouncyCastle.csproj
+++ b/crypto/BouncyCastle.csproj
@@ -556,6 +556,15 @@
<Compile Include="src\bcpg\sig\SignatureExpirationTime.cs" />
<Compile Include="src\bcpg\sig\SignerUserId.cs" />
<Compile Include="src\bcpg\sig\TrustSignature.cs" />
+ <Compile Include="src\cmp\CertificateConfirmationContent.cs" />
+ <Compile Include="src\cmp\CertificateConfirmationContentBuilder.cs" />
+ <Compile Include="src\cmp\CertificateStatus.cs" />
+ <Compile Include="src\cmp\CmpException.cs" />
+ <Compile Include="src\cmp\GeneralPkiMessage.cs" />
+ <Compile Include="src\cmp\ProtectedPkiMessage.cs" />
+ <Compile Include="src\cmp\ProtectedPkiMessageBuilder.cs" />
+ <Compile Include="src\cmp\RevocationDetails.cs" />
+ <Compile Include="src\cmp\RevocationDetailsBuilder.cs" />
<Compile Include="src\cms\BaseDigestCalculator.cs" />
<Compile Include="src\cms\CMSAttributeTableGenerationException.cs" />
<Compile Include="src\cms\CMSAttributeTableGenerator.cs" />
@@ -597,6 +606,7 @@
<Compile Include="src\cms\CounterSignatureDigestCalculator.cs" />
<Compile Include="src\cms\DefaultAuthenticatedAttributeTableGenerator.cs" />
<Compile Include="src\cms\DefaultSignedAttributeTableGenerator.cs" />
+ <Compile Include="src\cms\EnvelopedDataHelper.cs" />
<Compile Include="src\cms\IDigestCalculator.cs" />
<Compile Include="src\cms\KEKRecipientInfoGenerator.cs" />
<Compile Include="src\cms\KEKRecipientInformation.cs" />
@@ -620,6 +630,20 @@
<Compile Include="src\cms\SignerInformation.cs" />
<Compile Include="src\cms\SignerInformationStore.cs" />
<Compile Include="src\cms\SimpleAttributeTableGenerator.cs" />
+ <Compile Include="src\crmf\AuthenticatorControl.cs" />
+ <Compile Include="src\crmf\CertificateRequestMessage.cs" />
+ <Compile Include="src\crmf\CertificateRequestMessageBuilder.cs" />
+ <Compile Include="src\crmf\CrmfException.cs" />
+ <Compile Include="src\crmf\DefaultPKMacPrimitivesProvider.cs" />
+ <Compile Include="src\crmf\EncryptedValueBuilder.cs" />
+ <Compile Include="src\crmf\IControl.cs" />
+ <Compile Include="src\crmf\IEncryptedValuePadder.cs" />
+ <Compile Include="src\crmf\IPKMacPrimitivesProvider.cs" />
+ <Compile Include="src\crmf\PkiArchiveControl.cs" />
+ <Compile Include="src\crmf\PkiArchiveControlBuilder.cs" />
+ <Compile Include="src\crmf\PKMacBuilder.cs" />
+ <Compile Include="src\crmf\ProofOfPossessionSigningKeyBuilder.cs" />
+ <Compile Include="src\crmf\RegTokenControl.cs" />
<Compile Include="src\crypto\AsymmetricCipherKeyPair.cs" />
<Compile Include="src\crypto\AsymmetricKeyParameter.cs" />
<Compile Include="src\crypto\BufferedAeadBlockCipher.cs" />
@@ -644,15 +668,22 @@
<Compile Include="src\crypto\IBlockCipher.cs" />
<Compile Include="src\crypto\IBlockResult.cs" />
<Compile Include="src\crypto\IBufferedCipher.cs" />
+ <Compile Include="src\crypto\ICipher.cs" />
+ <Compile Include="src\crypto\ICipherBuilder.cs" />
+ <Compile Include="src\crypto\ICipherBuilderWithKey.cs" />
<Compile Include="src\crypto\ICipherParameters.cs" />
- <Compile Include="src\crypto\IDSA.cs" />
- <Compile Include="src\crypto\IDsaExt.cs" />
+ <Compile Include="src\crypto\IDecryptorBuilderProvider.cs" />
<Compile Include="src\crypto\IDerivationFunction.cs" />
<Compile Include="src\crypto\IDerivationParameters.cs" />
<Compile Include="src\crypto\IDigest.cs" />
+ <Compile Include="src\crypto\IDSA.cs" />
+ <Compile Include="src\crypto\IDsaExt.cs" />
<Compile Include="src\crypto\IEntropySource.cs" />
<Compile Include="src\crypto\IEntropySourceProvider.cs" />
+ <Compile Include="src\crypto\IKeyUnwrapper.cs" />
+ <Compile Include="src\crypto\IKeyWrapper.cs" />
<Compile Include="src\crypto\IMac.cs" />
+ <Compile Include="src\crypto\IMacFactory.cs" />
<Compile Include="src\crypto\IRawAgreement.cs" />
<Compile Include="src\crypto\IRsa.cs" />
<Compile Include="src\crypto\ISignatureFactory.cs" />
@@ -669,23 +700,11 @@
<Compile Include="src\crypto\KeyGenerationParameters.cs" />
<Compile Include="src\crypto\MaxBytesExceededException.cs" />
<Compile Include="src\crypto\OutputLengthException.cs" />
+ <Compile Include="src\crypto\Security.cs" />
+ <Compile Include="src\crypto\SimpleBlockResult.cs" />
+ <Compile Include="src\crypto\StreamBlockCipher.cs" />
<Compile Include="src\crypto\parameters\HKDFParameters.cs" />
<Compile Include="src\crypto\PbeParametersGenerator.cs" />
- <Compile Include="src\crypto\prng\BasicEntropySourceProvider.cs" />
- <Compile Include="src\crypto\prng\CryptoApiEntropySourceProvider.cs" />
- <Compile Include="src\crypto\prng\drbg\CtrSP800Drbg.cs" />
- <Compile Include="src\crypto\prng\drbg\DrbgUtilities.cs" />
- <Compile Include="src\crypto\prng\drbg\HashSP800Drbg.cs" />
- <Compile Include="src\crypto\prng\drbg\HMacSP800Drbg.cs" />
- <Compile Include="src\crypto\prng\drbg\ISP80090Drbg.cs" />
- <Compile Include="src\crypto\prng\EntropyUtilities.cs" />
- <Compile Include="src\crypto\prng\IDrbgProvider.cs" />
- <Compile Include="src\crypto\prng\SP800SecureRandom.cs" />
- <Compile Include="src\crypto\prng\SP800SecureRandomBuilder.cs" />
- <Compile Include="src\crypto\prng\X931Rng.cs" />
- <Compile Include="src\crypto\prng\X931SecureRandom.cs" />
- <Compile Include="src\crypto\prng\X931SecureRandomBuilder.cs" />
- <Compile Include="src\crypto\StreamBlockCipher.cs" />
<Compile Include="src\crypto\agreement\DHAgreement.cs" />
<Compile Include="src\crypto\agreement\DHBasicAgreement.cs" />
<Compile Include="src\crypto\agreement\DHStandardGroups.cs" />
@@ -876,11 +895,16 @@
<Compile Include="src\crypto\modes\gcm\Tables1kGcmExponentiator.cs" />
<Compile Include="src\crypto\modes\gcm\Tables64kGcmMultiplier.cs" />
<Compile Include="src\crypto\modes\gcm\Tables8kGcmMultiplier.cs" />
+ <Compile Include="src\crypto\operators\Asn1CipherBuilder.cs" />
+ <Compile Include="src\crypto\operators\Asn1KeyWrapper.cs" />
<Compile Include="src\crypto\operators\Asn1Signature.cs" />
+ <Compile Include="src\crypto\operators\CmsContentEncryptorBuilder.cs" />
+ <Compile Include="src\crypto\operators\CmsKeyTransRecipientInfoGenerator.cs" />
<Compile Include="src\crypto\operators\DefaultSignatureCalculator.cs" />
<Compile Include="src\crypto\operators\DefaultSignatureResult.cs" />
<Compile Include="src\crypto\operators\DefaultVerifierCalculator.cs" />
<Compile Include="src\crypto\operators\DefaultVerifierResult.cs" />
+ <Compile Include="src\crypto\operators\GenericKey.cs" />
<Compile Include="src\crypto\paddings\BlockCipherPadding.cs" />
<Compile Include="src\crypto\paddings\ISO10126d2Padding.cs" />
<Compile Include="src\crypto\paddings\ISO7816d4Padding.cs" />
@@ -907,8 +931,10 @@
<Compile Include="src\crypto\parameters\DsaPublicKeyParameters.cs" />
<Compile Include="src\crypto\parameters\DsaValidationParameters.cs" />
<Compile Include="src\crypto\parameters\ECDomainParameters.cs" />
+ <Compile Include="src\crypto\parameters\ECGOST3410Parameters.cs" />
<Compile Include="src\crypto\parameters\ECKeyGenerationParameters.cs" />
<Compile Include="src\crypto\parameters\ECKeyParameters.cs" />
+ <Compile Include="src\crypto\parameters\ECNamedDomainParameters.cs" />
<Compile Include="src\crypto\parameters\ECPrivateKeyParameters.cs" />
<Compile Include="src\crypto\parameters\ECPublicKeyParameters.cs" />
<Compile Include="src\crypto\parameters\Ed25519KeyGenerationParameters.cs" />
@@ -961,12 +987,26 @@
<Compile Include="src\crypto\parameters\X448KeyGenerationParameters.cs" />
<Compile Include="src\crypto\parameters\X448PrivateKeyParameters.cs" />
<Compile Include="src\crypto\parameters\X448PublicKeyParameters.cs" />
+ <Compile Include="src\crypto\prng\BasicEntropySourceProvider.cs" />
+ <Compile Include="src\crypto\prng\CryptoApiEntropySourceProvider.cs" />
<Compile Include="src\crypto\prng\CryptoApiRandomGenerator.cs" />
<Compile Include="src\crypto\prng\DigestRandomGenerator.cs" />
+ <Compile Include="src\crypto\prng\EntropyUtilities.cs" />
+ <Compile Include="src\crypto\prng\IDrbgProvider.cs" />
<Compile Include="src\crypto\prng\IRandomGenerator.cs" />
<Compile Include="src\crypto\prng\ReversedWindowGenerator.cs" />
+ <Compile Include="src\crypto\prng\SP800SecureRandom.cs" />
+ <Compile Include="src\crypto\prng\SP800SecureRandomBuilder.cs" />
<Compile Include="src\crypto\prng\ThreadedSeedGenerator.cs" />
<Compile Include="src\crypto\prng\VMPCRandomGenerator.cs" />
+ <Compile Include="src\crypto\prng\X931Rng.cs" />
+ <Compile Include="src\crypto\prng\X931SecureRandom.cs" />
+ <Compile Include="src\crypto\prng\X931SecureRandomBuilder.cs" />
+ <Compile Include="src\crypto\prng\drbg\CtrSP800Drbg.cs" />
+ <Compile Include="src\crypto\prng\drbg\DrbgUtilities.cs" />
+ <Compile Include="src\crypto\prng\drbg\HashSP800Drbg.cs" />
+ <Compile Include="src\crypto\prng\drbg\HMacSP800Drbg.cs" />
+ <Compile Include="src\crypto\prng\drbg\ISP80090Drbg.cs" />
<Compile Include="src\crypto\signers\DsaDigestSigner.cs" />
<Compile Include="src\crypto\signers\DsaSigner.cs" />
<Compile Include="src\crypto\signers\ECDsaSigner.cs" />
@@ -1155,6 +1195,9 @@
<Compile Include="src\crypto\tls\UrlAndHash.cs" />
<Compile Include="src\crypto\tls\UseSrtpData.cs" />
<Compile Include="src\crypto\tls\UserMappingType.cs" />
+ <Compile Include="src\crypto\util\AlgorithmIdentifierFactory.cs" />
+ <Compile Include="src\crypto\util\CipherFactory.cs" />
+ <Compile Include="src\crypto\util\CipherKeyGeneratorFactory.cs" />
<Compile Include="src\crypto\util\Pack.cs" />
<Compile Include="src\math\BigInteger.cs" />
<Compile Include="src\math\Primes.cs" />
@@ -1409,6 +1452,10 @@
<Compile Include="src\pkcs\Pkcs12Entry.cs" />
<Compile Include="src\pkcs\Pkcs12Store.cs" />
<Compile Include="src\pkcs\Pkcs12Utilities.cs" />
+ <Compile Include="src\pkcs\Pkcs8EncryptedPrivateKeyInfo.cs" />
+ <Compile Include="src\pkcs\Pkcs8EncryptedPrivateKeyInfoBuilder.cs" />
+ <Compile Include="src\pkcs\PkcsException.cs" />
+ <Compile Include="src\pkcs\PkcsIOException.cs" />
<Compile Include="src\pkcs\PrivateKeyInfoFactory.cs" />
<Compile Include="src\pkcs\X509CertificateEntry.cs" />
<Compile Include="src\pkix\CertStatus.cs" />
@@ -1509,6 +1556,8 @@
<Compile Include="src\util\io\BaseInputStream.cs" />
<Compile Include="src\util\io\BaseOutputStream.cs" />
<Compile Include="src\util\io\FilterStream.cs" />
+ <Compile Include="src\util\io\MemoryInputStream.cs" />
+ <Compile Include="src\util\io\MemoryOutputStream.cs" />
<Compile Include="src\util\io\NullOutputStream.cs" />
<Compile Include="src\util\io\PushbackStream.cs" />
<Compile Include="src\util\io\StreamOverflowException.cs" />
diff --git a/crypto/BouncyCastle.iOS.csproj b/crypto/BouncyCastle.iOS.csproj
index 3208fbce7..a90f01785 100644
--- a/crypto/BouncyCastle.iOS.csproj
+++ b/crypto/BouncyCastle.iOS.csproj
@@ -557,6 +557,15 @@
<Compile Include="src\bcpg\sig\SignatureExpirationTime.cs" />
<Compile Include="src\bcpg\sig\SignerUserId.cs" />
<Compile Include="src\bcpg\sig\TrustSignature.cs" />
+ <Compile Include="src\cmp\CertificateConfirmationContent.cs" />
+ <Compile Include="src\cmp\CertificateConfirmationContentBuilder.cs" />
+ <Compile Include="src\cmp\CertificateStatus.cs" />
+ <Compile Include="src\cmp\CmpException.cs" />
+ <Compile Include="src\cmp\GeneralPkiMessage.cs" />
+ <Compile Include="src\cmp\ProtectedPkiMessage.cs" />
+ <Compile Include="src\cmp\ProtectedPkiMessageBuilder.cs" />
+ <Compile Include="src\cmp\RevocationDetails.cs" />
+ <Compile Include="src\cmp\RevocationDetailsBuilder.cs" />
<Compile Include="src\cms\BaseDigestCalculator.cs" />
<Compile Include="src\cms\CMSAttributeTableGenerationException.cs" />
<Compile Include="src\cms\CMSAttributeTableGenerator.cs" />
@@ -598,6 +607,7 @@
<Compile Include="src\cms\CounterSignatureDigestCalculator.cs" />
<Compile Include="src\cms\DefaultAuthenticatedAttributeTableGenerator.cs" />
<Compile Include="src\cms\DefaultSignedAttributeTableGenerator.cs" />
+ <Compile Include="src\cms\EnvelopedDataHelper.cs" />
<Compile Include="src\cms\IDigestCalculator.cs" />
<Compile Include="src\cms\KEKRecipientInfoGenerator.cs" />
<Compile Include="src\cms\KEKRecipientInformation.cs" />
@@ -621,6 +631,20 @@
<Compile Include="src\cms\SignerInformation.cs" />
<Compile Include="src\cms\SignerInformationStore.cs" />
<Compile Include="src\cms\SimpleAttributeTableGenerator.cs" />
+ <Compile Include="src\crmf\AuthenticatorControl.cs" />
+ <Compile Include="src\crmf\CertificateRequestMessage.cs" />
+ <Compile Include="src\crmf\CertificateRequestMessageBuilder.cs" />
+ <Compile Include="src\crmf\CrmfException.cs" />
+ <Compile Include="src\crmf\DefaultPKMacPrimitivesProvider.cs" />
+ <Compile Include="src\crmf\EncryptedValueBuilder.cs" />
+ <Compile Include="src\crmf\IControl.cs" />
+ <Compile Include="src\crmf\IEncryptedValuePadder.cs" />
+ <Compile Include="src\crmf\IPKMacPrimitivesProvider.cs" />
+ <Compile Include="src\crmf\PkiArchiveControl.cs" />
+ <Compile Include="src\crmf\PkiArchiveControlBuilder.cs" />
+ <Compile Include="src\crmf\PKMacBuilder.cs" />
+ <Compile Include="src\crmf\ProofOfPossessionSigningKeyBuilder.cs" />
+ <Compile Include="src\crmf\RegTokenControl.cs" />
<Compile Include="src\crypto\AsymmetricCipherKeyPair.cs" />
<Compile Include="src\crypto\AsymmetricKeyParameter.cs" />
<Compile Include="src\crypto\BufferedAeadBlockCipher.cs" />
@@ -645,15 +669,22 @@
<Compile Include="src\crypto\IBlockCipher.cs" />
<Compile Include="src\crypto\IBlockResult.cs" />
<Compile Include="src\crypto\IBufferedCipher.cs" />
+ <Compile Include="src\crypto\ICipher.cs" />
+ <Compile Include="src\crypto\ICipherBuilder.cs" />
+ <Compile Include="src\crypto\ICipherBuilderWithKey.cs" />
<Compile Include="src\crypto\ICipherParameters.cs" />
- <Compile Include="src\crypto\IDSA.cs" />
- <Compile Include="src\crypto\IDsaExt.cs" />
+ <Compile Include="src\crypto\IDecryptorBuilderProvider.cs" />
<Compile Include="src\crypto\IDerivationFunction.cs" />
<Compile Include="src\crypto\IDerivationParameters.cs" />
<Compile Include="src\crypto\IDigest.cs" />
+ <Compile Include="src\crypto\IDSA.cs" />
+ <Compile Include="src\crypto\IDsaExt.cs" />
<Compile Include="src\crypto\IEntropySource.cs" />
<Compile Include="src\crypto\IEntropySourceProvider.cs" />
+ <Compile Include="src\crypto\IKeyUnwrapper.cs" />
+ <Compile Include="src\crypto\IKeyWrapper.cs" />
<Compile Include="src\crypto\IMac.cs" />
+ <Compile Include="src\crypto\IMacFactory.cs" />
<Compile Include="src\crypto\IRawAgreement.cs" />
<Compile Include="src\crypto\IRsa.cs" />
<Compile Include="src\crypto\ISignatureFactory.cs" />
@@ -672,20 +703,8 @@
<Compile Include="src\crypto\OutputLengthException.cs" />
<Compile Include="src\crypto\parameters\HKDFParameters.cs" />
<Compile Include="src\crypto\PbeParametersGenerator.cs" />
- <Compile Include="src\crypto\prng\BasicEntropySourceProvider.cs" />
- <Compile Include="src\crypto\prng\CryptoApiEntropySourceProvider.cs" />
- <Compile Include="src\crypto\prng\drbg\CtrSP800Drbg.cs" />
- <Compile Include="src\crypto\prng\drbg\DrbgUtilities.cs" />
- <Compile Include="src\crypto\prng\drbg\HashSP800Drbg.cs" />
- <Compile Include="src\crypto\prng\drbg\HMacSP800Drbg.cs" />
- <Compile Include="src\crypto\prng\drbg\ISP80090Drbg.cs" />
- <Compile Include="src\crypto\prng\EntropyUtilities.cs" />
- <Compile Include="src\crypto\prng\IDrbgProvider.cs" />
- <Compile Include="src\crypto\prng\SP800SecureRandom.cs" />
- <Compile Include="src\crypto\prng\SP800SecureRandomBuilder.cs" />
- <Compile Include="src\crypto\prng\X931Rng.cs" />
- <Compile Include="src\crypto\prng\X931SecureRandom.cs" />
- <Compile Include="src\crypto\prng\X931SecureRandomBuilder.cs" />
+ <Compile Include="src\crypto\Security.cs" />
+ <Compile Include="src\crypto\SimpleBlockResult.cs" />
<Compile Include="src\crypto\StreamBlockCipher.cs" />
<Compile Include="src\crypto\agreement\DHAgreement.cs" />
<Compile Include="src\crypto\agreement\DHBasicAgreement.cs" />
@@ -877,11 +896,16 @@
<Compile Include="src\crypto\modes\gcm\Tables1kGcmExponentiator.cs" />
<Compile Include="src\crypto\modes\gcm\Tables64kGcmMultiplier.cs" />
<Compile Include="src\crypto\modes\gcm\Tables8kGcmMultiplier.cs" />
+ <Compile Include="src\crypto\operators\Asn1CipherBuilder.cs" />
+ <Compile Include="src\crypto\operators\Asn1KeyWrapper.cs" />
<Compile Include="src\crypto\operators\Asn1Signature.cs" />
+ <Compile Include="src\crypto\operators\CmsContentEncryptorBuilder.cs" />
+ <Compile Include="src\crypto\operators\CmsKeyTransRecipientInfoGenerator.cs" />
<Compile Include="src\crypto\operators\DefaultSignatureCalculator.cs" />
<Compile Include="src\crypto\operators\DefaultSignatureResult.cs" />
<Compile Include="src\crypto\operators\DefaultVerifierCalculator.cs" />
<Compile Include="src\crypto\operators\DefaultVerifierResult.cs" />
+ <Compile Include="src\crypto\operators\GenericKey.cs" />
<Compile Include="src\crypto\paddings\BlockCipherPadding.cs" />
<Compile Include="src\crypto\paddings\ISO10126d2Padding.cs" />
<Compile Include="src\crypto\paddings\ISO7816d4Padding.cs" />
@@ -908,8 +932,10 @@
<Compile Include="src\crypto\parameters\DsaPublicKeyParameters.cs" />
<Compile Include="src\crypto\parameters\DsaValidationParameters.cs" />
<Compile Include="src\crypto\parameters\ECDomainParameters.cs" />
+ <Compile Include="src\crypto\parameters\ECGOST3410Parameters.cs" />
<Compile Include="src\crypto\parameters\ECKeyGenerationParameters.cs" />
<Compile Include="src\crypto\parameters\ECKeyParameters.cs" />
+ <Compile Include="src\crypto\parameters\ECNamedDomainParameters.cs" />
<Compile Include="src\crypto\parameters\ECPrivateKeyParameters.cs" />
<Compile Include="src\crypto\parameters\ECPublicKeyParameters.cs" />
<Compile Include="src\crypto\parameters\Ed25519KeyGenerationParameters.cs" />
@@ -962,12 +988,26 @@
<Compile Include="src\crypto\parameters\X448KeyGenerationParameters.cs" />
<Compile Include="src\crypto\parameters\X448PrivateKeyParameters.cs" />
<Compile Include="src\crypto\parameters\X448PublicKeyParameters.cs" />
+ <Compile Include="src\crypto\prng\BasicEntropySourceProvider.cs" />
+ <Compile Include="src\crypto\prng\CryptoApiEntropySourceProvider.cs" />
<Compile Include="src\crypto\prng\CryptoApiRandomGenerator.cs" />
<Compile Include="src\crypto\prng\DigestRandomGenerator.cs" />
+ <Compile Include="src\crypto\prng\EntropyUtilities.cs" />
+ <Compile Include="src\crypto\prng\IDrbgProvider.cs" />
<Compile Include="src\crypto\prng\IRandomGenerator.cs" />
<Compile Include="src\crypto\prng\ReversedWindowGenerator.cs" />
+ <Compile Include="src\crypto\prng\SP800SecureRandom.cs" />
+ <Compile Include="src\crypto\prng\SP800SecureRandomBuilder.cs" />
<Compile Include="src\crypto\prng\ThreadedSeedGenerator.cs" />
<Compile Include="src\crypto\prng\VMPCRandomGenerator.cs" />
+ <Compile Include="src\crypto\prng\X931Rng.cs" />
+ <Compile Include="src\crypto\prng\X931SecureRandom.cs" />
+ <Compile Include="src\crypto\prng\X931SecureRandomBuilder.cs" />
+ <Compile Include="src\crypto\prng\drbg\CtrSP800Drbg.cs" />
+ <Compile Include="src\crypto\prng\drbg\DrbgUtilities.cs" />
+ <Compile Include="src\crypto\prng\drbg\HashSP800Drbg.cs" />
+ <Compile Include="src\crypto\prng\drbg\HMacSP800Drbg.cs" />
+ <Compile Include="src\crypto\prng\drbg\ISP80090Drbg.cs" />
<Compile Include="src\crypto\signers\DsaDigestSigner.cs" />
<Compile Include="src\crypto\signers\DsaSigner.cs" />
<Compile Include="src\crypto\signers\ECDsaSigner.cs" />
@@ -1156,6 +1196,9 @@
<Compile Include="src\crypto\tls\UrlAndHash.cs" />
<Compile Include="src\crypto\tls\UseSrtpData.cs" />
<Compile Include="src\crypto\tls\UserMappingType.cs" />
+ <Compile Include="src\crypto\util\AlgorithmIdentifierFactory.cs" />
+ <Compile Include="src\crypto\util\CipherFactory.cs" />
+ <Compile Include="src\crypto\util\CipherKeyGeneratorFactory.cs" />
<Compile Include="src\crypto\util\Pack.cs" />
<Compile Include="src\math\BigInteger.cs" />
<Compile Include="src\math\Primes.cs" />
@@ -1410,6 +1453,10 @@
<Compile Include="src\pkcs\Pkcs12Entry.cs" />
<Compile Include="src\pkcs\Pkcs12Store.cs" />
<Compile Include="src\pkcs\Pkcs12Utilities.cs" />
+ <Compile Include="src\pkcs\Pkcs8EncryptedPrivateKeyInfo.cs" />
+ <Compile Include="src\pkcs\Pkcs8EncryptedPrivateKeyInfoBuilder.cs" />
+ <Compile Include="src\pkcs\PkcsException.cs" />
+ <Compile Include="src\pkcs\PkcsIOException.cs" />
<Compile Include="src\pkcs\PrivateKeyInfoFactory.cs" />
<Compile Include="src\pkcs\X509CertificateEntry.cs" />
<Compile Include="src\pkix\CertStatus.cs" />
@@ -1510,6 +1557,8 @@
<Compile Include="src\util\io\BaseInputStream.cs" />
<Compile Include="src\util\io\BaseOutputStream.cs" />
<Compile Include="src\util\io\FilterStream.cs" />
+ <Compile Include="src\util\io\MemoryInputStream.cs" />
+ <Compile Include="src\util\io\MemoryOutputStream.cs" />
<Compile Include="src\util\io\NullOutputStream.cs" />
<Compile Include="src\util\io\PushbackStream.cs" />
<Compile Include="src\util\io\StreamOverflowException.cs" />
diff --git a/crypto/Readme.html b/crypto/Readme.html
index 9491b7d98..96b380802 100644
--- a/crypto/Readme.html
+++ b/crypto/Readme.html
@@ -31,6 +31,8 @@
<a href="#mozTocId3413">Notes:</a>
<ol>
<li>
+ <a href="#mozTocId85319">Release 1.8.5</a>
+ <li>
<a href="#mozTocId85318">Release 1.8.4</a>
<li>
<a href="#mozTocId85317">Release 1.8.3</a>
@@ -296,11 +298,12 @@ We state, where EC MQV has not otherwise been disabled or removed:
<hr style="WIDTH: 100%; HEIGHT: 2px">
<h3><a class="mozTocH3" name="mozTocId3413"></a>Notes:</h3>
- <h4><a class="mozTocH4" name="mozTocId85318"></a>Release 1.8.5, 2019</h4>
+ <h4><a class="mozTocH4" name="mozTocId85319"></a>Release 1.8.5, TBD</h4>
+
<h5>Additional Features and Functionality</h5>
<ul>
- <li>Supported added for encoding and decoding of GOST3410-2012 keys</li>
- <li>Basic support added for CMP (RFC 4210) and CRMF (RFC 4211), including the PKI archive control.</li>
+ <li>Supported added for encoding and decoding of GOST3410-2012 keys</li>
+ <li>Basic support added for CMP (RFC 4210) and CRMF (RFC 4211), including the PKI archive control.</li>
</ul>
<h4><a class="mozTocH4" name="mozTocId85318"></a>Release 1.8.4, Saturday October 27, 2018</h4>
diff --git a/crypto/crypto.csproj b/crypto/crypto.csproj
index b45530980..5b0fcbae4 100644
--- a/crypto/crypto.csproj
+++ b/crypto/crypto.csproj
@@ -2669,6 +2669,51 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\cmp\CertificateConfirmationContent.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\cmp\CertificateConfirmationContentBuilder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\cmp\CertificateStatus.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\cmp\CmpException.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\cmp\GeneralPkiMessage.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\cmp\ProtectedPkiMessage.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\cmp\ProtectedPkiMessageBuilder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\cmp\RevocationDetails.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\cmp\RevocationDetailsBuilder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\cms\BaseDigestCalculator.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -2874,6 +2919,11 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\cms\EnvelopedDataHelper.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\cms\IDigestCalculator.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -2989,6 +3039,76 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crmf\AuthenticatorControl.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\CertificateRequestMessage.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\CertificateRequestMessageBuilder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\CrmfException.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\DefaultPKMacPrimitivesProvider.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\EncryptedValueBuilder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\IControl.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\IEncryptedValuePadder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\IPKMacPrimitivesProvider.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\PkiArchiveControl.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\PkiArchiveControlBuilder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\PKMacBuilder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\ProofOfPossessionSigningKeyBuilder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crmf\RegTokenControl.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\AsymmetricCipherKeyPair.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -3079,11 +3199,31 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crypto\ICipher.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\ICipherBuilder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\ICipherBuilderWithKey.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\ICipherParameters.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crypto\IDecryptorBuilderProvider.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\IDerivationFunction.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -3119,11 +3259,26 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crypto\IKeyUnwrapper.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\IKeyWrapper.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\IMac.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crypto\IMacFactory.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\InvalidCipherTextException.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -3209,6 +3364,16 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crypto\Security.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\SimpleBlockResult.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\StreamBlockCipher.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -4194,11 +4359,31 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crypto\operators\Asn1CipherBuilder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\operators\Asn1KeyWrapper.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\operators\Asn1Signature.cs"
SubType = "Code"
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crypto\operators\CmsContentEncryptorBuilder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\operators\CmsKeyTransRecipientInfoGenerator.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\operators\DefaultSignatureCalculator.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -4219,6 +4404,11 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crypto\operators\GenericKey.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\paddings\BlockCipherPadding.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -4349,6 +4539,11 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crypto\parameters\ECGOST3410Parameters.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\parameters\ECKeyGenerationParameters.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -4359,6 +4554,11 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crypto\parameters\ECNamedDomainParameters.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\parameters\ECPrivateKeyParameters.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -5664,6 +5864,21 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\crypto\util\AlgorithmIdentifierFactory.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\util\CipherFactory.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\crypto\util\CipherKeyGeneratorFactory.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\crypto\util\Pack.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -6934,6 +7149,26 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\pkcs\Pkcs8EncryptedPrivateKeyInfo.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\pkcs\Pkcs8EncryptedPrivateKeyInfoBuilder.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\pkcs\PkcsException.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\pkcs\PkcsIOException.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\pkcs\PrivateKeyInfoFactory.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -7439,6 +7674,16 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\util\io\MemoryInputStream.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "src\util\io\MemoryOutputStream.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\util\io\NullOutputStream.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -11540,6 +11785,11 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "test\src\cmp\test\ProtectedMessageTest.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "test\src\cms\test\AllTests.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -11605,6 +11855,11 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "test\src\crmf\test\CrmfTest.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "test\src\crypto\agreement\test\AllTests.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -11845,6 +12100,11 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "test\src\crypto\test\ECGOST3410_2012Test.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "test\src\crypto\test\ECIESTest.cs"
SubType = "Code"
BuildAction = "Compile"
diff --git a/crypto/src/asn1/DerObjectIdentifier.cs b/crypto/src/asn1/DerObjectIdentifier.cs
index 495260a68..1c8032f45 100644
--- a/crypto/src/asn1/DerObjectIdentifier.cs
+++ b/crypto/src/asn1/DerObjectIdentifier.cs
@@ -211,7 +211,7 @@ namespace Org.BouncyCastle.Asn1
}
private static bool IsValidBranchID(
- String branchID, int start)
+ string branchID, int start)
{
bool periodAllowed = false;
diff --git a/crypto/src/asn1/bc/BCObjectIdentifiers.cs b/crypto/src/asn1/bc/BCObjectIdentifiers.cs
index 4f23c101a..1e2448853 100644
--- a/crypto/src/asn1/bc/BCObjectIdentifiers.cs
+++ b/crypto/src/asn1/bc/BCObjectIdentifiers.cs
@@ -5,23 +5,20 @@ namespace Org.BouncyCastle.Asn1.BC
public abstract class BCObjectIdentifiers
{
/**
- * iso.org.dod.internet.private.enterprise.legion-of-the-bouncy-castle
- *<p>
- * 1.3.6.1.4.1.22554
+ * iso.org.dod.internet.private.enterprise.legion-of-the-bouncy-castle
+ * <p>1.3.6.1.4.1.22554</p>
*/
public static readonly DerObjectIdentifier bc = new DerObjectIdentifier("1.3.6.1.4.1.22554");
/**
* pbe(1) algorithms
- * <p>
- * 1.3.6.1.4.1.22554.1
+ * <p>1.3.6.1.4.1.22554.1</p>
*/
public static readonly DerObjectIdentifier bc_pbe = bc.Branch("1");
/**
* SHA-1(1)
- * <p>
- * 1.3.6.1.4.1.22554.1.1
+ * <p>1.3.6.1.4.1.22554.1.1</p>
*/
public static readonly DerObjectIdentifier bc_pbe_sha1 = bc_pbe.Branch("1");
diff --git a/crypto/src/asn1/bsi/BsiObjectIdentifiers.cs b/crypto/src/asn1/bsi/BsiObjectIdentifiers.cs
index 95a0d7b52..50ada2e02 100644
--- a/crypto/src/asn1/bsi/BsiObjectIdentifiers.cs
+++ b/crypto/src/asn1/bsi/BsiObjectIdentifiers.cs
@@ -79,23 +79,22 @@ namespace Org.BouncyCastle.Asn1.Bsi
public static readonly DerObjectIdentifier ecka_eg_SessionKDF_AES192 = ecka_eg_SessionKDF.Branch("3");
public static readonly DerObjectIdentifier ecka_eg_SessionKDF_AES256 = ecka_eg_SessionKDF.Branch("4");
- /** AES encryption (CBC) and authentication (CMAC)
+ /* AES encryption (CBC) and authentication (CMAC)
* OID: 0.4.0.127.0.7.1.x */
//TODO: replace "1" with correct OID
//public static readonly DerObjectIdentifier aes_cbc_cmac = algorithm.Branch("1");
- /** AES encryption (CBC) and authentication (CMAC) with 128 bit
+ /* AES encryption (CBC) and authentication (CMAC) with 128 bit
* OID: 0.4.0.127.0.7.1.x.y1 */
//TODO: replace "1" with correct OID
//public static readonly DerObjectIdentifier id_aes128_CBC_CMAC = aes_cbc_cmac.Branch("1");
-
- /** AES encryption (CBC) and authentication (CMAC) with 192 bit
+ /* AES encryption (CBC) and authentication (CMAC) with 192 bit
* OID: 0.4.0.127.0.7.1.x.y2 */
//TODO: replace "1" with correct OID
//public static readonly DerObjectIdentifier id_aes192_CBC_CMAC = aes_cbc_cmac.Branch("1");
- /** AES encryption (CBC) and authentication (CMAC) with 256 bit
+ /* AES encryption (CBC) and authentication (CMAC) with 256 bit
* OID: 0.4.0.127.0.7.1.x.y3 */
//TODO: replace "1" with correct OID
//public static readonly DerObjectIdentifier id_aes256_CBC_CMAC = aes_cbc_cmac.Branch("1");
diff --git a/crypto/src/asn1/crmf/AttributeTypeAndValue.cs b/crypto/src/asn1/crmf/AttributeTypeAndValue.cs
index 0a4b5bdbe..e7587896a 100644
--- a/crypto/src/asn1/crmf/AttributeTypeAndValue.cs
+++ b/crypto/src/asn1/crmf/AttributeTypeAndValue.cs
@@ -28,7 +28,7 @@ namespace Org.BouncyCastle.Asn1.Crmf
}
public AttributeTypeAndValue(
- String oid,
+ string oid,
Asn1Encodable value)
: this(new DerObjectIdentifier(oid), value)
{
diff --git a/crypto/src/asn1/crmf/Controls.cs b/crypto/src/asn1/crmf/Controls.cs
index 5f132155a..70b48a959 100644
--- a/crypto/src/asn1/crmf/Controls.cs
+++ b/crypto/src/asn1/crmf/Controls.cs
@@ -1,8 +1,8 @@
-using Org.BouncyCastle.Utilities;
-using System;
-using System.Collections.Generic;
+using System;
using System.Text;
+using Org.BouncyCastle.Utilities;
+
namespace Org.BouncyCastle.Asn1.Crmf
{
public class Controls
diff --git a/crypto/src/cmp/CertificateConfirmationContent.cs b/crypto/src/cmp/CertificateConfirmationContent.cs
index 13d1dab8e..ad46ca039 100644
--- a/crypto/src/cmp/CertificateConfirmationContent.cs
+++ b/crypto/src/cmp/CertificateConfirmationContent.cs
@@ -1,15 +1,14 @@
-
-using Org.BouncyCastle.Cms;
-using Org.BouncyCastle.Asn1.Cmp;
+using System;
+using Org.BouncyCastle.Asn1.Cmp;
+using Org.BouncyCastle.Cms;
namespace Org.BouncyCastle.Cmp
{
public class CertificateConfirmationContent
{
- private DefaultDigestAlgorithmIdentifierFinder digestAlgFinder;
- private CertConfirmContent content;
-
+ private readonly DefaultDigestAlgorithmIdentifierFinder digestAlgFinder;
+ private readonly CertConfirmContent content;
public CertificateConfirmationContent(CertConfirmContent content)
{
@@ -38,6 +37,6 @@ namespace Org.BouncyCastle.Cmp
}
return ret;
- }
+ }
}
}
diff --git a/crypto/src/cmp/CertificateConfirmationContentBuilder.cs b/crypto/src/cmp/CertificateConfirmationContentBuilder.cs
index 56f5d5ccb..611fa4449 100644
--- a/crypto/src/cmp/CertificateConfirmationContentBuilder.cs
+++ b/crypto/src/cmp/CertificateConfirmationContentBuilder.cs
@@ -1,4 +1,6 @@
-using System.Collections;
+using System;
+using System.Collections;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Cmp;
using Org.BouncyCastle.Asn1.X509;
@@ -6,22 +8,24 @@ using Org.BouncyCastle.Cms;
using Org.BouncyCastle.Crypto.IO;
using Org.BouncyCastle.Math;
using Org.BouncyCastle.Security;
+using Org.BouncyCastle.Utilities;
using Org.BouncyCastle.X509;
namespace Org.BouncyCastle.Cmp
{
public class CertificateConfirmationContentBuilder
{
- DefaultSignatureAlgorithmIdentifierFinder sigAlgFinder = new DefaultSignatureAlgorithmIdentifierFinder();
- private DefaultDigestAlgorithmIdentifierFinder digestAlgFinder;
- private ArrayList acceptedCerts = new ArrayList();
- private ArrayList acceptedReqIds = new ArrayList();
+ private static readonly DefaultSignatureAlgorithmIdentifierFinder sigAlgFinder = new DefaultSignatureAlgorithmIdentifierFinder();
- public CertificateConfirmationContentBuilder() : this(new DefaultDigestAlgorithmIdentifierFinder())
- {
+ private readonly DefaultDigestAlgorithmIdentifierFinder digestAlgFinder;
+ private readonly IList acceptedCerts = Platform.CreateArrayList();
+ private readonly IList acceptedReqIds = Platform.CreateArrayList();
+ public CertificateConfirmationContentBuilder()
+ : this(new DefaultDigestAlgorithmIdentifierFinder())
+ {
}
-
+
public CertificateConfirmationContentBuilder(DefaultDigestAlgorithmIdentifierFinder digestAlgFinder)
{
this.digestAlgFinder = digestAlgFinder;
@@ -40,27 +44,19 @@ namespace Org.BouncyCastle.Cmp
Asn1EncodableVector v = new Asn1EncodableVector();
for (int i = 0; i != acceptedCerts.Count; i++)
{
- X509Certificate cert = (X509Certificate) acceptedCerts[i];
- BigInteger reqId = (BigInteger) acceptedReqIds[i];
+ X509Certificate cert = (X509Certificate)acceptedCerts[i];
+ BigInteger reqId = (BigInteger)acceptedReqIds[i];
-
- AlgorithmIdentifier algorithmIdentifier = sigAlgFinder.Find(cert.SigAlgName);
+ AlgorithmIdentifier algorithmIdentifier = sigAlgFinder.Find(cert.SigAlgName);
AlgorithmIdentifier digAlg = digestAlgFinder.find(algorithmIdentifier);
- if (digAlg == null)
- {
+ if (null == digAlg)
throw new CmpException("cannot find algorithm for digest from signature");
- }
-
- DigestSink sink = new DigestSink(DigestUtilities.GetDigest(digAlg.Algorithm));
-
- sink.Write(cert.GetEncoded());
- byte[] dig = new byte[sink.Digest.GetDigestSize()];
- sink.Digest.DoFinal(dig, 0);
+ byte[] digest = DigestUtilities.CalculateDigest(digAlg.Algorithm, cert.GetEncoded());
- v.Add(new CertStatus(dig,reqId));
+ v.Add(new CertStatus(digest, reqId));
}
return new CertificateConfirmationContent(CertConfirmContent.GetInstance(new DerSequence(v)),
diff --git a/crypto/src/cmp/CertificateStatus.cs b/crypto/src/cmp/CertificateStatus.cs
index 92a94ea05..0f1d9af9b 100644
--- a/crypto/src/cmp/CertificateStatus.cs
+++ b/crypto/src/cmp/CertificateStatus.cs
@@ -1,4 +1,6 @@
-using Org.BouncyCastle.Asn1.Cmp;
+using System;
+
+using Org.BouncyCastle.Asn1.Cmp;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Cms;
using Org.BouncyCastle.Crypto.IO;
@@ -11,9 +13,10 @@ namespace Org.BouncyCastle.Cmp
{
public class CertificateStatus
{
- private DefaultSignatureAlgorithmIdentifierFinder sigAlgFinder = new DefaultSignatureAlgorithmIdentifierFinder();
- private DefaultDigestAlgorithmIdentifierFinder digestAlgFinder;
- private CertStatus certStatus;
+ private static readonly DefaultSignatureAlgorithmIdentifierFinder sigAlgFinder = new DefaultSignatureAlgorithmIdentifierFinder();
+
+ private readonly DefaultDigestAlgorithmIdentifierFinder digestAlgFinder;
+ private readonly CertStatus certStatus;
public CertificateStatus(DefaultDigestAlgorithmIdentifierFinder digestAlgFinder, CertStatus certStatus)
{
@@ -21,10 +24,10 @@ namespace Org.BouncyCastle.Cmp
this.certStatus = certStatus;
}
- public PkiStatusInfo PkiStatusInfo
- {
- get { return certStatus.StatusInfo; }
- }
+ public PkiStatusInfo PkiStatusInfo
+ {
+ get { return certStatus.StatusInfo; }
+ }
public BigInteger CertRequestId
{
@@ -33,19 +36,12 @@ namespace Org.BouncyCastle.Cmp
public bool IsVerified(X509Certificate cert)
{
+ AlgorithmIdentifier digAlg = digestAlgFinder.find(sigAlgFinder.Find(cert.SigAlgName));
+ if (null == digAlg)
+ throw new CmpException("cannot find algorithm for digest from signature " + cert.SigAlgName);
- AlgorithmIdentifier digAlg = digestAlgFinder.find( sigAlgFinder.Find(cert.SigAlgName));
- if (digAlg == null)
- {
- throw new CmpException("cannot find algorithm for digest from signature "+cert.SigAlgName);
- }
-
- DigestSink digestSink = new DigestSink(DigestUtilities.GetDigest(digAlg.Algorithm));
-
- digestSink.Write(cert.GetEncoded());
+ byte[] digest = DigestUtilities.CalculateDigest(digAlg.Algorithm, cert.GetEncoded());
- byte[] digest = new byte[digestSink.Digest.GetDigestSize()];
- digestSink.Digest.DoFinal(digest, 0);
return Arrays.ConstantTimeAreEqual(certStatus.CertHash.GetOctets(), digest);
}
}
diff --git a/crypto/src/cmp/CmpException.cs b/crypto/src/cmp/CmpException.cs
index 2f50f7780..6594e8f2a 100644
--- a/crypto/src/cmp/CmpException.cs
+++ b/crypto/src/cmp/CmpException.cs
@@ -1,24 +1,21 @@
using System;
-using System.Runtime.Serialization;
-
namespace Org.BouncyCastle.Cmp
{
- public class CmpException : Exception
+ public class CmpException
+ : Exception
{
public CmpException()
{
}
- public CmpException(string message) : base(message)
- {
- }
-
- public CmpException(string message, Exception innerException) : base(message, innerException)
+ public CmpException(string message)
+ : base(message)
{
}
- protected CmpException(SerializationInfo info, StreamingContext context) : base(info, context)
+ public CmpException(string message, Exception innerException)
+ : base(message, innerException)
{
}
}
diff --git a/crypto/src/cmp/GeneralPkiMessage.cs b/crypto/src/cmp/GeneralPkiMessage.cs
index ad55a8005..9b12ee77b 100644
--- a/crypto/src/cmp/GeneralPkiMessage.cs
+++ b/crypto/src/cmp/GeneralPkiMessage.cs
@@ -1,20 +1,24 @@
-namespace Org.BouncyCastle.Asn1.Cmp
+using System;
+
+using Org.BouncyCastle.Asn1;
+using Org.BouncyCastle.Asn1.Cmp;
+
+namespace Org.BouncyCastle.Cmp
{
- public class GeneralPKIMessage
+ public class GeneralPkiMessage
{
private readonly PkiMessage pkiMessage;
- private static PkiMessage parseBytes(byte[] encoding)
+ private static PkiMessage ParseBytes(byte[] encoding)
{
return PkiMessage.GetInstance(Asn1Object.FromByteArray(encoding));
}
-
/// <summary>
/// Wrap a PKIMessage ASN.1 structure.
/// </summary>
/// <param name="pkiMessage">PKI message.</param>
- public GeneralPKIMessage(PkiMessage pkiMessage)
+ public GeneralPkiMessage(PkiMessage pkiMessage)
{
this.pkiMessage = pkiMessage;
}
@@ -23,24 +27,19 @@
/// Create a PKIMessage from the passed in bytes.
/// </summary>
/// <param name="encoding">BER/DER encoding of the PKIMessage</param>
- public GeneralPKIMessage(byte[] encoding) : this(parseBytes(encoding))
+ public GeneralPkiMessage(byte[] encoding)
+ : this(ParseBytes(encoding))
{
}
public PkiHeader Header
{
- get
- {
- return pkiMessage.Header;
- }
+ get { return pkiMessage.Header; }
}
public PkiBody Body
{
- get
- {
- return pkiMessage.Body;
- }
+ get { return pkiMessage.Body; }
}
/// <summary>
diff --git a/crypto/src/cmp/ProtectedPkiMessage.cs b/crypto/src/cmp/ProtectedPkiMessage.cs
index d3cf4a524..bb5b5dc14 100644
--- a/crypto/src/cmp/ProtectedPkiMessage.cs
+++ b/crypto/src/cmp/ProtectedPkiMessage.cs
@@ -1,12 +1,12 @@
-using Org.BouncyCastle.Asn1.X509;
-using Org.BouncyCastle.X509;
-using System;
+using System;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Cmp;
+using Org.BouncyCastle.Asn1.X509;
+using Org.BouncyCastle.Crmf;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Utilities;
-
-using Org.BouncyCastle.Crmf;
+using Org.BouncyCastle.X509;
namespace Org.BouncyCastle.Cmp
{
@@ -15,20 +15,17 @@ namespace Org.BouncyCastle.Cmp
/// </summary>
public class ProtectedPkiMessage
{
- private PkiMessage pkiMessage;
+ private readonly PkiMessage pkiMessage;
/// <summary>
/// Wrap a general message.
/// </summary>
/// <exception cref="ArgumentException">If the general message does not have protection.</exception>
/// <param name="pkiMessage">The General message</param>
- public ProtectedPkiMessage(GeneralPKIMessage pkiMessage)
+ public ProtectedPkiMessage(GeneralPkiMessage pkiMessage)
{
-
if (!pkiMessage.HasProtection)
- {
throw new ArgumentException("pki message not protected");
- }
this.pkiMessage = pkiMessage.ToAsn1Structure();
}
@@ -40,10 +37,8 @@ namespace Org.BouncyCastle.Cmp
/// <param name="pkiMessage">The PKI message</param>
public ProtectedPkiMessage(PkiMessage pkiMessage)
{
- if (pkiMessage.Header.ProtectionAlg == null)
- {
+ if (null == pkiMessage.Header.ProtectionAlg)
throw new ArgumentException("pki message not protected");
- }
this.pkiMessage = pkiMessage;
}
@@ -51,25 +46,37 @@ namespace Org.BouncyCastle.Cmp
/// <summary>
/// Message header
/// </summary>
- public PkiHeader Header { get { return pkiMessage.Header; } }
+ public PkiHeader Header
+ {
+ get { return pkiMessage.Header; }
+ }
/// <summary>
/// Message Body
/// </summary>
- public PkiBody Body { get { return pkiMessage.Body; } }
+ public PkiBody Body
+ {
+ get { return pkiMessage.Body; }
+ }
/// <summary>
/// Return the underlying ASN.1 structure contained in this object.
/// </summary>
/// <returns>PKI Message structure</returns>
- public PkiMessage ToAsn1Message() { return pkiMessage; }
+ public PkiMessage ToAsn1Message()
+ {
+ return pkiMessage;
+ }
/// <summary>
/// Determine whether the message is protected by a password based MAC. Use verify(PKMACBuilder, char[])
/// to verify the message if this method returns true.
/// </summary>
/// <returns>true if protection MAC PBE based, false otherwise.</returns>
- public bool HasPasswordBasedMacProtected { get { return Header.ProtectionAlg.Algorithm.Equals(CmpObjectIdentifiers.passwordBasedMac); } }
+ public bool HasPasswordBasedMacProtected
+ {
+ get { return Header.ProtectionAlg.Algorithm.Equals(CmpObjectIdentifiers.passwordBasedMac); }
+ }
/// <summary>
/// Return the extra certificates associated with this message.
@@ -78,11 +85,8 @@ namespace Org.BouncyCastle.Cmp
public X509Certificate[] GetCertificates()
{
CmpCertificate[] certs = pkiMessage.GetExtraCerts();
-
- if (certs == null)
- {
+ if (null == certs)
return new X509Certificate[0];
- }
X509Certificate[] res = new X509Certificate[certs.Length];
for (int t = 0; t < certs.Length; t++)
@@ -107,7 +111,7 @@ namespace Org.BouncyCastle.Cmp
return result.IsVerified(pkiMessage.Protection.GetBytes());
}
- private Object Process(IStreamCalculator streamCalculator)
+ private object Process(IStreamCalculator streamCalculator)
{
Asn1EncodableVector avec = new Asn1EncodableVector();
avec.Add(pkiMessage.Header);
@@ -131,9 +135,7 @@ namespace Org.BouncyCastle.Cmp
public bool Verify(PKMacBuilder pkMacBuilder, char[] password)
{
if (!CmpObjectIdentifiers.passwordBasedMac.Equals(pkiMessage.Header.ProtectionAlg.Algorithm))
- {
throw new InvalidOperationException("protection algorithm is not mac based");
- }
PbmParameter parameter = PbmParameter.GetInstance(pkiMessage.Header.ProtectionAlg.Parameters);
diff --git a/crypto/src/cmp/ProtectedPkiMessageBuilder.cs b/crypto/src/cmp/ProtectedPkiMessageBuilder.cs
index 3ee223ba8..8ce0d48dc 100644
--- a/crypto/src/cmp/ProtectedPkiMessageBuilder.cs
+++ b/crypto/src/cmp/ProtectedPkiMessageBuilder.cs
@@ -1,10 +1,12 @@
using System;
using System.Collections;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Cmp;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Operators;
+using Org.BouncyCastle.Utilities;
using Org.BouncyCastle.X509;
namespace Org.BouncyCastle.Cmp
@@ -13,15 +15,14 @@ namespace Org.BouncyCastle.Cmp
{
private PkiHeaderBuilder hdrBuilBuilder;
private PkiBody body;
- private ArrayList generalInfos = new ArrayList();
- private ArrayList extraCerts = new ArrayList();
+ private IList generalInfos = Platform.CreateArrayList();
+ private IList extraCerts = Platform.CreateArrayList();
- public ProtectedPkiMessageBuilder(GeneralName sender, GeneralName recipient) : this(PkiHeader.CMP_2000, sender,
- recipient)
+ public ProtectedPkiMessageBuilder(GeneralName sender, GeneralName recipient)
+ : this(PkiHeader.CMP_2000, sender, recipient)
{
}
-
public ProtectedPkiMessageBuilder(int pvno, GeneralName sender, GeneralName recipient)
{
hdrBuilBuilder = new PkiHeaderBuilder(pvno, sender, recipient);
@@ -96,22 +97,21 @@ namespace Org.BouncyCastle.Cmp
throw new ArgumentException("AlgorithmDetails is not AlgorithmIdentifier");
}
- FinalizeHeader((AlgorithmIdentifier) signatureFactory.AlgorithmDetails);
+ FinalizeHeader((AlgorithmIdentifier)signatureFactory.AlgorithmDetails);
PkiHeader header = hdrBuilBuilder.Build();
DerBitString protection = new DerBitString(CalculateSignature(calculator, header, body));
return FinalizeMessage(header, protection);
}
public ProtectedPkiMessage Build(IMacFactory factory)
- {
- IStreamCalculator calculator = factory.CreateCalculator();
- FinalizeHeader((AlgorithmIdentifier)factory.AlgorithmDetails);
- PkiHeader header = hdrBuilBuilder.Build();
- DerBitString protection = new DerBitString(CalculateSignature(calculator, header, body));
- return FinalizeMessage(header, protection);
+ {
+ IStreamCalculator calculator = factory.CreateCalculator();
+ FinalizeHeader((AlgorithmIdentifier)factory.AlgorithmDetails);
+ PkiHeader header = hdrBuilBuilder.Build();
+ DerBitString protection = new DerBitString(CalculateSignature(calculator, header, body));
+ return FinalizeMessage(header, protection);
}
-
private void FinalizeHeader(AlgorithmIdentifier algorithmIdentifier)
{
hdrBuilBuilder.SetProtectionAlg(algorithmIdentifier);
@@ -120,7 +120,7 @@ namespace Org.BouncyCastle.Cmp
InfoTypeAndValue[] genInfos = new InfoTypeAndValue[generalInfos.Count];
for (int t = 0; t < genInfos.Length; t++)
{
- genInfos[t] = (InfoTypeAndValue) generalInfos[t];
+ genInfos[t] = (InfoTypeAndValue)generalInfos[t];
}
hdrBuilBuilder.SetGeneralInfo(genInfos);
@@ -134,7 +134,7 @@ namespace Org.BouncyCastle.Cmp
CmpCertificate[] cmpCertificates = new CmpCertificate[extraCerts.Count];
for (int i = 0; i < cmpCertificates.Length; i++)
{
- byte[] cert = ((X509Certificate) extraCerts[i]).GetEncoded();
+ byte[] cert = ((X509Certificate)extraCerts[i]).GetEncoded();
cmpCertificates[i] = CmpCertificate.GetInstance((Asn1Sequence.FromByteArray(cert)));
}
@@ -151,7 +151,7 @@ namespace Org.BouncyCastle.Cmp
avec.Add(body);
byte[] encoded = new DerSequence(avec).GetEncoded();
signer.Stream.Write(encoded, 0, encoded.Length);
- Object result = signer.GetResult();
+ object result = signer.GetResult();
if (result is DefaultSignatureResult)
{
@@ -163,10 +163,10 @@ namespace Org.BouncyCastle.Cmp
}
else if (result is byte[])
{
- return (byte[]) result;
+ return (byte[])result;
}
throw new InvalidOperationException("result is not byte[] or DefaultSignatureResult");
}
}
-}
\ No newline at end of file
+}
diff --git a/crypto/src/cmp/RevocationDetails.cs b/crypto/src/cmp/RevocationDetails.cs
index 6e1cb34c3..2d3f9a5eb 100644
--- a/crypto/src/cmp/RevocationDetails.cs
+++ b/crypto/src/cmp/RevocationDetails.cs
@@ -1,4 +1,6 @@
-using Org.BouncyCastle.Asn1.Cmp;
+using System;
+
+using Org.BouncyCastle.Asn1.Cmp;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Math;
@@ -6,7 +8,7 @@ namespace Org.BouncyCastle.Cmp
{
public class RevocationDetails
{
- private RevDetails revDetails;
+ private readonly RevDetails revDetails;
public RevocationDetails(RevDetails revDetails)
{
@@ -25,10 +27,7 @@ namespace Org.BouncyCastle.Cmp
public BigInteger SerialNumber
{
- get
- {
- return revDetails.CertDetails.SerialNumber.Value; // getCertDetails().getSerialNumber().getValue();
- }
+ get { return revDetails.CertDetails.SerialNumber.Value; }
}
public RevDetails ToASN1Structure()
@@ -36,4 +35,4 @@ namespace Org.BouncyCastle.Cmp
return revDetails;
}
}
-}
\ No newline at end of file
+}
diff --git a/crypto/src/cmp/RevocationDetailsBuilder.cs b/crypto/src/cmp/RevocationDetailsBuilder.cs
index 464c0bb13..b3be01242 100644
--- a/crypto/src/cmp/RevocationDetailsBuilder.cs
+++ b/crypto/src/cmp/RevocationDetailsBuilder.cs
@@ -1,4 +1,6 @@
-using Org.BouncyCastle.Asn1;
+using System;
+
+using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Cmp;
using Org.BouncyCastle.Asn1.Crmf;
using Org.BouncyCastle.Asn1.X509;
@@ -50,7 +52,7 @@ namespace Org.BouncyCastle.Cmp
return this;
}
- public RevocationDetails build()
+ public RevocationDetails Build()
{
return new RevocationDetails(new RevDetails(_templateBuilder.Build()));
}
diff --git a/crypto/src/cms/CMSEnvelopedDataGenerator.cs b/crypto/src/cms/CMSEnvelopedDataGenerator.cs
index 8ba41161e..c844ca6fa 100644
--- a/crypto/src/cms/CMSEnvelopedDataGenerator.cs
+++ b/crypto/src/cms/CMSEnvelopedDataGenerator.cs
@@ -158,7 +158,7 @@ namespace Org.BouncyCastle.Cms
public CmsEnvelopedData Generate(CmsProcessable content, ICipherBuilderWithKey cipherBuilder)
{
- AlgorithmIdentifier encAlgId = null;
+ //AlgorithmIdentifier encAlgId = null;
KeyParameter encKey;
Asn1OctetString encContent;
diff --git a/crypto/src/cms/CMSSignedGenerator.cs b/crypto/src/cms/CMSSignedGenerator.cs
index 1ac9f39b7..c7bc4ea43 100644
--- a/crypto/src/cms/CMSSignedGenerator.cs
+++ b/crypto/src/cms/CMSSignedGenerator.cs
@@ -26,337 +26,328 @@ using Org.BouncyCastle.X509.Store;
namespace Org.BouncyCastle.Cms
{
+ public class DefaultSignatureAlgorithmIdentifierFinder
+ {
+ private static readonly IDictionary algorithms = Platform.CreateHashtable();
+ private static readonly ISet noParams = new HashSet();
+ private static readonly IDictionary _params = Platform.CreateHashtable();
+ private static readonly ISet pkcs15RsaEncryption = new HashSet();
+ private static readonly IDictionary digestOids = Platform.CreateHashtable();
+
+ private static readonly IDictionary digestBuilders = Platform.CreateHashtable();
- public class DefaultSignatureAlgorithmIdentifierFinder
+ private static readonly DerObjectIdentifier ENCRYPTION_RSA = PkcsObjectIdentifiers.RsaEncryption;
+ private static readonly DerObjectIdentifier ENCRYPTION_DSA = X9ObjectIdentifiers.IdDsaWithSha1;
+ private static readonly DerObjectIdentifier ENCRYPTION_ECDSA = X9ObjectIdentifiers.ECDsaWithSha1;
+ private static readonly DerObjectIdentifier ENCRYPTION_RSA_PSS = PkcsObjectIdentifiers.IdRsassaPss;
+ private static readonly DerObjectIdentifier ENCRYPTION_GOST3410 = CryptoProObjectIdentifiers.GostR3410x94;
+ private static readonly DerObjectIdentifier ENCRYPTION_ECGOST3410 = CryptoProObjectIdentifiers.GostR3410x2001;
+ private static readonly DerObjectIdentifier ENCRYPTION_ECGOST3410_2012_256 = RosstandartObjectIdentifiers.id_tc26_gost_3410_12_256;
+ private static readonly DerObjectIdentifier ENCRYPTION_ECGOST3410_2012_512 = RosstandartObjectIdentifiers.id_tc26_gost_3410_12_512;
+
+ static DefaultSignatureAlgorithmIdentifierFinder()
{
- private static readonly IDictionary algorithms = Platform.CreateHashtable();
- private static readonly ISet noParams = new HashSet();
- private static readonly IDictionary _params = Platform.CreateHashtable();
- private static readonly ISet pkcs15RsaEncryption = new HashSet();
- private static readonly IDictionary digestOids = Platform.CreateHashtable();
+ algorithms["MD2WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.MD2WithRsaEncryption;
+ algorithms["MD2WITHRSA"] = PkcsObjectIdentifiers.MD2WithRsaEncryption;
+ algorithms["MD5WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.MD5WithRsaEncryption;
+ algorithms["MD5WITHRSA"] = PkcsObjectIdentifiers.MD5WithRsaEncryption;
+ algorithms["SHA1WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption;
+ algorithms["SHA1WITHRSA"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption;
+ algorithms["SHA-1WITHRSA"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption;
+ algorithms["SHA224WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption;
+ algorithms["SHA224WITHRSA"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption;
+ algorithms["SHA256WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption;
+ algorithms["SHA256WITHRSA"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption;
+ algorithms["SHA384WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption;
+ algorithms["SHA384WITHRSA"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption;
+ algorithms["SHA512WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption;
+ algorithms["SHA512WITHRSA"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption;
+ algorithms["SHA1WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ algorithms["SHA224WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ algorithms["SHA256WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ algorithms["SHA384WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ algorithms["SHA512WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ algorithms["SHA3-224WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ algorithms["SHA3-256WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ algorithms["SHA3-384WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ algorithms["SHA3-512WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ algorithms["RIPEMD160WITHRSAENCRYPTION"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160;
+ algorithms["RIPEMD160WITHRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160;
+ algorithms["RIPEMD128WITHRSAENCRYPTION"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128;
+ algorithms["RIPEMD128WITHRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128;
+ algorithms["RIPEMD256WITHRSAENCRYPTION"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256;
+ algorithms["RIPEMD256WITHRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256;
+ algorithms["SHA1WITHDSA"] = X9ObjectIdentifiers.IdDsaWithSha1;
+ algorithms["SHA-1WITHDSA"] = X9ObjectIdentifiers.IdDsaWithSha1;
+ algorithms["DSAWITHSHA1"] = X9ObjectIdentifiers.IdDsaWithSha1;
+ algorithms["SHA224WITHDSA"] = NistObjectIdentifiers.DsaWithSha224;
+ algorithms["SHA256WITHDSA"] = NistObjectIdentifiers.DsaWithSha256;
+ algorithms["SHA384WITHDSA"] = NistObjectIdentifiers.DsaWithSha384;
+ algorithms["SHA512WITHDSA"] = NistObjectIdentifiers.DsaWithSha512;
+ algorithms["SHA3-224WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_224; // id_dsa_with_sha3_224;
+ algorithms["SHA3-256WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_256; //id_dsa_with_sha3_256;
+ algorithms["SHA3-384WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_384; //id_dsa_with_sha3_384;
+ algorithms["SHA3-512WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_512; //id_dsa_with_sha3_512;
+ algorithms["SHA3-224WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_224;// id_ecdsa_with_sha3_224;
+ algorithms["SHA3-256WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_256;//id_ecdsa_with_sha3_256;
+ algorithms["SHA3-384WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_384;//id_ecdsa_with_sha3_384;
+ algorithms["SHA3-512WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_512;//id_ecdsa_with_sha3_512;
+ algorithms["SHA3-224WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224;// id_rsassa_pkcs1_v1_5_with_sha3_224;
+ algorithms["SHA3-256WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256;// id_rsassa_pkcs1_v1_5_with_sha3_256;
+ algorithms["SHA3-384WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384;// id_rsassa_pkcs1_v1_5_with_sha3_384;
+ algorithms["SHA3-512WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512;// id_rsassa_pkcs1_v1_5_with_sha3_512;
+ algorithms["SHA3-224WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224;// id_rsassa_pkcs1_v1_5_with_sha3_224;
+ algorithms["SHA3-256WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256;// id_rsassa_pkcs1_v1_5_with_sha3_256;
+ algorithms["SHA3-384WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384; //id_rsassa_pkcs1_v1_5_with_sha3_384;
+ algorithms["SHA3-512WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512; // id_rsassa_pkcs1_v1_5_with_sha3_512;
+ algorithms["SHA1WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha1;
+ algorithms["ECDSAWITHSHA1"] = X9ObjectIdentifiers.ECDsaWithSha1;
+ algorithms["SHA224WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha224;
+ algorithms["SHA256WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha224;
+ algorithms["SHA384WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha384;
+ algorithms["SHA512WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha256;
+
+
+ algorithms["GOST3411WITHGOST3410"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94;
+ algorithms["GOST3411WITHGOST3410-94"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94;
+ algorithms["GOST3411WITHECGOST3410"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001;
+ algorithms["GOST3411WITHECGOST3410-2001"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001;
+ algorithms["GOST3411WITHGOST3410-2001"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001;
+ algorithms["GOST3411WITHECGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256;
+ algorithms["GOST3411WITHECGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512;
+ algorithms["GOST3411WITHGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256;
+ algorithms["GOST3411WITHGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512;
+ algorithms["GOST3411-2012-256WITHECGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256;
+ algorithms["GOST3411-2012-512WITHECGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512;
+ algorithms["GOST3411-2012-256WITHGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256;
+ algorithms["GOST3411-2012-512WITHGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512;
+ algorithms["SHA1WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA1;
+ algorithms["SHA224WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA224;
+ algorithms["SHA256WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA256;
+ algorithms["SHA384WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA384;
+ algorithms["SHA512WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA512;
+ algorithms["RIPEMD160WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_RIPEMD160;
+ algorithms["SHA1WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_1;
+ algorithms["SHA224WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_224;
+ algorithms["SHA256WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_256;
+ algorithms["SHA384WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_384;
+ algorithms["SHA512WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_512;
+ algorithms["SHA3-512WITHSPHINCS256"] = BCObjectIdentifiers.sphincs256_with_SHA3_512;
+ algorithms["SHA512WITHSPHINCS256"] = BCObjectIdentifiers.sphincs256_with_SHA512;
+ algorithms["SM3WITHSM2"] = GMObjectIdentifiers.sm2sign_with_sm3;
+
+ algorithms["SHA256WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHA256;
+ algorithms["SHA512WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHA512;
+ algorithms["SHAKE128WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHAKE128;
+ algorithms["SHAKE256WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHAKE256;
+
+ algorithms["SHA256WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHA256;
+ algorithms["SHA512WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHA512;
+ algorithms["SHAKE128WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHAKE128;
+ algorithms["SHAKE256WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHAKE256;
- private static readonly IDictionary digestBuilders = Platform.CreateHashtable();
+ //
+ // According to RFC 3279, the ASN.1 encoding SHALL (id-dsa-with-sha1) or MUST (ecdsa-with-SHA*) omit the parameters field.
+ // The parameters field SHALL be NULL for RSA based signature algorithms.
+ //
+ noParams.Add((object)X9ObjectIdentifiers.ECDsaWithSha1);
+ noParams.Add((object)X9ObjectIdentifiers.ECDsaWithSha224);
+ noParams.Add((object)X9ObjectIdentifiers.ECDsaWithSha256);
+ noParams.Add((object)X9ObjectIdentifiers.ECDsaWithSha384);
+ noParams.Add((object)X9ObjectIdentifiers.ECDsaWithSha512);
+ noParams.Add((object)X9ObjectIdentifiers.IdDsaWithSha1);
+ noParams.Add((object)NistObjectIdentifiers.DsaWithSha224);
+ noParams.Add((object)NistObjectIdentifiers.DsaWithSha256);
+ noParams.Add((object)NistObjectIdentifiers.DsaWithSha384);
+ noParams.Add((object)NistObjectIdentifiers.DsaWithSha512);
+ noParams.Add((object)NistObjectIdentifiers.IdDsaWithSha3_224);
+ noParams.Add((object)NistObjectIdentifiers.IdDsaWithSha3_256);
+ noParams.Add((object)NistObjectIdentifiers.IdDsaWithSha3_384);
+ noParams.Add((object)NistObjectIdentifiers.IdDsaWithSha3_512);
+ noParams.Add((object)NistObjectIdentifiers.IdEcdsaWithSha3_224);
+ noParams.Add((object)NistObjectIdentifiers.IdEcdsaWithSha3_256);
+ noParams.Add((object)NistObjectIdentifiers.IdEcdsaWithSha3_384);
+ noParams.Add((object)NistObjectIdentifiers.IdEcdsaWithSha3_512);
- private static readonly DerObjectIdentifier ENCRYPTION_RSA = PkcsObjectIdentifiers.RsaEncryption;
- private static readonly DerObjectIdentifier ENCRYPTION_DSA = X9ObjectIdentifiers.IdDsaWithSha1;
- private static readonly DerObjectIdentifier ENCRYPTION_ECDSA = X9ObjectIdentifiers.ECDsaWithSha1;
- private static readonly DerObjectIdentifier ENCRYPTION_RSA_PSS = PkcsObjectIdentifiers.IdRsassaPss;
- private static readonly DerObjectIdentifier ENCRYPTION_GOST3410 = CryptoProObjectIdentifiers.GostR3410x94;
- private static readonly DerObjectIdentifier ENCRYPTION_ECGOST3410 = CryptoProObjectIdentifiers.GostR3410x2001;
- private static readonly DerObjectIdentifier ENCRYPTION_ECGOST3410_2012_256 = RosstandartObjectIdentifiers.id_tc26_gost_3410_12_256;
- private static readonly DerObjectIdentifier ENCRYPTION_ECGOST3410_2012_512 = RosstandartObjectIdentifiers.id_tc26_gost_3410_12_512;
+ //
+ // RFC 4491
+ //
+ noParams.Add((object)CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94);
+ noParams.Add((object)CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001);
+ noParams.Add((object)RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256);
+ noParams.Add((object)RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512);
- static DefaultSignatureAlgorithmIdentifierFinder()
- {
- algorithms["MD2WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.MD2WithRsaEncryption;
- algorithms["MD2WITHRSA"] = PkcsObjectIdentifiers.MD2WithRsaEncryption;
- algorithms["MD5WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.MD5WithRsaEncryption;
- algorithms["MD5WITHRSA"] = PkcsObjectIdentifiers.MD5WithRsaEncryption;
- algorithms["SHA1WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption;
- algorithms["SHA1WITHRSA"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption;
- algorithms["SHA-1WITHRSA"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption;
- algorithms["SHA224WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption;
- algorithms["SHA224WITHRSA"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption;
- algorithms["SHA256WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption;
- algorithms["SHA256WITHRSA"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption;
- algorithms["SHA384WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption;
- algorithms["SHA384WITHRSA"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption;
- algorithms["SHA512WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption;
- algorithms["SHA512WITHRSA"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption;
- algorithms["SHA1WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- algorithms["SHA224WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- algorithms["SHA256WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- algorithms["SHA384WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- algorithms["SHA512WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- algorithms["SHA3-224WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- algorithms["SHA3-256WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- algorithms["SHA3-384WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- algorithms["SHA3-512WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- algorithms["RIPEMD160WITHRSAENCRYPTION"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160;
- algorithms["RIPEMD160WITHRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160;
- algorithms["RIPEMD128WITHRSAENCRYPTION"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128;
- algorithms["RIPEMD128WITHRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128;
- algorithms["RIPEMD256WITHRSAENCRYPTION"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256;
- algorithms["RIPEMD256WITHRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256;
- algorithms["SHA1WITHDSA"] = X9ObjectIdentifiers.IdDsaWithSha1;
- algorithms["SHA-1WITHDSA"] = X9ObjectIdentifiers.IdDsaWithSha1;
- algorithms["DSAWITHSHA1"] = X9ObjectIdentifiers.IdDsaWithSha1;
- algorithms["SHA224WITHDSA"] = NistObjectIdentifiers.DsaWithSha224;
- algorithms["SHA256WITHDSA"] = NistObjectIdentifiers.DsaWithSha256;
- algorithms["SHA384WITHDSA"] = NistObjectIdentifiers.DsaWithSha384;
- algorithms["SHA512WITHDSA"] = NistObjectIdentifiers.DsaWithSha512;
- algorithms["SHA3-224WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_224; // id_dsa_with_sha3_224;
- algorithms["SHA3-256WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_256; //id_dsa_with_sha3_256;
- algorithms["SHA3-384WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_384; //id_dsa_with_sha3_384;
- algorithms["SHA3-512WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_512; //id_dsa_with_sha3_512;
- algorithms["SHA3-224WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_224;// id_ecdsa_with_sha3_224;
- algorithms["SHA3-256WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_256;//id_ecdsa_with_sha3_256;
- algorithms["SHA3-384WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_384;//id_ecdsa_with_sha3_384;
- algorithms["SHA3-512WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_512;//id_ecdsa_with_sha3_512;
- algorithms["SHA3-224WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224;// id_rsassa_pkcs1_v1_5_with_sha3_224;
- algorithms["SHA3-256WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256;// id_rsassa_pkcs1_v1_5_with_sha3_256;
- algorithms["SHA3-384WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384;// id_rsassa_pkcs1_v1_5_with_sha3_384;
- algorithms["SHA3-512WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512;// id_rsassa_pkcs1_v1_5_with_sha3_512;
- algorithms["SHA3-224WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224;// id_rsassa_pkcs1_v1_5_with_sha3_224;
- algorithms["SHA3-256WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256;// id_rsassa_pkcs1_v1_5_with_sha3_256;
- algorithms["SHA3-384WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384; //id_rsassa_pkcs1_v1_5_with_sha3_384;
- algorithms["SHA3-512WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512; // id_rsassa_pkcs1_v1_5_with_sha3_512;
- algorithms["SHA1WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha1;
- algorithms["ECDSAWITHSHA1"] = X9ObjectIdentifiers.ECDsaWithSha1;
- algorithms["SHA224WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha224;
- algorithms["SHA256WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha224;
- algorithms["SHA384WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha384;
- algorithms["SHA512WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha256;
-
-
- algorithms["GOST3411WITHGOST3410"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94;
- algorithms["GOST3411WITHGOST3410-94"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94;
- algorithms["GOST3411WITHECGOST3410"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001;
- algorithms["GOST3411WITHECGOST3410-2001"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001;
- algorithms["GOST3411WITHGOST3410-2001"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001;
- algorithms["GOST3411WITHECGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256;
- algorithms["GOST3411WITHECGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512;
- algorithms["GOST3411WITHGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256;
- algorithms["GOST3411WITHGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512;
- algorithms["GOST3411-2012-256WITHECGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256;
- algorithms["GOST3411-2012-512WITHECGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512;
- algorithms["GOST3411-2012-256WITHGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256;
- algorithms["GOST3411-2012-512WITHGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512;
- algorithms["SHA1WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA1;
- algorithms["SHA224WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA224;
- algorithms["SHA256WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA256;
- algorithms["SHA384WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA384;
- algorithms["SHA512WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA512;
- algorithms["RIPEMD160WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_RIPEMD160;
- algorithms["SHA1WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_1;
- algorithms["SHA224WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_224;
- algorithms["SHA256WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_256;
- algorithms["SHA384WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_384;
- algorithms["SHA512WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_512;
- algorithms["SHA3-512WITHSPHINCS256"] = BCObjectIdentifiers.sphincs256_with_SHA3_512;
- algorithms["SHA512WITHSPHINCS256"] = BCObjectIdentifiers.sphincs256_with_SHA512;
- algorithms["SM3WITHSM2"] = GMObjectIdentifiers.sm2sign_with_sm3;
-
- algorithms["SHA256WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHA256;
- algorithms["SHA512WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHA512;
- algorithms["SHAKE128WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHAKE128;
- algorithms["SHAKE256WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHAKE256;
-
- algorithms["SHA256WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHA256;
- algorithms["SHA512WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHA512;
- algorithms["SHAKE128WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHAKE128;
- algorithms["SHAKE256WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHAKE256;
-
-
- //
- // According to RFC 3279, the ASN.1 encoding SHALL (id-dsa-with-sha1) or MUST (ecdsa-with-SHA*) omit the parameters field.
- // The parameters field SHALL be NULL for RSA based signature algorithms.
- //
- noParams.Add((object)X9ObjectIdentifiers.ECDsaWithSha1);
- noParams.Add((object)X9ObjectIdentifiers.ECDsaWithSha224);
- noParams.Add((object)X9ObjectIdentifiers.ECDsaWithSha256);
- noParams.Add((object)X9ObjectIdentifiers.ECDsaWithSha384);
- noParams.Add((object)X9ObjectIdentifiers.ECDsaWithSha512);
- noParams.Add((object)X9ObjectIdentifiers.IdDsaWithSha1);
- noParams.Add((object)NistObjectIdentifiers.DsaWithSha224);
- noParams.Add((object)NistObjectIdentifiers.DsaWithSha256);
- noParams.Add((object)NistObjectIdentifiers.DsaWithSha384);
- noParams.Add((object)NistObjectIdentifiers.DsaWithSha512);
- noParams.Add((object)NistObjectIdentifiers.IdDsaWithSha3_224);
- noParams.Add((object)NistObjectIdentifiers.IdDsaWithSha3_256);
- noParams.Add((object)NistObjectIdentifiers.IdDsaWithSha3_384);
- noParams.Add((object)NistObjectIdentifiers.IdDsaWithSha3_512);
- noParams.Add((object)NistObjectIdentifiers.IdEcdsaWithSha3_224);
- noParams.Add((object)NistObjectIdentifiers.IdEcdsaWithSha3_256);
- noParams.Add((object)NistObjectIdentifiers.IdEcdsaWithSha3_384);
- noParams.Add((object)NistObjectIdentifiers.IdEcdsaWithSha3_512);
-
-
- //
- // RFC 4491
- //
- noParams.Add((object)CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94);
- noParams.Add((object)CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001);
- noParams.Add((object)RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256);
- noParams.Add((object)RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512);
-
- //
- // SPHINCS-256
- //
- noParams.Add((object)BCObjectIdentifiers.sphincs256_with_SHA512);
- noParams.Add((object)BCObjectIdentifiers.sphincs256_with_SHA3_512);
-
- //
- // XMSS
- //
- noParams.Add((object)BCObjectIdentifiers.xmss_with_SHA256);
- noParams.Add((object)BCObjectIdentifiers.xmss_with_SHA512);
- noParams.Add((object)BCObjectIdentifiers.xmss_with_SHAKE128);
- noParams.Add((object)BCObjectIdentifiers.xmss_with_SHAKE256);
- noParams.Add((object)BCObjectIdentifiers.xmss_mt_with_SHA256);
- noParams.Add((object)BCObjectIdentifiers.xmss_mt_with_SHA512);
- noParams.Add((object)BCObjectIdentifiers.xmss_mt_with_SHAKE128);
- noParams.Add((object)BCObjectIdentifiers.xmss_mt_with_SHAKE256);
-
- //
- // SM2
- //
- noParams.Add((object)GMObjectIdentifiers.sm2sign_with_sm3);
-
- //
- // PKCS 1.5 encrypted algorithms
- //
- pkcs15RsaEncryption.Add((object)PkcsObjectIdentifiers.Sha1WithRsaEncryption);
- pkcs15RsaEncryption.Add((object)PkcsObjectIdentifiers.Sha224WithRsaEncryption);
- pkcs15RsaEncryption.Add((object)PkcsObjectIdentifiers.Sha256WithRsaEncryption);
- pkcs15RsaEncryption.Add((object)PkcsObjectIdentifiers.Sha384WithRsaEncryption);
- pkcs15RsaEncryption.Add((object)PkcsObjectIdentifiers.Sha512WithRsaEncryption);
- pkcs15RsaEncryption.Add((object)TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128);
- pkcs15RsaEncryption.Add((object)TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160);
- pkcs15RsaEncryption.Add((object)TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256);
- pkcs15RsaEncryption.Add((object)NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224);
- pkcs15RsaEncryption.Add((object)NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256);
- pkcs15RsaEncryption.Add((object)NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384);
- pkcs15RsaEncryption.Add((object)NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512);
-
- //
- // explicit params
- //
- AlgorithmIdentifier sha1AlgId = new AlgorithmIdentifier(OiwObjectIdentifiers.IdSha1, DerNull.Instance);
- _params["SHA1WITHRSAANDMGF1"] = CreatePssParams(sha1AlgId, 20);
-
- AlgorithmIdentifier sha224AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha224, DerNull.Instance);
- _params["SHA224WITHRSAANDMGF1"] = CreatePssParams(sha224AlgId, 28);
-
- AlgorithmIdentifier sha256AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha256, DerNull.Instance);
- _params["SHA256WITHRSAANDMGF1"] = CreatePssParams(sha256AlgId, 32);
-
- AlgorithmIdentifier sha384AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha384, DerNull.Instance);
- _params["SHA384WITHRSAANDMGF1"] = CreatePssParams(sha384AlgId, 48);
-
- AlgorithmIdentifier sha512AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha512, DerNull.Instance);
- _params["SHA512WITHRSAANDMGF1"] = CreatePssParams(sha512AlgId, 64);
-
- AlgorithmIdentifier sha3_224AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_224, DerNull.Instance);
- _params["SHA3-224WITHRSAANDMGF1"] = CreatePssParams(sha3_224AlgId, 28);
-
- AlgorithmIdentifier sha3_256AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_256, DerNull.Instance);
- _params["SHA3-256WITHRSAANDMGF1"] = CreatePssParams(sha3_256AlgId, 32);
-
- AlgorithmIdentifier sha3_384AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_384, DerNull.Instance);
- _params["SHA3-384WITHRSAANDMGF1"] = CreatePssParams(sha3_384AlgId, 48);
-
- AlgorithmIdentifier sha3_512AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_512, DerNull.Instance);
- _params["SHA3-512WITHRSAANDMGF1"] = CreatePssParams(sha3_512AlgId, 64);
-
- //
- // digests
- //
- digestOids[PkcsObjectIdentifiers.Sha224WithRsaEncryption] = NistObjectIdentifiers.IdSha224;
- digestOids[PkcsObjectIdentifiers.Sha256WithRsaEncryption] = NistObjectIdentifiers.IdSha256;
- digestOids[PkcsObjectIdentifiers.Sha384WithRsaEncryption] = NistObjectIdentifiers.IdSha384;
- digestOids[PkcsObjectIdentifiers.Sha512WithRsaEncryption] = NistObjectIdentifiers.IdSha512;
- digestOids[NistObjectIdentifiers.DsaWithSha224] = NistObjectIdentifiers.IdSha224;
- digestOids[NistObjectIdentifiers.DsaWithSha224] = NistObjectIdentifiers.IdSha256;
- digestOids[NistObjectIdentifiers.DsaWithSha224] = NistObjectIdentifiers.IdSha384;
- digestOids[NistObjectIdentifiers.DsaWithSha224] = NistObjectIdentifiers.IdSha512;
- digestOids[NistObjectIdentifiers.IdDsaWithSha3_224] = NistObjectIdentifiers.IdSha3_224;
- digestOids[NistObjectIdentifiers.IdDsaWithSha3_256] = NistObjectIdentifiers.IdSha3_256;
- digestOids[NistObjectIdentifiers.IdDsaWithSha3_384] = NistObjectIdentifiers.IdSha3_384;
- digestOids[NistObjectIdentifiers.IdDsaWithSha3_512] = NistObjectIdentifiers.IdSha3_512;
- digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_224] = NistObjectIdentifiers.IdSha3_224;
- digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_256] = NistObjectIdentifiers.IdSha3_256;
- digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_384] = NistObjectIdentifiers.IdSha3_384;
- digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_512] = NistObjectIdentifiers.IdSha3_512;
- digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224] = NistObjectIdentifiers.IdSha3_224;
- digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256] = NistObjectIdentifiers.IdSha3_256;
- digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384] = NistObjectIdentifiers.IdSha3_384;
- digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512] = NistObjectIdentifiers.IdSha3_512;
-
- digestOids[PkcsObjectIdentifiers.MD2WithRsaEncryption] = PkcsObjectIdentifiers.MD2;
- digestOids[PkcsObjectIdentifiers.MD4WithRsaEncryption] = PkcsObjectIdentifiers.MD4;
- digestOids[PkcsObjectIdentifiers.MD5WithRsaEncryption] = PkcsObjectIdentifiers.MD5;
- digestOids[PkcsObjectIdentifiers.Sha1WithRsaEncryption] = OiwObjectIdentifiers.IdSha1;
- digestOids[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128] = TeleTrusTObjectIdentifiers.RipeMD128;
- digestOids[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160] = TeleTrusTObjectIdentifiers.RipeMD160;
- digestOids[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256] = TeleTrusTObjectIdentifiers.RipeMD256;
- digestOids[CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94] = CryptoProObjectIdentifiers.GostR3411;
- digestOids[CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001] = CryptoProObjectIdentifiers.GostR3411;
- digestOids[RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256] = RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256;
- digestOids[RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512] = RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512;
- digestOids[GMObjectIdentifiers.sm2sign_with_sm3] = GMObjectIdentifiers.sm3;
+ //
+ // SPHINCS-256
+ //
+ noParams.Add((object)BCObjectIdentifiers.sphincs256_with_SHA512);
+ noParams.Add((object)BCObjectIdentifiers.sphincs256_with_SHA3_512);
- }
+ //
+ // XMSS
+ //
+ noParams.Add((object)BCObjectIdentifiers.xmss_with_SHA256);
+ noParams.Add((object)BCObjectIdentifiers.xmss_with_SHA512);
+ noParams.Add((object)BCObjectIdentifiers.xmss_with_SHAKE128);
+ noParams.Add((object)BCObjectIdentifiers.xmss_with_SHAKE256);
+ noParams.Add((object)BCObjectIdentifiers.xmss_mt_with_SHA256);
+ noParams.Add((object)BCObjectIdentifiers.xmss_mt_with_SHA512);
+ noParams.Add((object)BCObjectIdentifiers.xmss_mt_with_SHAKE128);
+ noParams.Add((object)BCObjectIdentifiers.xmss_mt_with_SHAKE256);
- private static AlgorithmIdentifier Generate(string signatureAlgorithm)
- {
- AlgorithmIdentifier sigAlgId;
- AlgorithmIdentifier encAlgId;
- AlgorithmIdentifier digAlgId;
+ //
+ // SM2
+ //
+ noParams.Add((object)GMObjectIdentifiers.sm2sign_with_sm3);
- string algorithmName = Strings.ToUpperCase(signatureAlgorithm);
- DerObjectIdentifier sigOID = (DerObjectIdentifier)algorithms[algorithmName];
- if (sigOID == null)
- {
- throw new ArgumentException("Unknown signature type requested: " + algorithmName);
- }
+ //
+ // PKCS 1.5 encrypted algorithms
+ //
+ pkcs15RsaEncryption.Add((object)PkcsObjectIdentifiers.Sha1WithRsaEncryption);
+ pkcs15RsaEncryption.Add((object)PkcsObjectIdentifiers.Sha224WithRsaEncryption);
+ pkcs15RsaEncryption.Add((object)PkcsObjectIdentifiers.Sha256WithRsaEncryption);
+ pkcs15RsaEncryption.Add((object)PkcsObjectIdentifiers.Sha384WithRsaEncryption);
+ pkcs15RsaEncryption.Add((object)PkcsObjectIdentifiers.Sha512WithRsaEncryption);
+ pkcs15RsaEncryption.Add((object)TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128);
+ pkcs15RsaEncryption.Add((object)TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160);
+ pkcs15RsaEncryption.Add((object)TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256);
+ pkcs15RsaEncryption.Add((object)NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224);
+ pkcs15RsaEncryption.Add((object)NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256);
+ pkcs15RsaEncryption.Add((object)NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384);
+ pkcs15RsaEncryption.Add((object)NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512);
- if (noParams.Contains(sigOID))
- {
- sigAlgId = new AlgorithmIdentifier(sigOID);
- }
- else if (_params.Contains(algorithmName))
- {
- sigAlgId = new AlgorithmIdentifier(sigOID, (Asn1Encodable)_params[algorithmName]);
- }
- else
- {
- sigAlgId = new AlgorithmIdentifier(sigOID, DerNull.Instance);
- }
+ //
+ // explicit params
+ //
+ AlgorithmIdentifier sha1AlgId = new AlgorithmIdentifier(OiwObjectIdentifiers.IdSha1, DerNull.Instance);
+ _params["SHA1WITHRSAANDMGF1"] = CreatePssParams(sha1AlgId, 20);
- if (pkcs15RsaEncryption.Contains(sigOID))
- {
- encAlgId = new AlgorithmIdentifier(PkcsObjectIdentifiers.RsaEncryption, DerNull.Instance);
- }
- else
- {
- encAlgId = sigAlgId;
- }
+ AlgorithmIdentifier sha224AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha224, DerNull.Instance);
+ _params["SHA224WITHRSAANDMGF1"] = CreatePssParams(sha224AlgId, 28);
- if (sigAlgId.Algorithm.Equals(PkcsObjectIdentifiers.IdRsassaPss))
- {
- digAlgId = ((RsassaPssParameters)sigAlgId.Parameters).HashAlgorithm;
- }
- else
- {
- digAlgId = new AlgorithmIdentifier((DerObjectIdentifier)digestOids[sigOID], DerNull.Instance);
- }
+ AlgorithmIdentifier sha256AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha256, DerNull.Instance);
+ _params["SHA256WITHRSAANDMGF1"] = CreatePssParams(sha256AlgId, 32);
- return sigAlgId;
+ AlgorithmIdentifier sha384AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha384, DerNull.Instance);
+ _params["SHA384WITHRSAANDMGF1"] = CreatePssParams(sha384AlgId, 48);
+
+ AlgorithmIdentifier sha512AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha512, DerNull.Instance);
+ _params["SHA512WITHRSAANDMGF1"] = CreatePssParams(sha512AlgId, 64);
+
+ AlgorithmIdentifier sha3_224AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_224, DerNull.Instance);
+ _params["SHA3-224WITHRSAANDMGF1"] = CreatePssParams(sha3_224AlgId, 28);
+
+ AlgorithmIdentifier sha3_256AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_256, DerNull.Instance);
+ _params["SHA3-256WITHRSAANDMGF1"] = CreatePssParams(sha3_256AlgId, 32);
+
+ AlgorithmIdentifier sha3_384AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_384, DerNull.Instance);
+ _params["SHA3-384WITHRSAANDMGF1"] = CreatePssParams(sha3_384AlgId, 48);
+
+ AlgorithmIdentifier sha3_512AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_512, DerNull.Instance);
+ _params["SHA3-512WITHRSAANDMGF1"] = CreatePssParams(sha3_512AlgId, 64);
+
+ //
+ // digests
+ //
+ digestOids[PkcsObjectIdentifiers.Sha224WithRsaEncryption] = NistObjectIdentifiers.IdSha224;
+ digestOids[PkcsObjectIdentifiers.Sha256WithRsaEncryption] = NistObjectIdentifiers.IdSha256;
+ digestOids[PkcsObjectIdentifiers.Sha384WithRsaEncryption] = NistObjectIdentifiers.IdSha384;
+ digestOids[PkcsObjectIdentifiers.Sha512WithRsaEncryption] = NistObjectIdentifiers.IdSha512;
+ digestOids[NistObjectIdentifiers.DsaWithSha224] = NistObjectIdentifiers.IdSha224;
+ digestOids[NistObjectIdentifiers.DsaWithSha224] = NistObjectIdentifiers.IdSha256;
+ digestOids[NistObjectIdentifiers.DsaWithSha224] = NistObjectIdentifiers.IdSha384;
+ digestOids[NistObjectIdentifiers.DsaWithSha224] = NistObjectIdentifiers.IdSha512;
+ digestOids[NistObjectIdentifiers.IdDsaWithSha3_224] = NistObjectIdentifiers.IdSha3_224;
+ digestOids[NistObjectIdentifiers.IdDsaWithSha3_256] = NistObjectIdentifiers.IdSha3_256;
+ digestOids[NistObjectIdentifiers.IdDsaWithSha3_384] = NistObjectIdentifiers.IdSha3_384;
+ digestOids[NistObjectIdentifiers.IdDsaWithSha3_512] = NistObjectIdentifiers.IdSha3_512;
+ digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_224] = NistObjectIdentifiers.IdSha3_224;
+ digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_256] = NistObjectIdentifiers.IdSha3_256;
+ digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_384] = NistObjectIdentifiers.IdSha3_384;
+ digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_512] = NistObjectIdentifiers.IdSha3_512;
+ digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224] = NistObjectIdentifiers.IdSha3_224;
+ digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256] = NistObjectIdentifiers.IdSha3_256;
+ digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384] = NistObjectIdentifiers.IdSha3_384;
+ digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512] = NistObjectIdentifiers.IdSha3_512;
+
+ digestOids[PkcsObjectIdentifiers.MD2WithRsaEncryption] = PkcsObjectIdentifiers.MD2;
+ digestOids[PkcsObjectIdentifiers.MD4WithRsaEncryption] = PkcsObjectIdentifiers.MD4;
+ digestOids[PkcsObjectIdentifiers.MD5WithRsaEncryption] = PkcsObjectIdentifiers.MD5;
+ digestOids[PkcsObjectIdentifiers.Sha1WithRsaEncryption] = OiwObjectIdentifiers.IdSha1;
+ digestOids[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128] = TeleTrusTObjectIdentifiers.RipeMD128;
+ digestOids[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160] = TeleTrusTObjectIdentifiers.RipeMD160;
+ digestOids[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256] = TeleTrusTObjectIdentifiers.RipeMD256;
+ digestOids[CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94] = CryptoProObjectIdentifiers.GostR3411;
+ digestOids[CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001] = CryptoProObjectIdentifiers.GostR3411;
+ digestOids[RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256] = RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256;
+ digestOids[RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512] = RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512;
+ digestOids[GMObjectIdentifiers.sm2sign_with_sm3] = GMObjectIdentifiers.sm3;
+
+ }
+
+ private static AlgorithmIdentifier Generate(string signatureAlgorithm)
+ {
+ AlgorithmIdentifier sigAlgId;
+ AlgorithmIdentifier encAlgId;
+ AlgorithmIdentifier digAlgId;
+
+ string algorithmName = Strings.ToUpperCase(signatureAlgorithm);
+ DerObjectIdentifier sigOID = (DerObjectIdentifier)algorithms[algorithmName];
+ if (sigOID == null)
+ {
+ throw new ArgumentException("Unknown signature type requested: " + algorithmName);
}
- private static RsassaPssParameters CreatePssParams(AlgorithmIdentifier hashAlgId, int saltSize)
+ if (noParams.Contains(sigOID))
+ {
+ sigAlgId = new AlgorithmIdentifier(sigOID);
+ }
+ else if (_params.Contains(algorithmName))
{
- return new RsassaPssParameters(
- hashAlgId,
- new AlgorithmIdentifier(PkcsObjectIdentifiers.IdMgf1, hashAlgId),
- new DerInteger(saltSize),
- new DerInteger(1));
+ sigAlgId = new AlgorithmIdentifier(sigOID, (Asn1Encodable)_params[algorithmName]);
+ }
+ else
+ {
+ sigAlgId = new AlgorithmIdentifier(sigOID, DerNull.Instance);
}
- public AlgorithmIdentifier Find(string sigAlgName)
+ if (pkcs15RsaEncryption.Contains(sigOID))
{
-
- return Generate(sigAlgName);
+ encAlgId = new AlgorithmIdentifier(PkcsObjectIdentifiers.RsaEncryption, DerNull.Instance);
+ }
+ else
+ {
+ encAlgId = sigAlgId;
}
- }
-
+ if (sigAlgId.Algorithm.Equals(PkcsObjectIdentifiers.IdRsassaPss))
+ {
+ digAlgId = ((RsassaPssParameters)sigAlgId.Parameters).HashAlgorithm;
+ }
+ else
+ {
+ digAlgId = new AlgorithmIdentifier((DerObjectIdentifier)digestOids[sigOID], DerNull.Instance);
+ }
+ return sigAlgId;
+ }
+ private static RsassaPssParameters CreatePssParams(AlgorithmIdentifier hashAlgId, int saltSize)
+ {
+ return new RsassaPssParameters(
+ hashAlgId,
+ new AlgorithmIdentifier(PkcsObjectIdentifiers.IdMgf1, hashAlgId),
+ new DerInteger(saltSize),
+ new DerInteger(1));
+ }
+ public AlgorithmIdentifier Find(string sigAlgName)
+ {
+ return Generate(sigAlgName);
+ }
+ }
public class DefaultDigestAlgorithmIdentifierFinder
{
@@ -449,7 +440,7 @@ namespace Org.BouncyCastle.Cms
return digAlgId;
}
- public AlgorithmIdentifier find(String digAlgName)
+ public AlgorithmIdentifier find(string digAlgName)
{
return new AlgorithmIdentifier((DerObjectIdentifier)digestNameToOids[digAlgName], DerNull.Instance);
}
@@ -583,7 +574,7 @@ namespace Org.BouncyCastle.Cms
* Return a map of oids and byte arrays representing the digests calculated on the content during
* the last generate.
*
- * @return a map of oids (as String objects) and byte[] representing digests.
+ * @return a map of oids (as string objects) and byte[] representing digests.
*/
public IDictionary GetGeneratedDigests()
{
diff --git a/crypto/src/cms/CMSSignedHelper.cs b/crypto/src/cms/CMSSignedHelper.cs
index 5b6c93b6a..3fb3cee26 100644
--- a/crypto/src/cms/CMSSignedHelper.cs
+++ b/crypto/src/cms/CMSSignedHelper.cs
@@ -161,7 +161,7 @@ namespace Org.BouncyCastle.Cms
{
string[] aliases = (string[]) digestAliases[algName];
- return aliases == null ? new String[0] : (string[]) aliases.Clone();
+ return aliases == null ? new string[0] : (string[]) aliases.Clone();
}
/**
diff --git a/crypto/src/cms/EnvelopedDataHelper.cs b/crypto/src/cms/EnvelopedDataHelper.cs
index fe5bc2a97..6d1c7bb3a 100644
--- a/crypto/src/cms/EnvelopedDataHelper.cs
+++ b/crypto/src/cms/EnvelopedDataHelper.cs
@@ -1,4 +1,6 @@
-using System.Collections;
+using System;
+using System.Collections;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Nist;
using Org.BouncyCastle.Asn1.Oiw;
@@ -12,7 +14,6 @@ using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Crypto.Utilities;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.Utilities;
-using Org.BouncyCastle.Crypto.Utilites;
namespace Org.BouncyCastle.Cms
{
@@ -20,20 +21,15 @@ namespace Org.BouncyCastle.Cms
{
private static readonly IDictionary BaseCipherNames = Platform.CreateHashtable();
private static readonly IDictionary MacAlgNames = Platform.CreateHashtable();
-
- private static readonly IDictionary prfs = Platform.CreateHashtable();
-
-
- public delegate IDigest DigestCreator();
+ //private static readonly IDictionary PrfDigests = Platform.CreateHashtable();
static EnvelopedDataHelper()
{
- prfs.Add(PkcsObjectIdentifiers.IdHmacWithSha1, new DigestProvider(delegate () { return new Sha1Digest(); }));
- prfs.Add(PkcsObjectIdentifiers.IdHmacWithSha224, new DigestProvider(delegate () { return new Sha224Digest(); }));
- prfs.Add(PkcsObjectIdentifiers.IdHmacWithSha256, new DigestProvider(delegate () { return new Sha256Digest(); }));
- prfs.Add(PkcsObjectIdentifiers.IdHmacWithSha384, new DigestProvider(delegate () { return new Sha384Digest(); }));
- prfs.Add(PkcsObjectIdentifiers.IdHmacWithSha512, new DigestProvider(delegate () { return new Sha512Digest(); }));
-
+ //PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha1, "SHA-1");
+ //PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha224, "SHA-224");
+ //PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha256, "SHA-256");
+ //PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha384, "SHA-384");
+ //PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha512, "SHA-512");
BaseCipherNames.Add(PkcsObjectIdentifiers.DesEde3Cbc, "DESEDE");
BaseCipherNames.Add(NistObjectIdentifiers.IdAes128Cbc, "AES");
@@ -47,77 +43,53 @@ namespace Org.BouncyCastle.Cms
MacAlgNames.Add(PkcsObjectIdentifiers.RC2Cbc, "RC2Mac");
}
- static IDigest GetPrf(AlgorithmIdentifier algID)
- {
- return ((DigestCreator)prfs[algID]).Invoke();
- }
-
-
- static IWrapper CreateRFC3211Wrapper(DerObjectIdentifier algorithm)
-
- {
- if (NistObjectIdentifiers.IdAes128Cbc.Equals(algorithm)
- || NistObjectIdentifiers.IdAes192Cbc.Equals(algorithm)
- || NistObjectIdentifiers.IdAes256Cbc.Equals(algorithm))
- {
- return new Rfc3211WrapEngine(new AesEngine());
- }
- else if (PkcsObjectIdentifiers.DesEde3Cbc.Equals(algorithm))
- {
- return new Rfc3211WrapEngine(new DesEdeEngine());
- }
- else if (OiwObjectIdentifiers.DesCbc.Equals(algorithm))
- {
- return new Rfc3211WrapEngine(new DesEngine());
- }
- else if (PkcsObjectIdentifiers.RC2Cbc.Equals(algorithm))
- {
- return new Rfc3211WrapEngine(new RC2Engine());
- }
- else
- {
- throw new CmsException("cannot recognise wrapper: " + algorithm);
- }
- }
-
-
-
- public static object CreateContentCipher(bool forEncryption, ICipherParameters encKey,
- AlgorithmIdentifier encryptionAlgID)
-
+ //internal static IDigest GetPrf(AlgorithmIdentifier algID)
+ //{
+ // string digestName = (string)PrfDigests[algID];
+
+ // return DigestUtilities.GetDigest(digestName);
+ //}
+
+ //internal static IWrapper CreateRfc3211Wrapper(DerObjectIdentifier algorithm)
+ //{
+ // if (NistObjectIdentifiers.IdAes128Cbc.Equals(algorithm)
+ // || NistObjectIdentifiers.IdAes192Cbc.Equals(algorithm)
+ // || NistObjectIdentifiers.IdAes256Cbc.Equals(algorithm))
+ // {
+ // return new Rfc3211WrapEngine(new AesEngine());
+ // }
+ // else if (PkcsObjectIdentifiers.DesEde3Cbc.Equals(algorithm))
+ // {
+ // return new Rfc3211WrapEngine(new DesEdeEngine());
+ // }
+ // else if (OiwObjectIdentifiers.DesCbc.Equals(algorithm))
+ // {
+ // return new Rfc3211WrapEngine(new DesEngine());
+ // }
+ // else if (PkcsObjectIdentifiers.RC2Cbc.Equals(algorithm))
+ // {
+ // return new Rfc3211WrapEngine(new RC2Engine());
+ // }
+ // else
+ // {
+ // throw new CmsException("cannot recognise wrapper: " + algorithm);
+ // }
+ //}
+
+ public static object CreateContentCipher(bool forEncryption, ICipherParameters encKey,
+ AlgorithmIdentifier encryptionAlgID)
{
return CipherFactory.CreateContentCipher(forEncryption, encKey, encryptionAlgID);
}
-
public AlgorithmIdentifier GenerateEncryptionAlgID(DerObjectIdentifier encryptionOID, KeyParameter encKey, SecureRandom random)
{
return AlgorithmIdentifierFactory.GenerateEncryptionAlgID(encryptionOID, encKey.GetKey().Length * 8, random);
}
- public CipherKeyGenerator CreateKeyGenerator(DerObjectIdentifier algorithm, SecureRandom random)
-
+ public CipherKeyGenerator CreateKeyGenerator(DerObjectIdentifier algorithm, SecureRandom random)
{
return CipherKeyGeneratorFactory.CreateKeyGenerator(algorithm, random);
}
-
-
- }
-
- // This exists because we can't directly put a delegate in a map as it is
- // not an object.
- internal class DigestProvider
- {
- private readonly EnvelopedDataHelper.DigestCreator creator;
-
- public DigestProvider(EnvelopedDataHelper.DigestCreator creator)
- {
- this.creator = creator;
- }
-
- public IDigest Create()
- {
- return creator.Invoke();
- }
}
}
diff --git a/crypto/src/crmf/AuthenticatorControl.cs b/crypto/src/crmf/AuthenticatorControl.cs
index 976135ed8..fc546ede5 100644
--- a/crypto/src/crmf/AuthenticatorControl.cs
+++ b/crypto/src/crmf/AuthenticatorControl.cs
@@ -1,4 +1,5 @@
using System;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Crmf;
@@ -7,9 +8,9 @@ namespace Org.BouncyCastle.Crmf
/// <summary>
/// Carrier for an authenticator control.
/// </summary>
- public class AuthenticatorControl:IControl
+ public class AuthenticatorControl
+ : IControl
{
-
private static readonly DerObjectIdentifier type = CrmfObjectIdentifiers.id_regCtrl_authenticator;
private readonly DerUtf8String token;
@@ -27,7 +28,7 @@ namespace Org.BouncyCastle.Crmf
/// Basic constructor - build from a string representing the token.
/// </summary>
/// <param name="token">string representing the token.</param>
- public AuthenticatorControl(String token)
+ public AuthenticatorControl(string token)
{
this.token = new DerUtf8String(token);
}
@@ -43,7 +44,8 @@ namespace Org.BouncyCastle.Crmf
/// <summary>
/// Return the token associated with this control (a UTF8String).
/// </summary>
- public Asn1Encodable Value {
+ public Asn1Encodable Value
+ {
get { return token; }
}
}
diff --git a/crypto/src/crmf/CertificateRequestMessage.cs b/crypto/src/crmf/CertificateRequestMessage.cs
index 5b5d37c9e..c733eecbb 100644
--- a/crypto/src/crmf/CertificateRequestMessage.cs
+++ b/crypto/src/crmf/CertificateRequestMessage.cs
@@ -1,4 +1,5 @@
using System;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Crmf;
using Org.BouncyCastle.Crypto;
@@ -16,18 +17,18 @@ namespace Org.BouncyCastle.Crmf
private readonly CertReqMsg certReqMsg;
private readonly Controls controls;
- private static CertReqMsg ParseBytes(byte[] encoding)
- {
- return CertReqMsg.GetInstance(encoding);
+ private static CertReqMsg ParseBytes(byte[] encoding)
+ {
+ return CertReqMsg.GetInstance(encoding);
}
/// <summary>
/// Create a CertificateRequestMessage from the passed in bytes.
/// </summary>
/// <param name="encoded">BER/DER encoding of the CertReqMsg structure.</param>
- public CertificateRequestMessage(byte[] encoded):this(CertReqMsg.GetInstance(encoded))
+ public CertificateRequestMessage(byte[] encoded)
+ : this(CertReqMsg.GetInstance(encoded))
{
-
}
public CertificateRequestMessage(CertReqMsg certReqMsg)
@@ -42,7 +43,7 @@ namespace Org.BouncyCastle.Crmf
/// <returns>A CertReqMsg</returns>
public CertReqMsg ToAsn1Structure()
{
- return certReqMsg;
+ return certReqMsg;
}
/// <summary>
@@ -70,7 +71,7 @@ namespace Org.BouncyCastle.Crmf
/// <returns>true if a control value of type is present, false otherwise.</returns>
public bool HasControl(DerObjectIdentifier objectIdentifier)
{
- return findControl(objectIdentifier) != null;
+ return FindControl(objectIdentifier) != null;
}
/// <summary>
@@ -80,7 +81,7 @@ namespace Org.BouncyCastle.Crmf
/// <returns>the control value if present, null otherwise.</returns>
public IControl GetControl(DerObjectIdentifier type)
{
- AttributeTypeAndValue found = findControl(type);
+ AttributeTypeAndValue found = FindControl(type);
if (found != null)
{
if (found.Type.Equals(CrmfObjectIdentifiers.id_regCtrl_pkiArchiveOptions))
@@ -97,14 +98,11 @@ namespace Org.BouncyCastle.Crmf
{
return new AuthenticatorControl(DerUtf8String.GetInstance(found.Value));
}
- }
+ }
return null;
}
-
-
-
- public AttributeTypeAndValue findControl(DerObjectIdentifier type)
+ public AttributeTypeAndValue FindControl(DerObjectIdentifier type)
{
if (controls == null)
{
@@ -163,9 +161,9 @@ namespace Org.BouncyCastle.Crmf
}
return false;
-
}
}
+
/// <summary>
/// Return whether or not a signing key proof-of-possession (POP) is valid.
/// </summary>
@@ -189,8 +187,6 @@ namespace Org.BouncyCastle.Crmf
throw new InvalidOperationException("not Signing Key type of proof of possession");
}
-
-
private bool verifySignature(IVerifierFactoryProvider verifierFactoryProvider, PopoSigningKey signKey)
{
IVerifierFactory verifer;
@@ -202,22 +198,22 @@ namespace Org.BouncyCastle.Crmf
}
catch (Exception ex)
{
- throw new CrmfException("unable to create verifier: "+ex.Message, ex);
+ throw new CrmfException("unable to create verifier: " + ex.Message, ex);
}
if (signKey.PoposkInput != null)
{
byte[] b = signKey.GetDerEncoded();
- calculator.Stream.Write(b,0,b.Length);
+ calculator.Stream.Write(b, 0, b.Length);
}
else
- {
+ {
byte[] b = certReqMsg.CertReq.GetDerEncoded();
- calculator.Stream.Write(b,0,b.Length);
+ calculator.Stream.Write(b, 0, b.Length);
}
- DefaultVerifierResult result = (DefaultVerifierResult) calculator.GetResult();
-
+ DefaultVerifierResult result = (DefaultVerifierResult)calculator.GetResult();
+
return result.IsVerified(signKey.Signature.GetBytes());
}
diff --git a/crypto/src/crmf/CertificateRequestMessageBuilder.cs b/crypto/src/crmf/CertificateRequestMessageBuilder.cs
index 9c3cf954d..88d1d87bd 100644
--- a/crypto/src/crmf/CertificateRequestMessageBuilder.cs
+++ b/crypto/src/crmf/CertificateRequestMessageBuilder.cs
@@ -1,14 +1,13 @@
using System;
using System.Collections;
-using System.Collections.Generic;
-using System.Security.Cryptography.X509Certificates;
-using System.Text;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Crmf;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Operators;
using Org.BouncyCastle.Math;
+using Org.BouncyCastle.Utilities;
namespace Org.BouncyCastle.Crmf
{
@@ -17,7 +16,7 @@ namespace Org.BouncyCastle.Crmf
private readonly BigInteger _certReqId;
private X509ExtensionsGenerator _extGenerator;
private CertTemplateBuilder _templateBuilder;
- private ArrayList _controls= new ArrayList();
+ private IList _controls = Platform.CreateArrayList();
private ISignatureFactory _popSigner;
private PKMacBuilder _pkMacBuilder;
private char[] _password;
@@ -44,7 +43,6 @@ namespace Org.BouncyCastle.Crmf
return this;
}
-
public CertificateRequestMessageBuilder SetIssuer(X509Name issuer)
{
if (issuer != null)
@@ -78,13 +76,13 @@ namespace Org.BouncyCastle.Crmf
public CertificateRequestMessageBuilder SetValidity(Time notBefore, Time notAfter)
{
_templateBuilder.SetValidity(new OptionalValidity(notBefore, notAfter));
- return this;
+ return this;
}
public CertificateRequestMessageBuilder AddExtension(DerObjectIdentifier oid, bool critical,
Asn1Encodable value)
{
- _extGenerator.AddExtension(oid,critical, value);
+ _extGenerator.AddExtension(oid, critical, value);
return this;
}
@@ -109,7 +107,7 @@ namespace Org.BouncyCastle.Crmf
}
this._popSigner = popoSignatureFactory;
-
+
return this;
}
@@ -123,7 +121,6 @@ namespace Org.BouncyCastle.Crmf
this._popoType = ProofOfPossession.TYPE_KEY_ENCIPHERMENT;
this._popoPrivKey = new PopoPrivKey(msg);
-
return this;
}
@@ -142,7 +139,7 @@ namespace Org.BouncyCastle.Crmf
this._popoType = type;
this._popoPrivKey = new PopoPrivKey(msg);
- return this;
+ return this;
}
public CertificateRequestMessageBuilder SetProofOfPossessionAgreeMac(PKMacValue macValue)
@@ -152,7 +149,7 @@ namespace Org.BouncyCastle.Crmf
throw new InvalidOperationException("only one proof of possession allowed");
}
- this._agreeMac = macValue;
+ this._agreeMac = macValue;
return this;
}
@@ -189,35 +186,31 @@ namespace Org.BouncyCastle.Crmf
public CertificateRequestMessage Build()
{
- Asn1EncodableVector v = new Asn1EncodableVector();
-
- v.Add(new DerInteger(this._certReqId));
+ Asn1EncodableVector v = new Asn1EncodableVector(new DerInteger(this._certReqId));
if (!this._extGenerator.IsEmpty)
{
- this._templateBuilder.SetExtensions(_extGenerator.Generate());
+ this._templateBuilder.SetExtensions(_extGenerator.Generate());
}
v.Add(_templateBuilder.Build());
- if (_controls.Count>0)
+ if (_controls.Count > 0)
{
Asn1EncodableVector controlV = new Asn1EncodableVector();
- foreach (Object item in _controls)
+ foreach (object item in _controls)
{
- IControl control = (IControl) item;
+ IControl control = (IControl)item;
controlV.Add(new AttributeTypeAndValue(control.Type, control.Value));
}
-
+
v.Add(new DerSequence(controlV));
}
CertRequest request = CertRequest.GetInstance(new DerSequence(v));
- v = new Asn1EncodableVector();
-
- v.Add(request);
+ v = new Asn1EncodableVector(request);
if (_popSigner != null)
{
@@ -226,27 +219,27 @@ namespace Org.BouncyCastle.Crmf
if (template.Subject == null || template.PublicKey == null)
{
SubjectPublicKeyInfo pubKeyInfo = request.CertTemplate.PublicKey;
-
+
ProofOfPossessionSigningKeyBuilder builder = new ProofOfPossessionSigningKeyBuilder(pubKeyInfo);
if (_sender != null)
{
- builder.setSender(_sender);
+ builder.SetSender(_sender);
}
else
{
- // PkMa pkmacGenerator = new PKMACValueGenerator(_pkmacBuilder);
+ //PKMACValueGenerator pkmacGenerator = new PKMACValueGenerator(_pkmacBuilder);
- builder.setPublicKeyMac(_pkMacBuilder, _password);
+ builder.SetPublicKeyMac(_pkMacBuilder, _password);
}
- v.Add(new ProofOfPossession(builder.build(_popSigner)));
+ v.Add(new ProofOfPossession(builder.Build(_popSigner)));
}
else
{
ProofOfPossessionSigningKeyBuilder builder = new ProofOfPossessionSigningKeyBuilder(request);
- v.Add(new ProofOfPossession(builder.build(_popSigner)));
+ v.Add(new ProofOfPossession(builder.Build(_popSigner)));
}
}
else if (_popoPrivKey != null)
@@ -256,7 +249,7 @@ namespace Org.BouncyCastle.Crmf
else if (_agreeMac != null)
{
v.Add(new ProofOfPossession(ProofOfPossession.TYPE_KEY_AGREEMENT,
- PopoPrivKey.GetInstance(new DerTaggedObject(false, PopoPrivKey.agreeMAC, _agreeMac),true )));
+ PopoPrivKey.GetInstance(new DerTaggedObject(false, PopoPrivKey.agreeMAC, _agreeMac), true)));
}
else if (_popRaVerified != null)
diff --git a/crypto/src/crmf/CrmfException.cs b/crypto/src/crmf/CrmfException.cs
index c80f480b7..5ae13a0eb 100644
--- a/crypto/src/crmf/CrmfException.cs
+++ b/crypto/src/crmf/CrmfException.cs
@@ -1,25 +1,21 @@
using System;
-using System.Collections.Generic;
-using System.Runtime.Serialization;
-using System.Text;
namespace Org.BouncyCastle.Crmf
{
- public class CrmfException : Exception
+ public class CrmfException
+ : Exception
{
public CrmfException()
{
}
- public CrmfException(string message) : base(message)
+ public CrmfException(string message)
+ : base(message)
{
}
- public CrmfException(string message, Exception innerException) : base(message, innerException)
- {
- }
-
- protected CrmfException(SerializationInfo info, StreamingContext context) : base(info, context)
+ public CrmfException(string message, Exception innerException)
+ : base(message, innerException)
{
}
}
diff --git a/crypto/src/crmf/DefaultPKMacPrimitivesProvider.cs b/crypto/src/crmf/DefaultPKMacPrimitivesProvider.cs
index 1757d6a92..01e196ef4 100644
--- a/crypto/src/crmf/DefaultPKMacPrimitivesProvider.cs
+++ b/crypto/src/crmf/DefaultPKMacPrimitivesProvider.cs
@@ -1,14 +1,13 @@
using System;
-using System.Collections.Generic;
-using System.Text;
+
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Security;
-using Org.BouncyCastle.Crypto.Parameters;
namespace Org.BouncyCastle.Crmf
{
- public class DefaultPKMacPrimitivesProvider : IPKMacPrimitivesProvider
+ public class DefaultPKMacPrimitivesProvider
+ : IPKMacPrimitivesProvider
{
public IDigest CreateDigest(AlgorithmIdentifier digestAlg)
{
diff --git a/crypto/src/crmf/EncryptedValueBuilder.cs b/crypto/src/crmf/EncryptedValueBuilder.cs
index b8076c0e9..8f220330e 100644
--- a/crypto/src/crmf/EncryptedValueBuilder.cs
+++ b/crypto/src/crmf/EncryptedValueBuilder.cs
@@ -1,28 +1,28 @@
using System;
using System.Collections;
-using System.Collections.Generic;
+using System.IO;
using System.Text;
+
+using Org.BouncyCastle.Asn1;
+using Org.BouncyCastle.Asn1.Crmf;
using Org.BouncyCastle.Asn1.Nist;
+using Org.BouncyCastle.Asn1.Pkcs;
+using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Parameters;
-using Org.BouncyCastle.Utilities;
-using Org.BouncyCastle.Asn1.X509;
-using Org.BouncyCastle.Asn1;
-using Org.BouncyCastle.Asn1.Crmf;
-using System.IO;
using Org.BouncyCastle.Pkcs;
-using Org.BouncyCastle.Asn1.Pkcs;
-using Org.BouncyCastle.X509;
+using Org.BouncyCastle.Utilities;
using Org.BouncyCastle.Utilities.IO;
+using Org.BouncyCastle.X509;
namespace Org.BouncyCastle.Crmf
{
public class EncryptedValueBuilder
{
- private IKeyWrapper wrapper;
- private ICipherBuilderWithKey encryptor;
- private EncryptedValuePadder padder;
+ private readonly IKeyWrapper wrapper;
+ private readonly ICipherBuilderWithKey encryptor;
+ private readonly IEncryptedValuePadder padder;
///
/// Create a builder that makes EncryptedValue structures.
@@ -30,7 +30,8 @@ namespace Org.BouncyCastle.Crmf
/// <param name="wrapper">wrapper a wrapper for key used to encrypt the actual data contained in the EncryptedValue.</param>
/// <param name="encryptor">encryptor an output encryptor to encrypt the actual data contained in the EncryptedValue. </param>
///
- public EncryptedValueBuilder(IKeyWrapper wrapper, ICipherBuilderWithKey encryptor) : this(wrapper, encryptor, null)
+ public EncryptedValueBuilder(IKeyWrapper wrapper, ICipherBuilderWithKey encryptor)
+ : this(wrapper, encryptor, null)
{
}
@@ -41,7 +42,7 @@ namespace Org.BouncyCastle.Crmf
/// <param name="encryptor">encryptor an output encryptor to encrypt the actual data contained in the EncryptedValue.</param>
/// <param name="padder">padder a padder to ensure that the EncryptedValue created will always be a constant length.</param>
///
- public EncryptedValueBuilder(IKeyWrapper wrapper, ICipherBuilderWithKey encryptor, EncryptedValuePadder padder)
+ public EncryptedValueBuilder(IKeyWrapper wrapper, ICipherBuilderWithKey encryptor, IEncryptedValuePadder padder)
{
this.wrapper = wrapper;
this.encryptor = encryptor;
@@ -56,7 +57,7 @@ namespace Org.BouncyCastle.Crmf
///
public EncryptedValue Build(char[] revocationPassphrase)
{
- return encryptData(padData(Strings.ToUtf8ByteArray(revocationPassphrase)));
+ return EncryptData(PadData(Strings.ToUtf8ByteArray(revocationPassphrase)));
}
///<summary>
@@ -71,7 +72,7 @@ namespace Org.BouncyCastle.Crmf
{
try
{
- return encryptData(padData(holder.GetEncoded()));
+ return EncryptData(PadData(holder.GetEncoded()));
}
catch (IOException e)
{
@@ -110,19 +111,16 @@ namespace Org.BouncyCastle.Crmf
{
throw new CrmfException("cannot wrap key: " + e.Message, e);
}
-
}
- private EncryptedValue encryptData(byte[] data)
+ private EncryptedValue EncryptData(byte[] data)
{
MemoryOutputStream bOut = new MemoryOutputStream();
-
Stream eOut = encryptor.BuildCipher(bOut).Stream;
try
{
eOut.Write(data, 0, data.Length);
-
eOut.Close();
}
catch (IOException e)
@@ -132,8 +130,8 @@ namespace Org.BouncyCastle.Crmf
AlgorithmIdentifier intendedAlg = null;
AlgorithmIdentifier symmAlg = (AlgorithmIdentifier)encryptor.AlgorithmDetails;
- DerBitString encSymmKey;
+ DerBitString encSymmKey;
try
{
encSymmKey = new DerBitString(wrapper.Wrap(((KeyParameter)encryptor.Key).GetKey()).Collect());
@@ -150,7 +148,7 @@ namespace Org.BouncyCastle.Crmf
return new EncryptedValue(intendedAlg, symmAlg, encSymmKey, keyAlg, valueHint, encValue);
}
- private byte[] padData(byte[] data)
+ private byte[] PadData(byte[] data)
{
if (padder != null)
{
diff --git a/crypto/src/crmf/IControl.cs b/crypto/src/crmf/IControl.cs
index 14fcc2cd3..9a29ac12a 100644
--- a/crypto/src/crmf/IControl.cs
+++ b/crypto/src/crmf/IControl.cs
@@ -1,8 +1,6 @@
using System;
using Org.BouncyCastle.Asn1;
-using Org.BouncyCastle.Asn1.Crmf;
-using Org.BouncyCastle.Utilities;
namespace Org.BouncyCastle.Crmf
{
diff --git a/crypto/src/crmf/IEncryptedValuePadder.cs b/crypto/src/crmf/IEncryptedValuePadder.cs
index b12993e1f..b8986144e 100644
--- a/crypto/src/crmf/IEncryptedValuePadder.cs
+++ b/crypto/src/crmf/IEncryptedValuePadder.cs
@@ -1,15 +1,12 @@
using System;
-using System.Collections.Generic;
-using System.Text;
namespace Org.BouncyCastle.Crmf
{
-
/// <summary>
/// An encrypted value padder is used to make sure that prior to a value been
/// encrypted the data is padded to a standard length.
/// </summary>
- public interface EncryptedValuePadder
+ public interface IEncryptedValuePadder
{
///
/// <summary>Return a byte array of padded data.</summary>
diff --git a/crypto/src/crmf/IPKMacPrimitivesProvider.cs b/crypto/src/crmf/IPKMacPrimitivesProvider.cs
index 8b90be515..08f6a624a 100644
--- a/crypto/src/crmf/IPKMacPrimitivesProvider.cs
+++ b/crypto/src/crmf/IPKMacPrimitivesProvider.cs
@@ -1,20 +1,6 @@
using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Text;
-using Org.BouncyCastle.Asn1;
-using Org.BouncyCastle.Asn1.Cmp;
-using Org.BouncyCastle.Asn1.Iana;
-using Org.BouncyCastle.Asn1.Nist;
-using Org.BouncyCastle.Asn1.Oiw;
-using Org.BouncyCastle.Asn1.Pkcs;
+
using Org.BouncyCastle.Asn1.X509;
-using Org.BouncyCastle.Cms;
-using Org.BouncyCastle.Crypto.IO;
-using Org.BouncyCastle.Crypto.Parameters;
-using Org.BouncyCastle.Security;
-using Org.BouncyCastle.Utilities;
-using Org.BouncyCastle.Utilities.Encoders;
using Org.BouncyCastle.Crypto;
namespace Org.BouncyCastle.Crmf
diff --git a/crypto/src/crmf/PKMacBuilder.cs b/crypto/src/crmf/PKMacBuilder.cs
index 00bec9f8b..6741177da 100644
--- a/crypto/src/crmf/PKMacBuilder.cs
+++ b/crypto/src/crmf/PKMacBuilder.cs
@@ -1,30 +1,24 @@
using System;
-using System.Collections.Generic;
using System.IO;
-using System.Text;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Cmp;
using Org.BouncyCastle.Asn1.Iana;
-using Org.BouncyCastle.Asn1.Nist;
using Org.BouncyCastle.Asn1.Oiw;
-using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Asn1.X509;
-using Org.BouncyCastle.Cms;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.IO;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.Utilities;
-using Org.BouncyCastle.Utilities.Encoders;
-
namespace Org.BouncyCastle.Crmf
{
-
- class PKMacStreamCalculator : IStreamCalculator
+ internal class PKMacStreamCalculator
+ : IStreamCalculator
{
private readonly MacSink _stream;
-
+
public PKMacStreamCalculator(IMac mac)
{
_stream = new MacSink(mac);
@@ -41,17 +35,16 @@ namespace Org.BouncyCastle.Crmf
}
}
- class PKMacFactory : IMacFactory
+ internal class PKMacFactory
+ : IMacFactory
{
protected readonly PbmParameter parameters;
- private byte[] key;
-
-
+ private readonly byte[] key;
+
public PKMacFactory(byte[] key, PbmParameter parameters)
{
this.key = Arrays.Clone(key);
-
- this.parameters = parameters;
+ this.parameters = parameters;
}
public virtual object AlgorithmDetails
@@ -62,14 +55,13 @@ namespace Org.BouncyCastle.Crmf
public virtual IStreamCalculator CreateCalculator()
{
IMac mac = MacUtilities.GetMac(parameters.Mac.Algorithm);
-
mac.Init(new KeyParameter(key));
-
return new PKMacStreamCalculator(mac);
}
}
- class DefaultPKMacResult: IBlockResult
+ internal class DefaultPKMacResult
+ : IBlockResult
{
private readonly IMac mac;
@@ -81,9 +73,7 @@ namespace Org.BouncyCastle.Crmf
public byte[] Collect()
{
byte[] res = new byte[mac.GetMacSize()];
-
mac.DoFinal(res, 0);
-
return res;
}
@@ -121,7 +111,7 @@ namespace Org.BouncyCastle.Crmf
/// <param name="provider"></param>
public PKMacBuilder(IPKMacPrimitivesProvider provider) :
this(new AlgorithmIdentifier(OiwObjectIdentifiers.IdSha1), 1000, new AlgorithmIdentifier(IanaObjectIdentifiers.HmacSha1, DerNull.Instance), provider)
- {
+ {
}
/// <summary>
@@ -146,7 +136,6 @@ namespace Org.BouncyCastle.Crmf
this.maxIterations = maxIterations;
}
-
private PKMacBuilder(AlgorithmIdentifier digestAlgorithmIdentifier, int iterationCount, AlgorithmIdentifier macAlgorithmIdentifier, IPKMacPrimitivesProvider provider)
{
this.iterationCount = iterationCount;
@@ -164,9 +153,7 @@ namespace Org.BouncyCastle.Crmf
public PKMacBuilder SetSaltLength(int saltLength)
{
if (saltLength < 8)
- {
throw new ArgumentException("salt length must be at least 8 bytes");
- }
this.saltLength = saltLength;
@@ -182,10 +169,9 @@ namespace Org.BouncyCastle.Crmf
public PKMacBuilder SetIterationCount(int iterationCount)
{
if (iterationCount < 100)
- {
throw new ArgumentException("iteration count must be at least 100");
- }
- checkIterationCountCeiling(iterationCount);
+
+ CheckIterationCountCeiling(iterationCount);
this.iterationCount = iterationCount;
@@ -199,7 +185,7 @@ namespace Org.BouncyCastle.Crmf
/// <returns>this</returns>
public PKMacBuilder SetParameters(PbmParameter parameters)
{
- checkIterationCountCeiling(parameters.IterationCount.Value.IntValue);
+ CheckIterationCountCeiling(parameters.IterationCount.Value.IntValue);
this.parameters = parameters;
@@ -215,7 +201,7 @@ namespace Org.BouncyCastle.Crmf
{
this.random = random;
- return this;
+ return this;
}
/// <summary>
@@ -226,33 +212,27 @@ namespace Org.BouncyCastle.Crmf
public IMacFactory Build(char[] password)
{
if (parameters != null)
+ return GenCalculator(parameters, password);
+
+ byte[] salt = new byte[saltLength];
+
+ if (random == null)
{
- return genCalculator(parameters, password);
+ this.random = new SecureRandom();
}
- else
- {
- byte[] salt = new byte[saltLength];
-
- if (random == null)
- {
- this.random = new SecureRandom();
- }
- random.NextBytes(salt);
+ random.NextBytes(salt);
- return genCalculator(new PbmParameter(salt, owf, iterationCount, mac), password);
- }
+ return GenCalculator(new PbmParameter(salt, owf, iterationCount, mac), password);
}
- private void checkIterationCountCeiling(int iterationCount)
+ private void CheckIterationCountCeiling(int iterationCount)
{
if (maxIterations > 0 && iterationCount > maxIterations)
- {
throw new ArgumentException("iteration count exceeds limit (" + iterationCount + " > " + maxIterations + ")");
- }
}
- private IMacFactory genCalculator(PbmParameter parameters, char[] password)
+ private IMacFactory GenCalculator(PbmParameter parameters, char[] password)
{
// From RFC 4211
//
@@ -273,8 +253,8 @@ namespace Org.BouncyCastle.Crmf
byte[] salt = parameters.Salt.GetOctets();
byte[] K = new byte[pw.Length + salt.Length];
- System.Array.Copy(pw, 0, K, 0, pw.Length);
- System.Array.Copy(salt, 0, K, pw.Length, salt.Length);
+ Array.Copy(pw, 0, K, 0, pw.Length);
+ Array.Copy(salt, 0, K, pw.Length, salt.Length);
IDigest digest = provider.CreateDigest(parameters.Owf);
diff --git a/crypto/src/crmf/PkiArchiveControl.cs b/crypto/src/crmf/PkiArchiveControl.cs
index d533e6c52..251b8db96 100644
--- a/crypto/src/crmf/PkiArchiveControl.cs
+++ b/crypto/src/crmf/PkiArchiveControl.cs
@@ -1,6 +1,5 @@
using System;
-using System.Collections.Generic;
-using System.Text;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Cms;
using Org.BouncyCastle.Asn1.Crmf;
@@ -8,7 +7,8 @@ using Org.BouncyCastle.Cms;
namespace Org.BouncyCastle.Crmf
{
- public class PkiArchiveControl:IControl
+ public class PkiArchiveControl
+ : IControl
{
public static readonly int encryptedPrivKey = PkiArchiveOptions.encryptedPrivKey;
public static readonly int keyGenParameters = PkiArchiveOptions.keyGenParameters;
@@ -33,7 +33,7 @@ namespace Org.BouncyCastle.Crmf
/// <returns>CRMFObjectIdentifiers.id_regCtrl_pkiArchiveOptions</returns>
public DerObjectIdentifier Type
{
-
+
get { return type; }
}
@@ -87,9 +87,8 @@ namespace Org.BouncyCastle.Crmf
}
catch (Exception e)
{
- throw new CrmfException("CRMF parsing error: "+e.Message, e);
+ throw new CrmfException("CRMF parsing error: " + e.Message, e);
}
}
-
}
}
diff --git a/crypto/src/crmf/PkiArchiveControlBuilder.cs b/crypto/src/crmf/PkiArchiveControlBuilder.cs
index 2677e4e0d..d79f3b5ed 100644
--- a/crypto/src/crmf/PkiArchiveControlBuilder.cs
+++ b/crypto/src/crmf/PkiArchiveControlBuilder.cs
@@ -1,5 +1,6 @@
using System;
using System.IO;
+
using Org.BouncyCastle.Asn1.Cms;
using Org.BouncyCastle.Asn1.Crmf;
using Org.BouncyCastle.Asn1.Pkcs;
@@ -30,7 +31,7 @@ namespace Org.BouncyCastle.Crmf
}
catch (IOException e)
{
- throw new InvalidOperationException("unable to encode key and general name info");
+ throw new InvalidOperationException("unable to encode key and general name info", e);
}
this.envGen = new CmsEnvelopedDataGenerator();
@@ -55,4 +56,4 @@ namespace Org.BouncyCastle.Crmf
return new PkiArchiveControl(new PkiArchiveOptions(new EncryptedKey(envD)));
}
}
-}
\ No newline at end of file
+}
diff --git a/crypto/src/crmf/ProofOfPossessionSigningKeyBuilder.cs b/crypto/src/crmf/ProofOfPossessionSigningKeyBuilder.cs
index 8457585ff..49d10a6bf 100644
--- a/crypto/src/crmf/ProofOfPossessionSigningKeyBuilder.cs
+++ b/crypto/src/crmf/ProofOfPossessionSigningKeyBuilder.cs
@@ -1,12 +1,10 @@
using System;
-using System.Collections.Generic;
-using System.Text;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Crmf;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Operators;
-using Org.BouncyCastle.Crypto.Paddings;
namespace Org.BouncyCastle.Crmf
{
@@ -27,14 +25,14 @@ namespace Org.BouncyCastle.Crmf
this._pubKeyInfo = pubKeyInfo;
}
- public ProofOfPossessionSigningKeyBuilder setSender(GeneralName name)
+ public ProofOfPossessionSigningKeyBuilder SetSender(GeneralName name)
{
this._name = name;
return this;
}
- public ProofOfPossessionSigningKeyBuilder setPublicKeyMac(PKMacBuilder generator, char[] password)
+ public ProofOfPossessionSigningKeyBuilder SetPublicKeyMac(PKMacBuilder generator, char[] password)
{
IMacFactory fact = generator.Build(password);
@@ -51,7 +49,7 @@ namespace Org.BouncyCastle.Crmf
return this;
}
- public PopoSigningKey build(ISignatureFactory signer)
+ public PopoSigningKey Build(ISignatureFactory signer)
{
if (_name != null && _publicKeyMAC != null)
{
diff --git a/crypto/src/crmf/RegTokenControl.cs b/crypto/src/crmf/RegTokenControl.cs
index 90e956f67..43484097c 100644
--- a/crypto/src/crmf/RegTokenControl.cs
+++ b/crypto/src/crmf/RegTokenControl.cs
@@ -1,17 +1,15 @@
using System;
-using System.Collections.Generic;
-using System.Text;
-using Org.BouncyCastle.Crmf;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Crmf;
namespace Org.BouncyCastle.Crmf
{
- public class RegTokenControl:IControl
+ public class RegTokenControl
+ : IControl
{
private static readonly DerObjectIdentifier type = CrmfObjectIdentifiers.id_regCtrl_regToken;
-
+
private readonly DerUtf8String token;
/// <summary>
@@ -22,11 +20,12 @@ namespace Org.BouncyCastle.Crmf
{
this.token = token;
}
+
/// <summary>
/// Basic constructor - build from a string representing the token.
/// </summary>
/// <param name="token">string representing the token.</param>
- public RegTokenControl(String token)
+ public RegTokenControl(string token)
{
this.token = new DerUtf8String(token);
}
diff --git a/crypto/src/crypto/ICipher.cs b/crypto/src/crypto/ICipher.cs
index 9041e61ad..3768ee0e3 100644
--- a/crypto/src/crypto/ICipher.cs
+++ b/crypto/src/crypto/ICipher.cs
@@ -1,7 +1,5 @@
using System;
-using System.Collections.Generic;
using System.IO;
-using System.Text;
namespace Org.BouncyCastle.Crypto
{
diff --git a/crypto/src/crypto/ICipherBuilder.cs b/crypto/src/crypto/ICipherBuilder.cs
index 5d4d1279c..9b0e2b343 100644
--- a/crypto/src/crypto/ICipherBuilder.cs
+++ b/crypto/src/crypto/ICipherBuilder.cs
@@ -6,19 +6,19 @@ namespace Org.BouncyCastle.Crypto
/// <summary>
/// Base interface for cipher builders.
/// </summary>
- public interface ICipherBuilder
- {
+ public interface ICipherBuilder
+ {
/// <summary>
/// Return the algorithm and parameter details associated with any cipher built.
/// </summary>
- Object AlgorithmDetails { get ; }
+ object AlgorithmDetails { get; }
/// <summary>
/// Return the maximum output size that a given input will produce.
/// </summary>
/// <param name="inputLen">the length of the expected input.</param>
/// <returns>The maximum possible output size that can produced for the expected input length.</returns>
- int GetMaxOutputSize (int inputLen);
+ int GetMaxOutputSize(int inputLen);
/// <summary>
/// Build a cipher that operates on the passed in stream.
@@ -26,6 +26,5 @@ namespace Org.BouncyCastle.Crypto
/// <param name="stream">The stream to write/read any encrypted/decrypted data.</param>
/// <returns>A cipher based around the given stream.</returns>
ICipher BuildCipher(Stream stream);
- }
+ }
}
-
diff --git a/crypto/src/crypto/ICipherBuilderWithKey.cs b/crypto/src/crypto/ICipherBuilderWithKey.cs
index 01a7a2caf..8e79a5e0e 100644
--- a/crypto/src/crypto/ICipherBuilderWithKey.cs
+++ b/crypto/src/crypto/ICipherBuilderWithKey.cs
@@ -1,10 +1,12 @@
-
+using System;
+
namespace Org.BouncyCastle.Crypto
{
/// <summary>
/// A cipher builder that can also return the key it was initialized with.
/// </summary>
- public interface ICipherBuilderWithKey: ICipherBuilder
+ public interface ICipherBuilderWithKey
+ : ICipherBuilder
{
/// <summary>
/// Return the key we were initialized with.
diff --git a/crypto/src/crypto/IDecryptorBuilderProvider.cs b/crypto/src/crypto/IDecryptorBuilderProvider.cs
index 7f151e3ae..42ef2be18 100644
--- a/crypto/src/crypto/IDecryptorBuilderProvider.cs
+++ b/crypto/src/crypto/IDecryptorBuilderProvider.cs
@@ -12,7 +12,6 @@ namespace Org.BouncyCastle.Crypto
/// </summary>
/// <param name="algorithmDetails">The algorithm details/parameters to use to create the final cipher.</param>
/// <returns>A new cipher builder.</returns>
- ICipherBuilder CreateDecryptorBuilder (Object algorithmDetails);
+ ICipherBuilder CreateDecryptorBuilder(object algorithmDetails);
}
}
-
diff --git a/crypto/src/crypto/IKeyUnwrapper.cs b/crypto/src/crypto/IKeyUnwrapper.cs
index 2e280d912..18d5a8d9f 100644
--- a/crypto/src/crypto/IKeyUnwrapper.cs
+++ b/crypto/src/crypto/IKeyUnwrapper.cs
@@ -6,11 +6,11 @@ namespace Org.BouncyCastle.Crypto
/// Base interface for a key unwrapper.
/// </summary>
public interface IKeyUnwrapper
- {
+ {
/// <summary>
/// The parameter set used to configure this key unwrapper.
/// </summary>
- Object AlgorithmDetails { get; }
+ object AlgorithmDetails { get; }
/// <summary>
/// Unwrap the passed in data.
@@ -20,6 +20,5 @@ namespace Org.BouncyCastle.Crypto
/// <param name="length">The length of the data to be unwrapped.</param>
/// <returns>an IBlockResult containing the unwrapped key data.</returns>
IBlockResult Unwrap(byte[] cipherText, int offset, int length);
- }
+ }
}
-
diff --git a/crypto/src/crypto/IKeyWrapper.cs b/crypto/src/crypto/IKeyWrapper.cs
index d3ece2de2..27f338420 100644
--- a/crypto/src/crypto/IKeyWrapper.cs
+++ b/crypto/src/crypto/IKeyWrapper.cs
@@ -1,6 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Text;
namespace Org.BouncyCastle.Crypto
{
@@ -12,7 +10,7 @@ namespace Org.BouncyCastle.Crypto
/// <summary>
/// The parameter set used to configure this key wrapper.
/// </summary>
- Object AlgorithmDetails { get; }
+ object AlgorithmDetails { get; }
/// <summary>
/// Wrap the passed in key data.
diff --git a/crypto/src/crypto/IMacFactory.cs b/crypto/src/crypto/IMacFactory.cs
index d6b7ddfa7..9180ef1ea 100644
--- a/crypto/src/crypto/IMacFactory.cs
+++ b/crypto/src/crypto/IMacFactory.cs
@@ -1,13 +1,11 @@
using System;
-using System.Collections.Generic;
-using System.Text;
namespace Org.BouncyCastle.Crypto
{
public interface IMacFactory
{
/// <summary>The algorithm details object for this calculator.</summary>
- Object AlgorithmDetails { get; }
+ object AlgorithmDetails { get; }
/// <summary>
/// Create a stream calculator for this signature calculator. The stream
diff --git a/crypto/src/crypto/Security.cs b/crypto/src/crypto/Security.cs
index 716679044..f6f6924a0 100644
--- a/crypto/src/crypto/Security.cs
+++ b/crypto/src/crypto/Security.cs
@@ -1,4 +1,7 @@
-using Org.BouncyCastle.Crypto;
+using System;
+using System.Text;
+
+using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Digests;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Generators;
@@ -6,23 +9,17 @@ using Org.BouncyCastle.Crypto.Modes;
using Org.BouncyCastle.Crypto.Paddings;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Security;
-using System;
-using System.Text;
+using Org.BouncyCastle.Utilities.Encoders;
namespace crypto
{
public class Security
{
// USAGE
-
//var key = Security.GenerateText(32);
-
//var iv = Security.GenerateText(16);
-
//var encrypted = Security.Encrypt("MY SECRET", key, iv);
-
- //var dencrypted = Security.Decrypt(encrypted, key, iv);
-
+ //var decrypted = Security.Decrypt(encrypted, key, iv);
/// <summary>
/// Return a salted hash based on PBKDF2 for the UTF-8 encoding of the argument text.
@@ -30,79 +27,50 @@ namespace crypto
/// <param name="text">Provided key text</param>
/// <param name="salt">Base64 encoded string representing the salt</param>
/// <returns></returns>
- public static String ComputeHash(string text, string salt)
+ public static string ComputeHash(string text, string salt)
{
- var data = Encoding.UTF8.GetBytes(text);
- var sha = new Sha512Digest();
- var gen = new Pkcs5S2ParametersGenerator(sha);
+ byte[] data = Encoding.UTF8.GetBytes(text);
+ Sha512Digest sha = new Sha512Digest();
+ Pkcs5S2ParametersGenerator gen = new Pkcs5S2ParametersGenerator(sha);
- gen.Init(data, Convert.FromBase64String(salt), 2048);
+ gen.Init(data, Base64.Decode(salt), 2048);
- return Convert.ToBase64String(((KeyParameter)gen.GenerateDerivedParameters(sha.GetDigestSize() * 8)).GetKey());
+ return Base64.ToBase64String(((KeyParameter)gen.GenerateDerivedParameters(sha.GetDigestSize() * 8)).GetKey());
}
- public static String Decrypt(String cipherText, String key, String iv)
-
+ public static string Decrypt(string cipherText, string key, string iv)
{
-
- var cipher = CreateCipher(false, key, iv);
-
- var textAsBytes = cipher.DoFinal(Convert.FromBase64String(cipherText));
-
-
+ IBufferedCipher cipher = CreateCipher(false, key, iv);
+ byte[] textAsBytes = cipher.DoFinal(Base64.Decode(cipherText));
return Encoding.UTF8.GetString(textAsBytes, 0, textAsBytes.Length);
-
}
-
-
- public static String Encrypt(String plainText, String key, String iv)
-
+ public static string Encrypt(string plainText, string key, string iv)
{
+ IBufferedCipher cipher = CreateCipher(true, key, iv);
- var cipher = CreateCipher(true, key, iv);
-
-
-
- return Convert.ToBase64String(cipher.DoFinal(Encoding.UTF8.GetBytes(plainText)));
-
+ return Base64.ToBase64String(cipher.DoFinal(Encoding.UTF8.GetBytes(plainText)));
}
-
-
- public static String GenerateText(int size)
-
+ public static string GenerateText(int size)
{
-
- var textAsBytes = new Byte[size];
-
- var secureRandom = SecureRandom.GetInstance("SHA256PRNG", true);
-
-
+ byte[] textAsBytes = new byte[size];
+ SecureRandom secureRandom = SecureRandom.GetInstance("SHA256PRNG", true);
secureRandom.NextBytes(textAsBytes);
-
- return Convert.ToBase64String(textAsBytes);
-
+ return Base64.ToBase64String(textAsBytes);
}
-
-
- private static PaddedBufferedBlockCipher CreateCipher(Boolean isEncryption, String key, String iv)
-
+ private static IBufferedCipher CreateCipher(bool isEncryption, string key, string iv)
{
-
- var cipher = new PaddedBufferedBlockCipher(new CbcBlockCipher(new RijndaelEngine()), new ISO10126d2Padding());
-
- var keyParam = new KeyParameter(Convert.FromBase64String(key));
-
- ICipherParameters cipherParams = String.IsNullOrEmpty(iv) ? (ICipherParameters)keyParam : new ParametersWithIV(keyParam, Convert.FromBase64String(iv));
-
+ IBufferedCipher cipher = new PaddedBufferedBlockCipher(new CbcBlockCipher(new RijndaelEngine()), new ISO10126d2Padding());
+ KeyParameter keyParam = new KeyParameter(Base64.Decode(key));
+ ICipherParameters cipherParams = (null == iv || iv.Length < 1)
+ ? (ICipherParameters)keyParam
+ : new ParametersWithIV(keyParam, Base64.Decode(iv));
cipher.Init(isEncryption, cipherParams);
-
return cipher;
-
}
}
}
diff --git a/crypto/src/crypto/SimpleBlockResult.cs b/crypto/src/crypto/SimpleBlockResult.cs
index 01a6c4e01..6cacda63f 100644
--- a/crypto/src/crypto/SimpleBlockResult.cs
+++ b/crypto/src/crypto/SimpleBlockResult.cs
@@ -2,50 +2,52 @@
namespace Org.BouncyCastle.Crypto
{
- /// <summary>
- /// A simple block result object which just carries a byte array.
- /// </summary>
- public class SimpleBlockResult: IBlockResult
- {
- private readonly bool approvedOnlyMode;
- private readonly byte[] result;
+ /// <summary>
+ /// A simple block result object which just carries a byte array.
+ /// </summary>
+ public class SimpleBlockResult
+ : IBlockResult
+ {
+ private readonly byte[] result;
/// <summary>
/// Base constructor - a wrapper for the passed in byte array.
/// </summary>
/// <param name="result">The byte array to be wrapped.</param>
- public SimpleBlockResult (byte[] result)
- {
- this.result = result;
- }
+ public SimpleBlockResult(byte[] result)
+ {
+ this.result = result;
+ }
- /// <summary>
- /// Return the number of bytes in the result
- /// </summary>
- /// <value>The length of the result in bytes.</value>
- public int Length { get { return result.Length; } }
+ /// <summary>
+ /// Return the number of bytes in the result
+ /// </summary>
+ /// <value>The length of the result in bytes.</value>
+ public int Length
+ {
+ get { return result.Length; }
+ }
- /// <summary>
- /// Return the final result of the operation.
- /// </summary>
- /// <returns>A block of bytes, representing the result of an operation.</returns>
- public byte[] Collect()
- {
+ /// <summary>
+ /// Return the final result of the operation.
+ /// </summary>
+ /// <returns>A block of bytes, representing the result of an operation.</returns>
+ public byte[] Collect()
+ {
return result;
- }
+ }
- /// <summary>
- /// Store the final result of the operation by copying it into the destination array.
- /// </summary>
- /// <returns>The number of bytes copied into destination.</returns>
- /// <param name="destination">The byte array to copy the result into.</param>
- /// <param name="offset">The offset into destination to start copying the result at.</param>
- public int Collect(byte[] destination, int offset)
- {
- Array.Copy (result, 0, destination, offset, result.Length);
+ /// <summary>
+ /// Store the final result of the operation by copying it into the destination array.
+ /// </summary>
+ /// <returns>The number of bytes copied into destination.</returns>
+ /// <param name="destination">The byte array to copy the result into.</param>
+ /// <param name="offset">The offset into destination to start copying the result at.</param>
+ public int Collect(byte[] destination, int offset)
+ {
+ Array.Copy(result, 0, destination, offset, result.Length);
- return result.Length;
- }
- }
+ return result.Length;
+ }
+ }
}
-
diff --git a/crypto/src/crypto/operators/Asn1CipherBuilder.cs b/crypto/src/crypto/operators/Asn1CipherBuilder.cs
index adb4507a3..d5840746f 100644
--- a/crypto/src/crypto/operators/Asn1CipherBuilder.cs
+++ b/crypto/src/crypto/operators/Asn1CipherBuilder.cs
@@ -1,5 +1,7 @@
-using System.Collections;
+using System;
+using System.Collections;
using System.IO;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Nist;
using Org.BouncyCastle.Asn1.Ntt;
@@ -7,44 +9,42 @@ using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Cms;
using Org.BouncyCastle.Crypto.IO;
using Org.BouncyCastle.Crypto.Parameters;
+using Org.BouncyCastle.Crypto.Utilities;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.Utilities;
-using Org.BouncyCastle.Crypto.Utilities;
namespace Org.BouncyCastle.Crypto.Operators
{
- public class Asn1CipherBuilderWithKey:ICipherBuilderWithKey
+ public class Asn1CipherBuilderWithKey : ICipherBuilderWithKey
{
-
private readonly KeyParameter encKey;
private AlgorithmIdentifier algorithmIdentifier;
-
-
+
public Asn1CipherBuilderWithKey(DerObjectIdentifier encryptionOID, int keySize, SecureRandom random)
{
if (random == null)
{
- random= new SecureRandom();
+ random = new SecureRandom();
}
+
CipherKeyGenerator keyGen = CipherKeyGeneratorFactory.CreateKeyGenerator(encryptionOID, random);
-
+
encKey = new KeyParameter(keyGen.GenerateKey());
algorithmIdentifier = AlgorithmIdentifierFactory.GenerateEncryptionAlgID(encryptionOID, encKey.GetKey().Length * 8, random);
}
-
public object AlgorithmDetails
{
get { return algorithmIdentifier; }
}
+
public int GetMaxOutputSize(int inputLen)
{
- throw new System.NotImplementedException();
+ throw new NotImplementedException();
}
public ICipher BuildCipher(Stream stream)
{
-
object cipher = EnvelopedDataHelper.CreateContentCipher(true, encKey, algorithmIdentifier);
//
@@ -54,7 +54,7 @@ namespace Org.BouncyCastle.Crypto.Operators
if (cipher is IStreamCipher)
{
- cipher = new BufferedStreamCipher((IStreamCipher)cipher);
+ cipher = new BufferedStreamCipher((IStreamCipher)cipher);
}
if (stream == null)
@@ -62,7 +62,7 @@ namespace Org.BouncyCastle.Crypto.Operators
stream = new MemoryStream();
}
- return new BufferedCipherWrapper((IBufferedCipher)cipher,stream);
+ return new BufferedCipherWrapper((IBufferedCipher)cipher, stream);
}
public ICipherParameters Key
diff --git a/crypto/src/crypto/operators/Asn1KeyWrapper.cs b/crypto/src/crypto/operators/Asn1KeyWrapper.cs
index ffce7f63a..e2b2f8a37 100644
--- a/crypto/src/crypto/operators/Asn1KeyWrapper.cs
+++ b/crypto/src/crypto/operators/Asn1KeyWrapper.cs
@@ -1,22 +1,21 @@
using System;
using System.Collections;
-using System.Collections.Generic;
-using System.Text;
-using Org.BouncyCastle.X509;
+
using Org.BouncyCastle.Asn1;
+using Org.BouncyCastle.Asn1.Nist;
+using Org.BouncyCastle.Asn1.Oiw;
using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Asn1.X509;
-using Org.BouncyCastle.Crypto.Digests;
using Org.BouncyCastle.Crypto.Encodings;
using Org.BouncyCastle.Crypto.Engines;
-using Org.BouncyCastle.Utilities;
-using Org.BouncyCastle.Asn1.Oiw;
-using Org.BouncyCastle.Asn1.Nist;
using Org.BouncyCastle.Security;
+using Org.BouncyCastle.Utilities;
+using Org.BouncyCastle.X509;
namespace Org.BouncyCastle.Crypto.Operators
{
- public class Asn1KeyWrapper : IKeyWrapper
+ public class Asn1KeyWrapper
+ : IKeyWrapper
{
private string algorithm;
private IKeyWrapper wrapper;
@@ -47,11 +46,11 @@ namespace Org.BouncyCastle.Crypto.Operators
static KeyWrapperUtil()
{
- providerMap["RSA/NONE/OAEPWITHSHA1ANDMGF1PADDING"] = new WrapperCreator(RsaOaepWrapper.Rsa_Sha1_Oaep);
- providerMap["RSA/NONE/OAEPWITHSHA224ANDMGF1PADDING"] = new WrapperCreator(RsaOaepWrapper.Rsa_Sha224_Oaep);
- providerMap["RSA/NONE/OAEPWITHSHA256ANDMGF1PADDING"] = new WrapperCreator(RsaOaepWrapper.Rsa_Sha256_Oaep);
- providerMap["RSA/NONE/OAEPWITHSHA384ANDMGF1PADDING"] = new WrapperCreator(RsaOaepWrapper.Rsa_Sha384_Oaep);
- providerMap["RSA/NONE/OAEPWITHSHA512ANDMGF1PADDING"] = new WrapperCreator(RsaOaepWrapper.Rsa_Sha512_Oaep);
+ providerMap.Add("RSA/NONE/OAEPWITHSHA1ANDMGF1PADDING", new RsaOaepWrapperProvider(OiwObjectIdentifiers.IdSha1));
+ providerMap.Add("RSA/NONE/OAEPWITHSHA224ANDMGF1PADDING", new RsaOaepWrapperProvider(NistObjectIdentifiers.IdSha224));
+ providerMap.Add("RSA/NONE/OAEPWITHSHA256ANDMGF1PADDING", new RsaOaepWrapperProvider(NistObjectIdentifiers.IdSha256));
+ providerMap.Add("RSA/NONE/OAEPWITHSHA384ANDMGF1PADDING", new RsaOaepWrapperProvider(NistObjectIdentifiers.IdSha384));
+ providerMap.Add("RSA/NONE/OAEPWITHSHA512ANDMGF1PADDING", new RsaOaepWrapperProvider(NistObjectIdentifiers.IdSha512));
}
public static IKeyWrapper WrapperForName(string algorithm, ICipherParameters parameters)
@@ -59,77 +58,28 @@ namespace Org.BouncyCastle.Crypto.Operators
WrapperProvider provider = (WrapperProvider)providerMap[Strings.ToUpperCase(algorithm)];
if (provider == null)
- {
throw new ArgumentException("could not resolve " + algorithm + " to a KeyWrapper");
- }
- return (IKeyWrapper)provider.createWrapper(true, parameters);
+ return (IKeyWrapper)provider.CreateWrapper(true, parameters);
}
public static IKeyUnwrapper UnwrapperForName(string algorithm, ICipherParameters parameters)
{
WrapperProvider provider = (WrapperProvider)providerMap[Strings.ToUpperCase(algorithm)];
if (provider == null)
- {
throw new ArgumentException("could not resolve " + algorithm + " to a KeyUnwrapper");
- }
-
- return (IKeyUnwrapper)provider.createWrapper(false, parameters);
- }
- }
-
- internal delegate object WrapperCreatorDelegate(bool forWrapping, ICipherParameters parameters);
-
- /// <summary>
- /// Wraps delegate and implements the WrapperProvider Interface.
- /// </summary>
- internal class WrapperCreator : WrapperProvider
- {
- private readonly WrapperCreatorDelegate creator;
- public WrapperCreator(WrapperCreatorDelegate creator)
- {
- this.creator = creator;
- }
-
- public object createWrapper(bool forWrapping, ICipherParameters parameters)
- {
- return this.creator.Invoke(forWrapping, parameters);
+ return (IKeyUnwrapper)provider.CreateWrapper(false, parameters);
}
}
internal interface WrapperProvider
{
- object createWrapper(bool forWrapping, ICipherParameters parameters);
+ object CreateWrapper(bool forWrapping, ICipherParameters parameters);
}
internal class RsaOaepWrapper : IKeyWrapper, IKeyUnwrapper
{
- internal static object Rsa_Sha1_Oaep(bool forWrapping, ICipherParameters parameters)
- {
- return new RsaOaepWrapper(forWrapping, parameters, OiwObjectIdentifiers.IdSha1);
- }
-
- internal static object Rsa_Sha224_Oaep(bool forWrapping, ICipherParameters parameters)
- {
- return new RsaOaepWrapper(forWrapping, parameters, NistObjectIdentifiers.IdSha224);
- }
-
- internal static object Rsa_Sha256_Oaep(bool forWrapping, ICipherParameters parameters)
- {
- return new RsaOaepWrapper(forWrapping, parameters, NistObjectIdentifiers.IdSha256);
- }
-
- internal static object Rsa_Sha384_Oaep(bool forWrapping, ICipherParameters parameters)
- {
- return new RsaOaepWrapper(forWrapping, parameters, NistObjectIdentifiers.IdSha384);
- }
-
- internal static object Rsa_Sha512_Oaep(bool forWrapping, ICipherParameters parameters)
- {
- return new RsaOaepWrapper(forWrapping, parameters, NistObjectIdentifiers.IdSha512);
- }
-
private readonly AlgorithmIdentifier algId;
private readonly IAsymmetricBlockCipher engine;
@@ -149,10 +99,7 @@ namespace Org.BouncyCastle.Crypto.Operators
public object AlgorithmDetails
{
- get
- {
- return algId;
- }
+ get { return algId; }
}
public IBlockResult Unwrap(byte[] cipherText, int offset, int length)
@@ -165,4 +112,20 @@ namespace Org.BouncyCastle.Crypto.Operators
return new SimpleBlockResult(engine.ProcessBlock(keyData, 0, keyData.Length));
}
}
+
+ internal class RsaOaepWrapperProvider
+ : WrapperProvider
+ {
+ private readonly DerObjectIdentifier digestOid;
+
+ internal RsaOaepWrapperProvider(DerObjectIdentifier digestOid)
+ {
+ this.digestOid = digestOid;
+ }
+
+ object WrapperProvider.CreateWrapper(bool forWrapping, ICipherParameters parameters)
+ {
+ return new RsaOaepWrapper(forWrapping, parameters, digestOid);
+ }
+ }
}
diff --git a/crypto/src/crypto/operators/CmsContentEncryptorBuilder.cs b/crypto/src/crypto/operators/CmsContentEncryptorBuilder.cs
index da9e32f9e..690e970cb 100644
--- a/crypto/src/crypto/operators/CmsContentEncryptorBuilder.cs
+++ b/crypto/src/crypto/operators/CmsContentEncryptorBuilder.cs
@@ -1,5 +1,7 @@
-using System.Collections;
+using System;
+using System.Collections;
using System.IO;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Nist;
using Org.BouncyCastle.Asn1.Ntt;
@@ -16,25 +18,24 @@ namespace Org.BouncyCastle.Operators
{
public class CmsContentEncryptorBuilder
{
- private static readonly IDictionary keySizes = Platform.CreateHashtable();
+ private static readonly IDictionary KeySizes = Platform.CreateHashtable();
static CmsContentEncryptorBuilder()
{
- keySizes[NistObjectIdentifiers.IdAes128Cbc] = 128;
- keySizes[NistObjectIdentifiers.IdAes192Cbc] =192;
- keySizes[NistObjectIdentifiers.IdAes256Cbc] =256;
+ KeySizes[NistObjectIdentifiers.IdAes128Cbc] = 128;
+ KeySizes[NistObjectIdentifiers.IdAes192Cbc] = 192;
+ KeySizes[NistObjectIdentifiers.IdAes256Cbc] = 256;
-
- keySizes[NttObjectIdentifiers.IdCamellia128Cbc] =128;
- keySizes[NttObjectIdentifiers.IdCamellia192Cbc] =192;
- keySizes[NttObjectIdentifiers.IdCamellia256Cbc] =256;
+ KeySizes[NttObjectIdentifiers.IdCamellia128Cbc] = 128;
+ KeySizes[NttObjectIdentifiers.IdCamellia192Cbc] = 192;
+ KeySizes[NttObjectIdentifiers.IdCamellia256Cbc] = 256;
}
- private static int getKeySize(DerObjectIdentifier oid)
+ private static int GetKeySize(DerObjectIdentifier oid)
{
- if (keySizes.Contains(oid))
+ if (KeySizes.Contains(oid))
{
- return (int)keySizes[oid];
+ return (int)KeySizes[oid];
}
return -1;
@@ -43,11 +44,12 @@ namespace Org.BouncyCastle.Operators
private readonly DerObjectIdentifier encryptionOID;
private readonly int keySize;
-
- private EnvelopedDataHelper helper = new EnvelopedDataHelper();
- private SecureRandom random;
+ private readonly EnvelopedDataHelper helper = new EnvelopedDataHelper();
+ //private SecureRandom random;
- public CmsContentEncryptorBuilder(DerObjectIdentifier encryptionOID):this(encryptionOID, getKeySize(encryptionOID)) {
+ public CmsContentEncryptorBuilder(DerObjectIdentifier encryptionOID)
+ : this(encryptionOID, GetKeySize(encryptionOID))
+ {
}
public CmsContentEncryptorBuilder(DerObjectIdentifier encryptionOID, int keySize)
@@ -58,7 +60,8 @@ namespace Org.BouncyCastle.Operators
public ICipherBuilderWithKey Build()
{
- return new Asn1CipherBuilderWithKey(encryptionOID,keySize,random);
+ //return new Asn1CipherBuilderWithKey(encryptionOID, keySize, random);
+ return new Asn1CipherBuilderWithKey(encryptionOID, keySize, null);
}
}
}
diff --git a/crypto/src/crypto/operators/CmsKeyTransRecipientInfoGenerator.cs b/crypto/src/crypto/operators/CmsKeyTransRecipientInfoGenerator.cs
index 997231b6e..b73c41dbd 100644
--- a/crypto/src/crypto/operators/CmsKeyTransRecipientInfoGenerator.cs
+++ b/crypto/src/crypto/operators/CmsKeyTransRecipientInfoGenerator.cs
@@ -1,16 +1,20 @@
-using Org.BouncyCastle.Asn1.X509;
+using System;
+
+using Org.BouncyCastle.Asn1;
+using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Cms;
using Org.BouncyCastle.Crypto;
-using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.X509;
namespace Org.BouncyCastle.Operators
{
- public class CmsKeyTransRecipientInfoGenerator: KeyTransRecipientInfoGenerator
+ public class CmsKeyTransRecipientInfoGenerator
+ : KeyTransRecipientInfoGenerator
{
- private IKeyWrapper keyWrapper;
+ private readonly IKeyWrapper keyWrapper;
- public CmsKeyTransRecipientInfoGenerator(X509Certificate recipCert, IKeyWrapper keyWrapper): base(new Asn1.Cms.IssuerAndSerialNumber(recipCert.IssuerDN, new DerInteger(recipCert.SerialNumber)))
+ public CmsKeyTransRecipientInfoGenerator(X509Certificate recipCert, IKeyWrapper keyWrapper)
+ : base(new Asn1.Cms.IssuerAndSerialNumber(recipCert.IssuerDN, new DerInteger(recipCert.SerialNumber)))
{
this.keyWrapper = keyWrapper;
this.RecipientCert = recipCert;
@@ -24,10 +28,7 @@ namespace Org.BouncyCastle.Operators
protected override AlgorithmIdentifier AlgorithmDetails
{
- get
- {
- return (AlgorithmIdentifier)keyWrapper.AlgorithmDetails;
- }
+ get { return (AlgorithmIdentifier)keyWrapper.AlgorithmDetails; }
}
protected override byte[] GenerateWrappedKey(Crypto.Parameters.KeyParameter contentKey)
diff --git a/crypto/src/crypto/operators/GenericKey.cs b/crypto/src/crypto/operators/GenericKey.cs
index b2df74661..89512c7b0 100644
--- a/crypto/src/crypto/operators/GenericKey.cs
+++ b/crypto/src/crypto/operators/GenericKey.cs
@@ -1,18 +1,17 @@
using System;
-using System.Collections.Generic;
-using System.Text;
+
using Org.BouncyCastle.Asn1.X509;
namespace Org.BouncyCastle.Crypto.Operators
{
public class GenericKey
{
- private AlgorithmIdentifier algorithmIdentifier;
- private object representation;
+ private readonly AlgorithmIdentifier algorithmIdentifier;
+ private readonly object representation;
public GenericKey(object representation)
{
- algorithmIdentifier = null;
+ this.algorithmIdentifier = null;
this.representation = representation;
}
diff --git a/crypto/src/crypto/parameters/ECGOST3410Parameters.cs b/crypto/src/crypto/parameters/ECGOST3410Parameters.cs
index a3aa1953c..6abcb1647 100644
--- a/crypto/src/crypto/parameters/ECGOST3410Parameters.cs
+++ b/crypto/src/crypto/parameters/ECGOST3410Parameters.cs
@@ -1,12 +1,14 @@
-using Org.BouncyCastle.Asn1;
+using System;
+
+using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Math;
using Org.BouncyCastle.Math.EC;
namespace Org.BouncyCastle.Crypto.Parameters
{
- public class ECGost3410Parameters : ECNamedDomainParameters
+ public class ECGost3410Parameters
+ : ECNamedDomainParameters
{
-
private readonly DerObjectIdentifier _publicKeyParamSet;
private readonly DerObjectIdentifier _digestParamSet;
private readonly DerObjectIdentifier _encryptionParamSet;
@@ -30,22 +32,22 @@ namespace Org.BouncyCastle.Crypto.Parameters
ECNamedDomainParameters dp,
DerObjectIdentifier publicKeyParamSet,
DerObjectIdentifier digestParamSet,
- DerObjectIdentifier encryptionParamSet) : base(dp.Name, dp.Curve, dp.G, dp.N, dp.H, dp.GetSeed())
+ DerObjectIdentifier encryptionParamSet)
+ : base(dp.Name, dp.Curve, dp.G, dp.N, dp.H, dp.GetSeed())
{
this._publicKeyParamSet = publicKeyParamSet;
this._digestParamSet = digestParamSet;
this._encryptionParamSet = encryptionParamSet;
}
-
public ECGost3410Parameters(ECDomainParameters dp, DerObjectIdentifier publicKeyParamSet,
DerObjectIdentifier digestParamSet,
- DerObjectIdentifier encryptionParamSet) : base(publicKeyParamSet, dp.Curve, dp.G, dp.N, dp.H, dp.GetSeed())
+ DerObjectIdentifier encryptionParamSet)
+ : base(publicKeyParamSet, dp.Curve, dp.G, dp.N, dp.H, dp.GetSeed())
{
this._publicKeyParamSet = publicKeyParamSet;
this._digestParamSet = digestParamSet;
this._encryptionParamSet = encryptionParamSet;
}
-
}
-}
\ No newline at end of file
+}
diff --git a/crypto/src/crypto/parameters/ECNamedDomainParameters.cs b/crypto/src/crypto/parameters/ECNamedDomainParameters.cs
index 34e390a8f..4b8e2558f 100644
--- a/crypto/src/crypto/parameters/ECNamedDomainParameters.cs
+++ b/crypto/src/crypto/parameters/ECNamedDomainParameters.cs
@@ -1,35 +1,42 @@
-using Org.BouncyCastle.Asn1;
+using System;
+
+using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Math;
using Org.BouncyCastle.Math.EC;
namespace Org.BouncyCastle.Crypto.Parameters
{
- public class ECNamedDomainParameters : ECDomainParameters
+ public class ECNamedDomainParameters
+ : ECDomainParameters
{
- private DerObjectIdentifier name;
+ private readonly DerObjectIdentifier name;
public DerObjectIdentifier Name
{
get { return name; }
}
- public ECNamedDomainParameters(DerObjectIdentifier name, ECDomainParameters dp) : this(name, dp.curve, dp.g, dp.n, dp.h, dp.seed)
- { }
-
+ public ECNamedDomainParameters(DerObjectIdentifier name, ECDomainParameters dp)
+ : this(name, dp.curve, dp.g, dp.n, dp.h, dp.seed)
+ {
+ }
- public ECNamedDomainParameters(DerObjectIdentifier name, ECCurve curve, ECPoint g, BigInteger n) : base(curve, g, n)
+ public ECNamedDomainParameters(DerObjectIdentifier name, ECCurve curve, ECPoint g, BigInteger n)
+ : base(curve, g, n)
{
this.name = name;
}
- public ECNamedDomainParameters(DerObjectIdentifier name, ECCurve curve, ECPoint g, BigInteger n, BigInteger h) : base(curve, g, n, h)
+ public ECNamedDomainParameters(DerObjectIdentifier name, ECCurve curve, ECPoint g, BigInteger n, BigInteger h)
+ : base(curve, g, n, h)
{
this.name = name;
}
- public ECNamedDomainParameters(DerObjectIdentifier name, ECCurve curve, ECPoint g, BigInteger n, BigInteger h, byte[] seed) : base(curve, g, n, h, seed)
+ public ECNamedDomainParameters(DerObjectIdentifier name, ECCurve curve, ECPoint g, BigInteger n, BigInteger h, byte[] seed)
+ : base(curve, g, n, h, seed)
{
this.name = name;
}
}
-}
\ No newline at end of file
+}
diff --git a/crypto/src/crypto/signers/DsaDigestSigner.cs b/crypto/src/crypto/signers/DsaDigestSigner.cs
index 7fd8f535f..15444a0f7 100644
--- a/crypto/src/crypto/signers/DsaDigestSigner.cs
+++ b/crypto/src/crypto/signers/DsaDigestSigner.cs
@@ -126,7 +126,7 @@ namespace Org.BouncyCastle.Crypto.Signers
return dsa.VerifySignature(hash, sig[0], sig[1]);
}
- catch (Exception e)
+ catch (Exception)
{
return false;
}
diff --git a/crypto/src/crypto/tls/AbstractTlsClient.cs b/crypto/src/crypto/tls/AbstractTlsClient.cs
index bddbab87f..356aab8d2 100644
--- a/crypto/src/crypto/tls/AbstractTlsClient.cs
+++ b/crypto/src/crypto/tls/AbstractTlsClient.cs
@@ -34,7 +34,7 @@ namespace Org.BouncyCastle.Crypto.Tls
{
switch (extensionType)
{
- case ExtensionType.elliptic_curves:
+ case ExtensionType.supported_groups:
/*
* Exception added based on field reports that some servers do send this, although the
* Supported Elliptic Curves Extension is clearly intended to be client-only. If
@@ -198,7 +198,7 @@ namespace Org.BouncyCastle.Crypto.Tls
*/
CheckForUnexpectedServerExtension(serverExtensions, ExtensionType.signature_algorithms);
- CheckForUnexpectedServerExtension(serverExtensions, ExtensionType.elliptic_curves);
+ CheckForUnexpectedServerExtension(serverExtensions, ExtensionType.supported_groups);
if (TlsEccUtilities.IsEccCipherSuite(this.mSelectedCipherSuite))
{
diff --git a/crypto/src/crypto/tls/DtlsReliableHandshake.cs b/crypto/src/crypto/tls/DtlsReliableHandshake.cs
index 396ea7483..8715cd799 100644
--- a/crypto/src/crypto/tls/DtlsReliableHandshake.cs
+++ b/crypto/src/crypto/tls/DtlsReliableHandshake.cs
@@ -114,7 +114,7 @@ namespace Org.BouncyCastle.Crypto.Tls
}
}
}
- catch (IOException e)
+ catch (IOException)
{
// NOTE: Assume this is a timeout for the moment
}
diff --git a/crypto/src/crypto/tls/TlsEccUtilities.cs b/crypto/src/crypto/tls/TlsEccUtilities.cs
index fb31e1b07..7b7e89f84 100644
--- a/crypto/src/crypto/tls/TlsEccUtilities.cs
+++ b/crypto/src/crypto/tls/TlsEccUtilities.cs
@@ -26,7 +26,7 @@ namespace Org.BouncyCastle.Crypto.Tls
public static void AddSupportedEllipticCurvesExtension(IDictionary extensions, int[] namedCurves)
{
- extensions[ExtensionType.elliptic_curves] = CreateSupportedEllipticCurvesExtension(namedCurves);
+ extensions[ExtensionType.supported_groups] = CreateSupportedEllipticCurvesExtension(namedCurves);
}
public static void AddSupportedPointFormatsExtension(IDictionary extensions, byte[] ecPointFormats)
@@ -36,7 +36,7 @@ namespace Org.BouncyCastle.Crypto.Tls
public static int[] GetSupportedEllipticCurvesExtension(IDictionary extensions)
{
- byte[] extensionData = TlsUtilities.GetExtensionData(extensions, ExtensionType.elliptic_curves);
+ byte[] extensionData = TlsUtilities.GetExtensionData(extensions, ExtensionType.supported_groups);
return extensionData == null ? null : ReadSupportedEllipticCurvesExtension(extensionData);
}
diff --git a/crypto/src/crypto/tls/TlsUtilities.cs b/crypto/src/crypto/tls/TlsUtilities.cs
index e6bd253aa..9f4aac651 100644
--- a/crypto/src/crypto/tls/TlsUtilities.cs
+++ b/crypto/src/crypto/tls/TlsUtilities.cs
@@ -2341,7 +2341,7 @@ namespace Org.BouncyCastle.Crypto.Tls
{
keyExchangeAlgorithm = GetKeyExchangeAlgorithm(cipherSuite);
}
- catch (IOException e)
+ catch (IOException)
{
return true;
}
diff --git a/crypto/src/crypto/util/AlgorithmIdentifierFactory.cs b/crypto/src/crypto/util/AlgorithmIdentifierFactory.cs
index 20eac84ce..ad4d31ede 100644
--- a/crypto/src/crypto/util/AlgorithmIdentifierFactory.cs
+++ b/crypto/src/crypto/util/AlgorithmIdentifierFactory.cs
@@ -1,4 +1,5 @@
using System;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Kisa;
using Org.BouncyCastle.Asn1.Misc;
diff --git a/crypto/src/crypto/util/CipherFactory.cs b/crypto/src/crypto/util/CipherFactory.cs
index 0a4010b42..f5998267d 100644
--- a/crypto/src/crypto/util/CipherFactory.cs
+++ b/crypto/src/crypto/util/CipherFactory.cs
@@ -1,4 +1,5 @@
using System;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Kisa;
using Org.BouncyCastle.Asn1.Misc;
@@ -11,15 +12,13 @@ using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Modes;
using Org.BouncyCastle.Crypto.Paddings;
using Org.BouncyCastle.Crypto.Parameters;
-using Org.BouncyCastle.Crypto.Utilities;
-namespace Org.BouncyCastle.Crypto.Utilites
+namespace Org.BouncyCastle.Crypto.Utilities
{
public class CipherFactory
{
private CipherFactory()
{
-
}
private static readonly short[] rc2Ekb =
@@ -50,15 +49,12 @@ namespace Org.BouncyCastle.Crypto.Utilites
if (encAlg.Equals(PkcsObjectIdentifiers.rc4))
{
IStreamCipher cipher = new RC4Engine();
-
cipher.Init(forEncryption, encKey);
-
return cipher;
}
else
{
BufferedBlockCipher cipher = CreateCipher(encryptionAlgID.Algorithm);
-
Asn1Object sParams = encryptionAlgID.Parameters.ToAsn1Object();
if (sParams != null && !(sParams is DerNull))
@@ -110,7 +106,6 @@ namespace Org.BouncyCastle.Crypto.Utilites
return cipher;
}
-
}
private static BufferedBlockCipher CreateCipher(DerObjectIdentifier algorithm)
@@ -118,8 +113,8 @@ namespace Org.BouncyCastle.Crypto.Utilites
IBlockCipher cipher;
if (NistObjectIdentifiers.IdAes128Cbc.Equals(algorithm)
- || NistObjectIdentifiers.IdAes192Cbc.Equals(algorithm)
- || NistObjectIdentifiers.IdAes256Cbc.Equals(algorithm))
+ || NistObjectIdentifiers.IdAes192Cbc.Equals(algorithm)
+ || NistObjectIdentifiers.IdAes256Cbc.Equals(algorithm))
{
cipher = new CbcBlockCipher(new AesEngine());
}
@@ -146,6 +141,5 @@ namespace Org.BouncyCastle.Crypto.Utilites
return new PaddedBufferedBlockCipher(cipher, new Pkcs7Padding());
}
-
}
}
diff --git a/crypto/src/crypto/util/CipherKeyGeneratorFactory.cs b/crypto/src/crypto/util/CipherKeyGeneratorFactory.cs
index f714c40fd..efaad138c 100644
--- a/crypto/src/crypto/util/CipherKeyGeneratorFactory.cs
+++ b/crypto/src/crypto/util/CipherKeyGeneratorFactory.cs
@@ -1,4 +1,5 @@
using System;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Kisa;
using Org.BouncyCastle.Asn1.Nist;
@@ -14,74 +15,69 @@ namespace Org.BouncyCastle.Crypto.Utilities
{
private CipherKeyGeneratorFactory()
{
-
}
/**
- * Create a key generator for the passed in Object Identifier.
- *
- * @param algorithm the Object Identifier indicating the algorithn the generator is for.
- * @param random a source of random to initialise the generator with.
- * @return an initialised CipherKeyGenerator.
- * @throws IllegalArgumentException if the algorithm cannot be identified.
- */
+ * Create a key generator for the passed in Object Identifier.
+ *
+ * @param algorithm the Object Identifier indicating the algorithn the generator is for.
+ * @param random a source of random to initialise the generator with.
+ * @return an initialised CipherKeyGenerator.
+ * @throws IllegalArgumentException if the algorithm cannot be identified.
+ */
public static CipherKeyGenerator CreateKeyGenerator(DerObjectIdentifier algorithm, SecureRandom random)
{
if (NistObjectIdentifiers.IdAes128Cbc.Equals(algorithm))
{
- return createCipherKeyGenerator(random, 128);
+ return CreateCipherKeyGenerator(random, 128);
}
else if (NistObjectIdentifiers.IdAes192Cbc.Equals(algorithm))
{
- return createCipherKeyGenerator(random, 192);
+ return CreateCipherKeyGenerator(random, 192);
}
else if (NistObjectIdentifiers.IdAes256Cbc.Equals(algorithm))
{
- return createCipherKeyGenerator(random, 256);
+ return CreateCipherKeyGenerator(random, 256);
}
else if (PkcsObjectIdentifiers.DesEde3Cbc.Equals(algorithm))
{
DesEdeKeyGenerator keyGen = new DesEdeKeyGenerator();
-
keyGen.Init(new KeyGenerationParameters(random, 192));
-
return keyGen;
}
else if (NttObjectIdentifiers.IdCamellia128Cbc.Equals(algorithm))
{
- return createCipherKeyGenerator(random, 128);
+ return CreateCipherKeyGenerator(random, 128);
}
else if (NttObjectIdentifiers.IdCamellia192Cbc.Equals(algorithm))
{
- return createCipherKeyGenerator(random, 192);
+ return CreateCipherKeyGenerator(random, 192);
}
else if (NttObjectIdentifiers.IdCamellia256Cbc.Equals(algorithm))
{
- return createCipherKeyGenerator(random, 256);
+ return CreateCipherKeyGenerator(random, 256);
}
else if (KisaObjectIdentifiers.IdSeedCbc.Equals(algorithm))
{
- return createCipherKeyGenerator(random, 128);
+ return CreateCipherKeyGenerator(random, 128);
}
else if (AlgorithmIdentifierFactory.CAST5_CBC.Equals(algorithm))
{
- return createCipherKeyGenerator(random, 128);
+ return CreateCipherKeyGenerator(random, 128);
}
else if (OiwObjectIdentifiers.DesCbc.Equals(algorithm))
{
DesKeyGenerator keyGen = new DesKeyGenerator();
-
keyGen.Init(new KeyGenerationParameters(random, 64));
-
return keyGen;
}
else if (PkcsObjectIdentifiers.rc4.Equals(algorithm))
{
- return createCipherKeyGenerator(random, 128);
+ return CreateCipherKeyGenerator(random, 128);
}
else if (PkcsObjectIdentifiers.RC2Cbc.Equals(algorithm))
{
- return createCipherKeyGenerator(random, 128);
+ return CreateCipherKeyGenerator(random, 128);
}
else
{
@@ -89,12 +85,10 @@ namespace Org.BouncyCastle.Crypto.Utilities
}
}
- private static CipherKeyGenerator createCipherKeyGenerator(SecureRandom random, int keySize)
+ private static CipherKeyGenerator CreateCipherKeyGenerator(SecureRandom random, int keySize)
{
CipherKeyGenerator keyGen = new CipherKeyGenerator();
-
keyGen.Init(new KeyGenerationParameters(random, keySize));
-
return keyGen;
}
}
diff --git a/crypto/src/math/ec/rfc8032/Ed25519.cs b/crypto/src/math/ec/rfc8032/Ed25519.cs
index 6dc52a865..702c48dd3 100644
--- a/crypto/src/math/ec/rfc8032/Ed25519.cs
+++ b/crypto/src/math/ec/rfc8032/Ed25519.cs
@@ -959,7 +959,7 @@ namespace Org.BouncyCastle.Math.EC.Rfc8032
PointSetNeutral(r);
int bit = 255;
- while (bit > 0 && (ws_b[bit] | ws_p[bit]) == 0)
+ while (bit > 0 && ((byte)ws_b[bit] | (byte)ws_p[bit]) == 0)
{
--bit;
}
diff --git a/crypto/src/math/ec/rfc8032/Ed448.cs b/crypto/src/math/ec/rfc8032/Ed448.cs
index 774052082..597062269 100644
--- a/crypto/src/math/ec/rfc8032/Ed448.cs
+++ b/crypto/src/math/ec/rfc8032/Ed448.cs
@@ -1046,7 +1046,7 @@ namespace Org.BouncyCastle.Math.EC.Rfc8032
PointSetNeutral(r);
int bit = 447;
- while (bit > 0 && (ws_b[bit] | ws_p[bit]) == 0)
+ while (bit > 0 && ((byte)ws_b[bit] | (byte)ws_p[bit]) == 0)
{
--bit;
}
diff --git a/crypto/src/pkcs/Pkcs8EncryptedPrivateKeyInfo.cs b/crypto/src/pkcs/Pkcs8EncryptedPrivateKeyInfo.cs
index 4c4ae83eb..5882dee38 100644
--- a/crypto/src/pkcs/Pkcs8EncryptedPrivateKeyInfo.cs
+++ b/crypto/src/pkcs/Pkcs8EncryptedPrivateKeyInfo.cs
@@ -1,10 +1,11 @@
-
+using System;
+using System.IO;
+
using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
+using Org.BouncyCastle.Utilities;
using Org.BouncyCastle.Utilities.IO;
-using System;
-using System.IO;
namespace Org.BouncyCastle.Pkcs
{
@@ -90,12 +91,11 @@ namespace Org.BouncyCastle.Pkcs
ICipher encIn = decryptorBuilder.BuildCipher(new MemoryInputStream(encryptedPrivateKeyInfo.GetEncryptedData()));
- using (Stream strm = encIn.Stream)
- {
- byte[] data = Streams.ReadAll(encIn.Stream);
-
- return PrivateKeyInfo.GetInstance(data);
- }
+ Stream strm = encIn.Stream;
+ byte[] data = Streams.ReadAll(encIn.Stream);
+ Platform.Dispose(strm);
+
+ return PrivateKeyInfo.GetInstance(data);
}
catch (Exception e)
{
diff --git a/crypto/src/pkcs/Pkcs8EncryptedPrivateKeyInfoBuilder.cs b/crypto/src/pkcs/Pkcs8EncryptedPrivateKeyInfoBuilder.cs
index 3b05deea7..8f751492f 100644
--- a/crypto/src/pkcs/Pkcs8EncryptedPrivateKeyInfoBuilder.cs
+++ b/crypto/src/pkcs/Pkcs8EncryptedPrivateKeyInfoBuilder.cs
@@ -1,11 +1,11 @@
-using Org.BouncyCastle.Asn1.Pkcs;
+using System;
+using System.IO;
+
+using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
+using Org.BouncyCastle.Utilities;
using Org.BouncyCastle.Utilities.IO;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Text;
namespace Org.BouncyCastle.Pkcs
{
@@ -36,10 +36,9 @@ namespace Org.BouncyCastle.Pkcs
ICipher cOut = encryptor.BuildCipher(bOut);
byte[] keyData = privateKeyInfo.GetEncoded();
- using (var str = cOut.Stream)
- {
- str.Write(keyData, 0, keyData.Length);
- }
+ Stream str = cOut.Stream;
+ str.Write(keyData, 0, keyData.Length);
+ Platform.Dispose(str);
return new Pkcs8EncryptedPrivateKeyInfo(new EncryptedPrivateKeyInfo((AlgorithmIdentifier)encryptor.AlgorithmDetails, bOut.ToArray()));
}
diff --git a/crypto/src/pkcs/PkcsException.cs b/crypto/src/pkcs/PkcsException.cs
index f82d36724..7a69ff736 100644
--- a/crypto/src/pkcs/PkcsException.cs
+++ b/crypto/src/pkcs/PkcsException.cs
@@ -5,13 +5,16 @@ namespace Org.BouncyCastle.Pkcs
/// <summary>
/// Base exception for PKCS related issues.
/// </summary>
- public class PkcsException : Exception
+ public class PkcsException
+ : Exception
{
- public PkcsException(String message) : base(message)
+ public PkcsException(string message)
+ : base(message)
{
}
- public PkcsException(String message, Exception underlying) : base(message, underlying)
+ public PkcsException(string message, Exception underlying)
+ : base(message, underlying)
{
}
}
diff --git a/crypto/src/pkix/PkixCertPathValidatorUtilities.cs b/crypto/src/pkix/PkixCertPathValidatorUtilities.cs
index 2ccaa32ce..55f4afb19 100644
--- a/crypto/src/pkix/PkixCertPathValidatorUtilities.cs
+++ b/crypto/src/pkix/PkixCertPathValidatorUtilities.cs
@@ -151,7 +151,7 @@ namespace Org.BouncyCastle.Pkix
{
return FindTrustAnchor(cert, trustAnchors) != null;
}
- catch (Exception e)
+ catch (Exception)
{
return false;
}
diff --git a/crypto/src/security/DigestUtilities.cs b/crypto/src/security/DigestUtilities.cs
index 7685e3384..a17a9abee 100644
--- a/crypto/src/security/DigestUtilities.cs
+++ b/crypto/src/security/DigestUtilities.cs
@@ -259,6 +259,11 @@ namespace Org.BouncyCastle.Security
return (string) algorithms[oid.Id];
}
+ public static byte[] CalculateDigest(DerObjectIdentifier id, byte[] input)
+ {
+ return CalculateDigest(id.Id, input);
+ }
+
public static byte[] CalculateDigest(string algorithm, byte[] input)
{
IDigest digest = GetDigest(algorithm);
diff --git a/crypto/src/util/io/MemoryInputStream.cs b/crypto/src/util/io/MemoryInputStream.cs
index d353314ee..cdc5aafb3 100644
--- a/crypto/src/util/io/MemoryInputStream.cs
+++ b/crypto/src/util/io/MemoryInputStream.cs
@@ -1,13 +1,19 @@
-using System.IO;
+using System;
+using System.IO;
namespace Org.BouncyCastle.Utilities.IO
{
- public class MemoryInputStream : MemoryStream
+ public class MemoryInputStream
+ : MemoryStream
{
- public MemoryInputStream(byte[] buffer) : base(buffer, false)
+ public MemoryInputStream(byte[] buffer)
+ : base(buffer, false)
{
}
- public sealed override bool CanWrite { get { return false; } }
+ public sealed override bool CanWrite
+ {
+ get { return false; }
+ }
}
}
diff --git a/crypto/src/util/io/MemoryOutputStream.cs b/crypto/src/util/io/MemoryOutputStream.cs
index a6de64680..828f23b4a 100644
--- a/crypto/src/util/io/MemoryOutputStream.cs
+++ b/crypto/src/util/io/MemoryOutputStream.cs
@@ -1,10 +1,14 @@
-
+using System;
using System.IO;
namespace Org.BouncyCastle.Utilities.IO
{
- public class MemoryOutputStream: MemoryStream
+ public class MemoryOutputStream
+ : MemoryStream
{
- public sealed override bool CanRead { get { return false; } }
+ public sealed override bool CanRead
+ {
+ get { return false; }
+ }
}
}
diff --git a/crypto/src/x509/X509Certificate.cs b/crypto/src/x509/X509Certificate.cs
index 6d7bd7a61..6f2f40411 100644
--- a/crypto/src/x509/X509Certificate.cs
+++ b/crypto/src/x509/X509Certificate.cs
@@ -8,13 +8,13 @@ using Org.BouncyCastle.Asn1.Misc;
using Org.BouncyCastle.Asn1.Utilities;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
+using Org.BouncyCastle.Crypto.Operators;
using Org.BouncyCastle.Math;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.Security.Certificates;
using Org.BouncyCastle.Utilities;
using Org.BouncyCastle.Utilities.Encoders;
using Org.BouncyCastle.X509.Extension;
-using Org.BouncyCastle.Crypto.Operators;
namespace Org.BouncyCastle.X509
{
@@ -27,8 +27,8 @@ namespace Org.BouncyCastle.X509
// , PKCS12BagAttributeCarrier
{
private readonly X509CertificateStructure c;
-// private Hashtable pkcs12Attributes = new Hashtable();
-// private ArrayList pkcs12Ordering = new ArrayList();
+ //private Hashtable pkcs12Attributes = Platform.CreateHashtable();
+ //private ArrayList pkcs12Ordering = Platform.CreateArrayList();
private readonly BasicConstraints basicConstraints;
private readonly bool[] keyUsage;
diff --git a/crypto/test/UnitTests.csproj b/crypto/test/UnitTests.csproj
index d36877026..11b20066e 100644
--- a/crypto/test/UnitTests.csproj
+++ b/crypto/test/UnitTests.csproj
@@ -124,6 +124,7 @@
<Compile Include="src\asn1\test\X509ExtensionsTest.cs" />
<Compile Include="src\asn1\test\X509NameTest.cs" />
<Compile Include="src\asn1\test\X9Test.cs" />
+ <Compile Include="src\cmp\test\ProtectedMessageTest.cs" />
<Compile Include="src\cms\test\AllTests.cs" />
<Compile Include="src\cms\test\AuthenticatedDataStreamTest.cs" />
<Compile Include="src\cms\test\AuthenticatedDataTest.cs" />
@@ -192,7 +193,6 @@
<Compile Include="src\crypto\test\ECTest.cs" />
<Compile Include="src\crypto\test\Ed25519Test.cs" />
<Compile Include="src\crypto\test\Ed448Test.cs" />
- <Compile Include="src\crypto\test\EGOST3410_2012SignatureTest.cs" />
<Compile Include="src\crypto\test\ElGamalTest.cs" />
<Compile Include="src\crypto\test\EqualsHashCodeTest.cs" />
<Compile Include="src\crypto\test\GCMTest.cs" />
@@ -389,7 +389,6 @@
<Compile Include="src\pkcs\test\EncryptedPrivateKeyInfoTest.cs" />
<Compile Include="src\pkcs\test\PKCS10Test.cs" />
<Compile Include="src\pkcs\test\PKCS12StoreTest.cs" />
- <Compile Include="src\ProtectedMessageTest.cs" />
<Compile Include="src\security\test\SecureRandomTest.cs" />
<Compile Include="src\security\test\TestDigestUtil.cs" />
<Compile Include="src\security\test\TestDotNetUtil.cs" />
@@ -1321,7 +1320,4 @@
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
- <ItemGroup>
- <Folder Include="src\NewFolder1\" />
- </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/crypto/test/src/cmp/test/ProtectedMessageTest.cs b/crypto/test/src/cmp/test/ProtectedMessageTest.cs
index 24f2fe572..70bf670da 100644
--- a/crypto/test/src/cmp/test/ProtectedMessageTest.cs
+++ b/crypto/test/src/cmp/test/ProtectedMessageTest.cs
@@ -2,6 +2,7 @@
using System.Collections;
using NUnit.Framework;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Cmp;
using Org.BouncyCastle.Asn1.Crmf;
@@ -25,7 +26,7 @@ namespace Org.BouncyCastle.Cmp.Tests
{
public override string Name
{
- get { return "ProtectedMessageTest"; }
+ get { return "ProtectedMessage"; }
}
public override void PerformTest()
@@ -35,35 +36,35 @@ namespace Org.BouncyCastle.Cmp.Tests
TestMacProtectedMessage();
TestProtectedMessage();
TestConfirmationMessage();
- TestSampleCr();
+ TestSampleCr();
}
-// [Test]
-// public void TestServerSideKey()
-// {
-// RsaKeyPairGenerator rsaKeyPairGenerator = new RsaKeyPairGenerator();
-// rsaKeyPairGenerator.Init(new RsaKeyGenerationParameters(BigInteger.ValueOf(65537), new SecureRandom(), 2048, 100));
-// AsymmetricCipherKeyPair rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
-//
-// TestCertBuilder builder = new TestCertBuilder()
-// {
-// Issuer = new X509Name("CN=Test"),
-// Subject = new X509Name("CN=Test"),
-// NotBefore = DateTime.UtcNow.AddDays(-1),
-// NotAfter = DateTime.UtcNow.AddDays(1),
-// PublicKey = rsaKeyPair.Public,
-// SignatureAlgorithm = "MD5WithRSAEncryption"
-// };
-//
-// builder.AddAttribute(X509Name.C, "Foo");
-// X509Certificate cert = builder.Build(rsaKeyPair.Private);
-//
-// GeneralName sender = new GeneralName(new X509Name("CN=Sender"));
-// GeneralName recipient = new GeneralName(new X509Name("CN=Recip"));
-//
-//
-//
-// }
+ // [Test]
+ // public void TestServerSideKey()
+ // {
+ // RsaKeyPairGenerator rsaKeyPairGenerator = new RsaKeyPairGenerator();
+ // rsaKeyPairGenerator.Init(new RsaKeyGenerationParameters(BigInteger.ValueOf(65537), new SecureRandom(), 2048, 100));
+ // AsymmetricCipherKeyPair rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
+ //
+ // TestCertBuilder builder = new TestCertBuilder()
+ // {
+ // Issuer = new X509Name("CN=Test"),
+ // Subject = new X509Name("CN=Test"),
+ // NotBefore = DateTime.UtcNow.AddDays(-1),
+ // NotAfter = DateTime.UtcNow.AddDays(1),
+ // PublicKey = rsaKeyPair.Public,
+ // SignatureAlgorithm = "MD5WithRSAEncryption"
+ // };
+ //
+ // builder.AddAttribute(X509Name.C, "Foo");
+ // X509Certificate cert = builder.Build(rsaKeyPair.Private);
+ //
+ // GeneralName sender = new GeneralName(new X509Name("CN=Sender"));
+ // GeneralName recipient = new GeneralName(new X509Name("CN=Recip"));
+ //
+ //
+ //
+ // }
[Test]
public void TestNotBeforeNotAfter()
@@ -72,12 +73,11 @@ namespace Org.BouncyCastle.Cmp.Tests
rsaKeyPairGenerator.Init(new RsaKeyGenerationParameters(BigInteger.ValueOf(65537), new SecureRandom(), 2048, 100));
AsymmetricCipherKeyPair rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
- doNotBeforeNotAfterTest(rsaKeyPair, new DateTime(1,1,1,0,0,1), new DateTime(1,1,1,0,0,10));
+ doNotBeforeNotAfterTest(rsaKeyPair, new DateTime(1, 1, 1, 0, 0, 1), new DateTime(1, 1, 1, 0, 0, 10));
doNotBeforeNotAfterTest(rsaKeyPair, DateTime.MinValue, new DateTime(1, 1, 1, 0, 0, 10));
doNotBeforeNotAfterTest(rsaKeyPair, new DateTime(1, 1, 1, 0, 0, 1), DateTime.MinValue);
}
-
private void doNotBeforeNotAfterTest(AsymmetricCipherKeyPair kp, DateTime notBefore, DateTime notAfter)
{
CertificateRequestMessageBuilder builder = new CertificateRequestMessageBuilder(BigInteger.One)
@@ -89,11 +89,11 @@ namespace Org.BouncyCastle.Cmp.Tests
if (!notBefore.Equals(DateTime.MinValue))
{
- IsTrue("NotBefore did not match",(notBefore.Equals(msg.GetCertTemplate().Validity.NotBefore.ToDateTime())));
+ IsTrue("NotBefore did not match", (notBefore.Equals(msg.GetCertTemplate().Validity.NotBefore.ToDateTime())));
}
else
{
- IsTrue("Expected NotBefore to empty.",DateTime.MinValue == msg.GetCertTemplate().Validity.NotBefore.ToDateTime());
+ IsTrue("Expected NotBefore to empty.", DateTime.MinValue == msg.GetCertTemplate().Validity.NotBefore.ToDateTime());
}
if (!notAfter.Equals(DateTime.MinValue))
@@ -104,10 +104,8 @@ namespace Org.BouncyCastle.Cmp.Tests
{
IsTrue("Expected NotAfter to be empty.", DateTime.MinValue == msg.GetCertTemplate().Validity.NotAfter.ToDateTime());
}
-
}
-
[Test]
public void TestSubsequentMessage()
{
@@ -115,17 +113,13 @@ namespace Org.BouncyCastle.Cmp.Tests
rsaKeyPairGenerator.Init(new RsaKeyGenerationParameters(BigInteger.ValueOf(65537), new SecureRandom(), 2048, 100));
AsymmetricCipherKeyPair rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
- TestCertBuilder builder = new TestCertBuilder()
- {
- NotBefore = DateTime.UtcNow.AddDays(-1),
- NotAfter = DateTime.UtcNow.AddDays(1),
- PublicKey = rsaKeyPair.Public,
- SignatureAlgorithm = "Sha1WithRSAEncryption"
-
- };
+ TestCertBuilder builder = new TestCertBuilder();
+ builder.NotBefore = DateTime.UtcNow.AddDays(-1);
+ builder.NotAfter = DateTime.UtcNow.AddDays(1);
+ builder.PublicKey = rsaKeyPair.Public;
+ builder.SignatureAlgorithm = "Sha1WithRSAEncryption";
X509Certificate cert = builder.Build(rsaKeyPair.Private);
-
GeneralName user = new GeneralName(new X509Name("CN=Test"));
CertificateRequestMessageBuilder crmBuiler = new CertificateRequestMessageBuilder(BigInteger.One)
@@ -134,21 +128,18 @@ namespace Org.BouncyCastle.Cmp.Tests
ISignatureFactory sigFact = new Asn1SignatureFactory("SHA256WithRSA", rsaKeyPair.Private);
- ProtectedPkiMessage certRequestMsg = new ProtectedPkiMessageBuilder(user,user)
- .SetTransactionId(new byte[]{1,2,3,4,5})
- .SetBody(new PkiBody(PkiBody.TYPE_KEY_RECOVERY_REQ, new CertReqMessages(new CertReqMsg[]{crmBuiler.Build().ToAsn1Structure()})))
- .AddCmpCertificate(cert)
+ ProtectedPkiMessage certRequestMsg = new ProtectedPkiMessageBuilder(user, user)
+ .SetTransactionId(new byte[] { 1, 2, 3, 4, 5 })
+ .SetBody(new PkiBody(PkiBody.TYPE_KEY_RECOVERY_REQ, new CertReqMessages(new CertReqMsg[] { crmBuiler.Build().ToAsn1Structure() })))
+ .AddCmpCertificate(cert)
.Build(sigFact);
- ProtectedPkiMessage msg = new ProtectedPkiMessage(new GeneralPKIMessage(certRequestMsg.ToAsn1Message().GetDerEncoded()));
+ ProtectedPkiMessage msg = new ProtectedPkiMessage(new GeneralPkiMessage(certRequestMsg.ToAsn1Message().GetDerEncoded()));
CertReqMessages reqMsgs = CertReqMessages.GetInstance(msg.Body.Content);
CertReqMsg reqMsg = reqMsgs.ToCertReqMsgArray()[0];
IsEquals(ProofOfPossession.TYPE_KEY_ENCIPHERMENT, reqMsg.Popo.Type);
-
}
-
-
[Test]
public void TestSampleCr()
{
@@ -162,15 +153,11 @@ namespace Org.BouncyCastle.Cmp.Tests
"Ep9wvv+3+td5MEO+qMuWWxF8OZBlYIFBZ/k+pGlU+4XlBP5Ai6pu/EI/0A+1/bcGs0sQIDAQABMBQwEgYJKwY" +
"BBQUHBQEBDAVEVU1NWaACBQCgFwMVAO73HUPF//mY5+E714Cv5oprt0kO\r\n");
- ProtectedPkiMessage msg = new ProtectedPkiMessage(new GeneralPKIMessage(raw));
+ ProtectedPkiMessage msg = new ProtectedPkiMessage(new GeneralPkiMessage(raw));
-
-
IsTrue(msg.Verify(new PKMacBuilder(), "TopSecret1234".ToCharArray()));
-
}
-
[Test]
public void TestConfirmationMessage()
{
@@ -178,14 +165,11 @@ namespace Org.BouncyCastle.Cmp.Tests
rsaKeyPairGenerator.Init(new RsaKeyGenerationParameters(BigInteger.ValueOf(65537), new SecureRandom(), 2048, 100));
AsymmetricCipherKeyPair rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
- TestCertBuilder builder = new TestCertBuilder()
- {
- NotBefore = DateTime.UtcNow.AddDays(-1),
- NotAfter = DateTime.UtcNow.AddDays(1),
- PublicKey = rsaKeyPair.Public,
- SignatureAlgorithm = "Sha1WithRSAEncryption"
-
- };
+ TestCertBuilder builder = new TestCertBuilder();
+ builder.NotBefore = DateTime.UtcNow.AddDays(-1);
+ builder.NotAfter = DateTime.UtcNow.AddDays(1);
+ builder.PublicKey = rsaKeyPair.Public;
+ builder.SignatureAlgorithm = "Sha1WithRSAEncryption";
builder.AddAttribute(X509Name.C, "Foo");
X509Certificate cert = builder.Build(rsaKeyPair.Private);
@@ -198,7 +182,7 @@ namespace Org.BouncyCastle.Cmp.Tests
.Build();
ProtectedPkiMessageBuilder msgBuilder = new ProtectedPkiMessageBuilder(sender, recipient);
- msgBuilder.SetBody(new PkiBody(PkiBody.TYPE_CERT_CONFIRM, content.ToAsn1Structure()));
+ msgBuilder.SetBody(new PkiBody(PkiBody.TYPE_CERT_CONFIRM, content.ToAsn1Structure()));
msgBuilder.AddCmpCertificate(cert);
ISignatureFactory sigFact = new Asn1SignatureFactory("MD5WithRSA", rsaKeyPair.Private);
@@ -208,51 +192,46 @@ namespace Org.BouncyCastle.Cmp.Tests
IsTrue("PKIMessage must verify (MD5withRSA)", msg.Verify(verifierFactory));
- IsEquals(sender,msg.Header.Sender);
- IsEquals(recipient,msg.Header.Recipient);
+ IsEquals(sender, msg.Header.Sender);
+ IsEquals(recipient, msg.Header.Recipient);
content = new CertificateConfirmationContent(CertConfirmContent.GetInstance(msg.Body.Content), new DefaultDigestAlgorithmIdentifierFinder());
CertificateStatus[] statusList = content.GetStatusMessages();
- IsEquals(1,statusList.Length);
+ IsEquals(1, statusList.Length);
IsTrue(statusList[0].IsVerified(cert));
}
-
-
[Test]
- public void TestProtectedMessage()
+ public void TestProtectedMessage()
{
- RsaKeyPairGenerator rsaKeyPairGenerator = new RsaKeyPairGenerator();
- rsaKeyPairGenerator.Init(new RsaKeyGenerationParameters(BigInteger.ValueOf(65537),new SecureRandom(),2048,100));
- AsymmetricCipherKeyPair rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
+ RsaKeyPairGenerator rsaKeyPairGenerator = new RsaKeyPairGenerator();
+ rsaKeyPairGenerator.Init(new RsaKeyGenerationParameters(BigInteger.ValueOf(65537), new SecureRandom(), 2048, 100));
+ AsymmetricCipherKeyPair rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
- TestCertBuilder builder = new TestCertBuilder()
- {
- NotBefore = DateTime.UtcNow.AddDays(-1),
- NotAfter = DateTime.UtcNow.AddDays(1),
- PublicKey = rsaKeyPair.Public,
- SignatureAlgorithm = "Sha1WithRSAEncryption"
-
- };
+ TestCertBuilder builder = new TestCertBuilder();
+ builder.NotBefore = DateTime.UtcNow.AddDays(-1);
+ builder.NotAfter = DateTime.UtcNow.AddDays(1);
+ builder.PublicKey = rsaKeyPair.Public;
+ builder.SignatureAlgorithm = "Sha1WithRSAEncryption";
builder.AddAttribute(X509Name.C, "Foo");
X509Certificate cert = builder.Build(rsaKeyPair.Private);
GeneralName sender = new GeneralName(new X509Name("CN=Sender"));
GeneralName recipient = new GeneralName(new X509Name("CN=Recip"));
-
- ProtectedPkiMessageBuilder msgBuilder = new ProtectedPkiMessageBuilder(sender,recipient);
+
+ ProtectedPkiMessageBuilder msgBuilder = new ProtectedPkiMessageBuilder(sender, recipient);
msgBuilder.AddCmpCertificate(cert);
-
- ISignatureFactory sigFact = new Asn1SignatureFactory("MD5WithRSA",rsaKeyPair.Private);
- ProtectedPkiMessage msg = msgBuilder.Build(sigFact);
+ ISignatureFactory sigFact = new Asn1SignatureFactory("MD5WithRSA", rsaKeyPair.Private);
+
+ ProtectedPkiMessage msg = msgBuilder.Build(sigFact);
X509Certificate certificate = msg.GetCertificates()[0];
IVerifierFactory verifierFactory = new Asn1VerifierFactory("MD5WithRSA", rsaKeyPair.Public);
- IsTrue("PKIMessage must verify (MD5withRSA)",msg.Verify(verifierFactory));
+ IsTrue("PKIMessage must verify (MD5withRSA)", msg.Verify(verifierFactory));
}
[Test]
@@ -263,14 +242,11 @@ namespace Org.BouncyCastle.Cmp.Tests
100));
AsymmetricCipherKeyPair rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
- TestCertBuilder builder = new TestCertBuilder()
- {
- NotBefore = DateTime.UtcNow.AddDays(-1),
- NotAfter = DateTime.UtcNow.AddDays(1),
- PublicKey = rsaKeyPair.Public,
- SignatureAlgorithm = "Sha1WithRSAEncryption"
-
- };
+ TestCertBuilder builder = new TestCertBuilder();
+ builder.NotBefore = DateTime.UtcNow.AddDays(-1);
+ builder.NotAfter = DateTime.UtcNow.AddDays(1);
+ builder.PublicKey = rsaKeyPair.Public;
+ builder.SignatureAlgorithm = "Sha1WithRSAEncryption";
builder.AddAttribute(X509Name.C, "Foo");
X509Certificate cert = builder.Build(rsaKeyPair.Private);
@@ -291,79 +267,102 @@ namespace Org.BouncyCastle.Cmp.Tests
IsTrue(msg.Verify(macFactory, "testpass".ToCharArray()));
}
-
-
-
[Test]
public void TestVerifyBCJavaGeneratedMessage()
{
- //
- // Test with content generated by BC-JAVA version.
- //
+ //
+ // Test with content generated by BC-JAVA version.
+ //
- ICipherParameters publicKey = PublicKeyFactory.CreateKey(Hex.Decode(
- "305c300d06092a864886f70d0101010500034b003048024100ac1e59ba5f96" +
- "ba86c86e6d8bbfd43ece04265fa29e6ebdb320388b58af365d05b26970cbd2" +
- "6e5b0fa7df2074b90b42a1d16ab270cdb851b53e464b87f683774502030100" +
- "01"));
- ICipherParameters privateKey = PrivateKeyFactory.CreateKey(Hex.Decode(
- "30820155020100300d06092a864886f70d01010105000482013f3082013b02" +
- "0100024100ac1e59ba5f96ba86c86e6d8bbfd43ece04265fa29e6ebdb32038" +
- "8b58af365d05b26970cbd26e5b0fa7df2074b90b42a1d16ab270cdb851b53e" +
- "464b87f68377450203010001024046f3f208570c735349bfe00fdaa1fbcc00" +
- "c0f2eebe42279876a168ac43fa74a8cdf9a1bb49066c07cfcfa7196f69f2b9" +
- "419d378109db967891428c50273dcc37022100d488dc3fb86f404d726a8166" +
- "b2a9aba9bee12fdbf38470a62403a2a20bad0977022100cf51874e479b141f" +
- "9915533bf54d68f1940f84d7fe6130538ff01a23e3493423022100986f94f1" +
- "0afa9837341219bfabf32fd16ebb9a94fa630a5ccf45e036b383275f02201b" +
- "6dff07f563684b31f6e757548254733a12bf91d05f4d8490d3c4b1a0ddcb9f" +
- "02210087c3b2049e9a3edfc4cb40a3a275dabf7ffff80b467157e384603042" +
- "3fe91d68"));
-
- byte[] ind = Hex.Decode(
- "308201ac306e020102a4133011310f300d06035504030c0653656e646572a4" +
- "123010310e300c06035504030c055265636970a140303e06092a864886f67d" +
- "07420d30310414fdccb4ffd7848e6a697bee36cbe0f3722ed7fe2f30070605" +
- "2b0e03021a020203e8300c06082b060105050801020500a10430023000a017" +
- "031500c131c357441daa78eb538bfd9c24870e220fdafaa182011930820115" +
- "308201113081bca003020102020601684a515d5b300d06092a864886f70d01" +
- "01050500300f310d300b06035504030c0454657374301e170d313930313134" +
- "3033303433325a170d3139303432343033303433325a300f310d300b060355" +
- "04030c0454657374305c300d06092a864886f70d0101010500034b00304802" +
- "4100ac1e59ba5f96ba86c86e6d8bbfd43ece04265fa29e6ebdb320388b58af" +
- "365d05b26970cbd26e5b0fa7df2074b90b42a1d16ab270cdb851b53e464b87" +
- "f68377450203010001300d06092a864886f70d0101050500034100264b5b76" +
- "f268e2a992f05ad83783b091ce806a6726912c6200d06b33375ae58fe3c474" +
- "c3a42ad6e572a2c48ae3bf914a7510bb995c3474829cfe71ab679a3db0");
-
-
- ProtectedPkiMessage pkiMsg = new ProtectedPkiMessage(PkiMessage.GetInstance(ind));
-
- PbmParameter pbmParameters = PbmParameter.GetInstance(pkiMsg.Header.ProtectionAlg.Parameters);
-
- IsTrue(pkiMsg.Verify(new PKMacBuilder().SetParameters(pbmParameters), "secret".ToCharArray()));
+ ICipherParameters publicKey = PublicKeyFactory.CreateKey(Hex.Decode(
+ "305c300d06092a864886f70d0101010500034b003048024100ac1e59ba5f96" +
+ "ba86c86e6d8bbfd43ece04265fa29e6ebdb320388b58af365d05b26970cbd2" +
+ "6e5b0fa7df2074b90b42a1d16ab270cdb851b53e464b87f683774502030100" +
+ "01"));
+ ICipherParameters privateKey = PrivateKeyFactory.CreateKey(Hex.Decode(
+ "30820155020100300d06092a864886f70d01010105000482013f3082013b02" +
+ "0100024100ac1e59ba5f96ba86c86e6d8bbfd43ece04265fa29e6ebdb32038" +
+ "8b58af365d05b26970cbd26e5b0fa7df2074b90b42a1d16ab270cdb851b53e" +
+ "464b87f68377450203010001024046f3f208570c735349bfe00fdaa1fbcc00" +
+ "c0f2eebe42279876a168ac43fa74a8cdf9a1bb49066c07cfcfa7196f69f2b9" +
+ "419d378109db967891428c50273dcc37022100d488dc3fb86f404d726a8166" +
+ "b2a9aba9bee12fdbf38470a62403a2a20bad0977022100cf51874e479b141f" +
+ "9915533bf54d68f1940f84d7fe6130538ff01a23e3493423022100986f94f1" +
+ "0afa9837341219bfabf32fd16ebb9a94fa630a5ccf45e036b383275f02201b" +
+ "6dff07f563684b31f6e757548254733a12bf91d05f4d8490d3c4b1a0ddcb9f" +
+ "02210087c3b2049e9a3edfc4cb40a3a275dabf7ffff80b467157e384603042" +
+ "3fe91d68"));
+
+ byte[] ind = Hex.Decode(
+ "308201ac306e020102a4133011310f300d06035504030c0653656e646572a4" +
+ "123010310e300c06035504030c055265636970a140303e06092a864886f67d" +
+ "07420d30310414fdccb4ffd7848e6a697bee36cbe0f3722ed7fe2f30070605" +
+ "2b0e03021a020203e8300c06082b060105050801020500a10430023000a017" +
+ "031500c131c357441daa78eb538bfd9c24870e220fdafaa182011930820115" +
+ "308201113081bca003020102020601684a515d5b300d06092a864886f70d01" +
+ "01050500300f310d300b06035504030c0454657374301e170d313930313134" +
+ "3033303433325a170d3139303432343033303433325a300f310d300b060355" +
+ "04030c0454657374305c300d06092a864886f70d0101010500034b00304802" +
+ "4100ac1e59ba5f96ba86c86e6d8bbfd43ece04265fa29e6ebdb320388b58af" +
+ "365d05b26970cbd26e5b0fa7df2074b90b42a1d16ab270cdb851b53e464b87" +
+ "f68377450203010001300d06092a864886f70d0101050500034100264b5b76" +
+ "f268e2a992f05ad83783b091ce806a6726912c6200d06b33375ae58fe3c474" +
+ "c3a42ad6e572a2c48ae3bf914a7510bb995c3474829cfe71ab679a3db0");
+
+ ProtectedPkiMessage pkiMsg = new ProtectedPkiMessage(PkiMessage.GetInstance(ind));
+
+ PbmParameter pbmParameters = PbmParameter.GetInstance(pkiMsg.Header.ProtectionAlg.Parameters);
+
+ IsTrue(pkiMsg.Verify(new PKMacBuilder().SetParameters(pbmParameters), "secret".ToCharArray()));
+ }
}
-
-
-}
-
public class TestCertBuilder
{
IDictionary attrs = new Hashtable();
IList ord = new ArrayList();
IList values = new ArrayList();
- public DateTime NotBefore { get; set; }
+ private DateTime notBefore, notAfter;
+ private AsymmetricKeyParameter publicKey;
+ private string signatureAlgorithm;
+ private X509Name issuer, subject;
- public DateTime NotAfter { get; set; }
+ public DateTime NotBefore
+ {
+ get { return notBefore; }
+ set { this.notBefore = value; }
+ }
- public AsymmetricKeyParameter PublicKey { get; set; }
+ public DateTime NotAfter
+ {
+ get { return notAfter; }
+ set { this.notAfter = value; }
+ }
- public String SignatureAlgorithm { get; set; }
+ public AsymmetricKeyParameter PublicKey
+ {
+ get { return publicKey; }
+ set { this.publicKey = value; }
+ }
- public X509Name Issuer { get; set; }
- public X509Name Subject { get; set; }
+ public string SignatureAlgorithm
+ {
+ get { return signatureAlgorithm; }
+ set { this.signatureAlgorithm = value; }
+ }
+
+ public X509Name Issuer
+ {
+ get { return issuer; }
+ set { this.issuer = value; }
+ }
+
+ public X509Name Subject
+ {
+ get { return subject; }
+ set { this.subject = value; }
+ }
public TestCertBuilder AddAttribute(DerObjectIdentifier name, Object value)
{
@@ -388,7 +387,6 @@ namespace Org.BouncyCastle.Cmp.Tests
certGen.SetIssuerDN(new X509Name(ord, attrs));
}
-
certGen.SetNotBefore(NotBefore);
certGen.SetNotAfter(NotAfter);
@@ -401,7 +399,6 @@ namespace Org.BouncyCastle.Cmp.Tests
certGen.SetSubjectDN(new X509Name(ord, attrs));
}
-
certGen.SetPublicKey(PublicKey);
certGen.SetSignatureAlgorithm(SignatureAlgorithm);
diff --git a/crypto/test/src/crmf/test/CrmfTest.cs b/crypto/test/src/crmf/test/CrmfTest.cs
index b1f18cc7b..8211fe1c4 100644
--- a/crypto/test/src/crmf/test/CrmfTest.cs
+++ b/crypto/test/src/crmf/test/CrmfTest.cs
@@ -1,7 +1,8 @@
using System;
using System.Collections;
-using NUnit.Core;
+
using NUnit.Framework;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Cms;
using Org.BouncyCastle.Asn1.Crmf;
@@ -15,23 +16,23 @@ using Org.BouncyCastle.Crypto.Generators;
using Org.BouncyCastle.Crypto.Operators;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Math;
+using Org.BouncyCastle.Operators;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.Utilities;
using Org.BouncyCastle.Utilities.Encoders;
using Org.BouncyCastle.Utilities.Test;
using Org.BouncyCastle.X509;
-using Org.BouncyCastle.Operators;
namespace Org.BouncyCastle.Crmf.Tests
{
[TestFixture]
public class CrmfTest : SimpleTest
{
-
-
- public override string Name => "CRMF Tests";
-
+ public override string Name
+ {
+ get { return "CRMF"; }
+ }
public override void PerformTest()
{
@@ -44,14 +45,14 @@ namespace Org.BouncyCastle.Crmf.Tests
[Test]
public void TestFromJVM()
{
- var pubKey = PublicKeyFactory.CreateKey(Hex.Decode(
+ AsymmetricKeyParameter pubKey = PublicKeyFactory.CreateKey(Hex.Decode(
"305c300d06092a864886f70d0101010500034b003048024100bbb3f6a5031fbb1feedbfed7584a4f6321ccdc16b9526b0f6e31859328db35a6ec420a98e14fb3bcf192004b1aa6fc9269410204785cc01317232feb545a7b410203010001"));
- var privKey = PrivateKeyFactory.CreateKey(Hex.Decode("30820153020100300d06092a864886f70d01010105000482013d30820139020100024100bbb3f6a5031fbb1feedbfed7584a4f6321ccdc16b9526b0f6e31859328db35a6ec420a98e14fb3bcf192004b1aa6fc9269410204785cc01317232feb545a7b41020301000102400093b384b9021c4cd59888e956cb1e653e736833235315b0e938116da19a9276b1ea1fe33da580a497313f08eb3e7c14627508a4284be04ea3e6ba8cb4b0a5c9022100e2fe0d9f35bfd7ecf196227e5e915a2464478ea7033c6dff4ce6a02961759a49022100d3b093770745dfea42c5c5c31f1a6b797a60dfb5503ae60f70b864452c4a193902203cc761c65b91feb3070cf8377602dd6c191dbfe8a04931fac6108a9a09ea7f61022071bb2a5f06af49cfc8340d3df995ee2c03cdcc22d389f15456511abdf73f9031022065bc10d43192cb3131c53be18a0d41a060d4e0a3324a47e3eb4bf720e1b46b10"));
+ AsymmetricKeyParameter privKey = PrivateKeyFactory.CreateKey(Hex.Decode("30820153020100300d06092a864886f70d01010105000482013d30820139020100024100bbb3f6a5031fbb1feedbfed7584a4f6321ccdc16b9526b0f6e31859328db35a6ec420a98e14fb3bcf192004b1aa6fc9269410204785cc01317232feb545a7b41020301000102400093b384b9021c4cd59888e956cb1e653e736833235315b0e938116da19a9276b1ea1fe33da580a497313f08eb3e7c14627508a4284be04ea3e6ba8cb4b0a5c9022100e2fe0d9f35bfd7ecf196227e5e915a2464478ea7033c6dff4ce6a02961759a49022100d3b093770745dfea42c5c5c31f1a6b797a60dfb5503ae60f70b864452c4a193902203cc761c65b91feb3070cf8377602dd6c191dbfe8a04931fac6108a9a09ea7f61022071bb2a5f06af49cfc8340d3df995ee2c03cdcc22d389f15456511abdf73f9031022065bc10d43192cb3131c53be18a0d41a060d4e0a3324a47e3eb4bf720e1b46b10"));
- var rawMsg = Hex.Decode("3081cc30760201013071a511300f310d300b0603550403130454657374a65c300d06092a864886f70d0101010500034b003048024100bbb3f6a5031fbb1feedbfed7584a4f6321ccdc16b9526b0f6e31859328db35a6ec420a98e14fb3bcf192004b1aa6fc9269410204785cc01317232feb545a7b410203010001a152300d06092a864886f70d01010505000341003120cdb58edfef4a2e1a4bfe96b972007c1d1c949221d266efe28b45ba036b9d534f5dca261dce8f21e134d97e55c3bd76d1460781fd9703f8f9907d1f036c20");
+ byte[] rawMsg = Hex.Decode("3081cc30760201013071a511300f310d300b0603550403130454657374a65c300d06092a864886f70d0101010500034b003048024100bbb3f6a5031fbb1feedbfed7584a4f6321ccdc16b9526b0f6e31859328db35a6ec420a98e14fb3bcf192004b1aa6fc9269410204785cc01317232feb545a7b410203010001a152300d06092a864886f70d01010505000341003120cdb58edfef4a2e1a4bfe96b972007c1d1c949221d266efe28b45ba036b9d534f5dca261dce8f21e134d97e55c3bd76d1460781fd9703f8f9907d1f036c20");
- var msg = new CertificateRequestMessage(rawMsg);
- IsTrue("Pop Valid",msg.IsValidSigningKeyPop(new Asn1VerifierFactoryProvider(pubKey)));
+ CertificateRequestMessage msg = new CertificateRequestMessage(rawMsg);
+ IsTrue("Pop Valid", msg.IsValidSigningKeyPop(new Asn1VerifierFactoryProvider(pubKey)));
//
// Vandalize message to check for failure.
@@ -59,28 +60,25 @@ namespace Org.BouncyCastle.Crmf.Tests
rawMsg[7] ^= 1;
msg = new CertificateRequestMessage(rawMsg);
-
- IsTrue("Pop Verified Vandalized Message!", !msg.IsValidSigningKeyPop(new Asn1VerifierFactoryProvider(pubKey)));
+ IsTrue("Pop Verified Vandalized Message!", !msg.IsValidSigningKeyPop(new Asn1VerifierFactoryProvider(pubKey)));
}
-
-
[Test]
public void TestBasicMessage()
{
- var rsaKeyPairGenerator = new RsaKeyPairGenerator();
+ RsaKeyPairGenerator rsaKeyPairGenerator = new RsaKeyPairGenerator();
rsaKeyPairGenerator.Init(new RsaKeyGenerationParameters(BigInteger.ValueOf(65537), new SecureRandom(), 2048, 100));
- var rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
+ AsymmetricCipherKeyPair rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
+
+ CertificateRequestMessageBuilder certReqBuild = new CertificateRequestMessageBuilder(BigInteger.One);
- var certReqBuild = new CertificateRequestMessageBuilder(BigInteger.One);
-
certReqBuild.SetSubject(new X509Name("CN=Test"))
.SetPublicKey(SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(rsaKeyPair.Public))
.SetProofOfPossessionSignKeySigner(new Asn1SignatureFactory("SHA1WithRSA", rsaKeyPair.Private));
- var certificateRequestMessage = certReqBuild.Build();
-
+ CertificateRequestMessage certificateRequestMessage = certReqBuild.Build();
+
IsTrue("Signing Key Pop Valid",certificateRequestMessage.IsValidSigningKeyPop(new Asn1VerifierFactoryProvider(rsaKeyPair.Public)));
IsTrue(certificateRequestMessage.GetCertTemplate().Subject.Equivalent(new X509Name("CN=Test")));
IsTrue(certificateRequestMessage.GetCertTemplate().PublicKey.Equals(SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(rsaKeyPair.Public)));
@@ -89,27 +87,24 @@ namespace Org.BouncyCastle.Crmf.Tests
[Test]
public void TestBasicMessageWithArchiveControl()
{
- var rsaKeyPairGenerator = new RsaKeyPairGenerator();
+ RsaKeyPairGenerator rsaKeyPairGenerator = new RsaKeyPairGenerator();
rsaKeyPairGenerator.Init(new RsaKeyGenerationParameters(BigInteger.ValueOf(65537), new SecureRandom(), 2048, 100));
- var rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
-
- var tcb = new TestCertBuilder()
- {
- PublicKey = rsaKeyPair.Public,
- Subject = new X509Name("CN=Test"),
- Issuer = new X509Name("CN=Test"),
- NotBefore = DateTime.UtcNow.AddDays(-1),
- NotAfter = DateTime.UtcNow.AddDays(1),
- SignatureAlgorithm = "Sha1WithRSAEncryption"
- };
+ AsymmetricCipherKeyPair rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair();
- var cert = tcb.Build(rsaKeyPair.Private);
+ TestCertBuilder tcb = new TestCertBuilder();
+ tcb.PublicKey = rsaKeyPair.Public;
+ tcb.Subject = new X509Name("CN=Test");
+ tcb.Issuer = new X509Name("CN=Test");
+ tcb.NotBefore = DateTime.UtcNow.AddDays(-1);
+ tcb.NotAfter = DateTime.UtcNow.AddDays(1);
+ tcb.SignatureAlgorithm = "Sha1WithRSAEncryption";
- var publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(rsaKeyPair.Public);
- var privateInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(rsaKeyPair.Private);
+ X509Certificate cert = tcb.Build(rsaKeyPair.Private);
+ SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(rsaKeyPair.Public);
+ PrivateKeyInfo privateInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(rsaKeyPair.Private);
- var certificateRequestMessageBuilder = new CertificateRequestMessageBuilder(BigInteger.One);
+ CertificateRequestMessageBuilder certificateRequestMessageBuilder = new CertificateRequestMessageBuilder(BigInteger.One);
certificateRequestMessageBuilder.SetSubject(new X509Name("CN=Test"));
certificateRequestMessageBuilder.SetPublicKey(publicKeyInfo);
@@ -119,14 +114,13 @@ namespace Org.BouncyCastle.Crmf.Tests
.Build(new CmsContentEncryptorBuilder(NistObjectIdentifiers.IdAes128Cbc).Build())
);
- var msg = certificateRequestMessageBuilder.Build();
+ CertificateRequestMessage msg = certificateRequestMessageBuilder.Build();
IsTrue(Arrays.AreEqual(msg.GetCertTemplate().Subject.GetEncoded(), new X509Name("CN=Test").GetEncoded()));
IsTrue(Arrays.AreEqual(msg.GetCertTemplate().PublicKey.GetEncoded(),publicKeyInfo.GetEncoded()));
- checkCertReqMsgWithArchiveControl(rsaKeyPair,msg);
- checkCertReqMsgWithArchiveControl(rsaKeyPair, new CertificateRequestMessage(msg.GetEncoded()));
-
+ CheckCertReqMsgWithArchiveControl(rsaKeyPair,msg);
+ CheckCertReqMsgWithArchiveControl(rsaKeyPair, new CertificateRequestMessage(msg.GetEncoded()));
}
[Test]
@@ -136,31 +130,27 @@ namespace Org.BouncyCastle.Crmf.Tests
Hex.Decode("305c300d06092a864886f70d0101010500034b003048024100a9a94b7b98dc3daf8cac032a14bd4510832b0e007edbdafc065e328645a35828b8185cdbf73ed495c88436b11a9322965595d2e4c1dd63c3c4d41812f876b3070203010001"));
AsymmetricKeyParameter privateKey = PrivateKeyFactory.CreateKey(
Hex.Decode("30820154020100300d06092a864886f70d01010105000482013e3082013a020100024100a9a94b7b98dc3daf8cac032a14bd4510832b0e007edbdafc065e328645a35828b8185cdbf73ed495c88436b11a9322965595d2e4c1dd63c3c4d41812f876b307020301000102400831deacfe21a9331902d7f648e1297c563196b00c70971fb439098cb5c1618925bdbac4c66b30f8956660220f326f51e5a1725ce690165154fb62fa14497265022100e54943be1b4951e127f6e79c5ab333cba4b0fff0b5e59328d6393ba98dc0e6c3022100bd6da58ce195146a1d3825ec2a622cf4962da653096bea87fbd9a94db266a66d0221008948bcceeef78f97089ec53ed0efcb6b7b489f7638f32491a6f2cdce4f99d89102204eb1b066d8883054ed12985e863506ec0d3fa5ab356cc99ff876b228ff0639f9022024049aaf39bf9a0ddfbd4caee277d0a9f07d075faae12571176a5c0ca40415c0"));
-
+
CertificateRequestMessage msg = new CertificateRequestMessage(
Hex.Decode("308202af308202ab0201013071a511300f310d300b0603550403130454657374a65c300d06092a864886f70d0101010500034b003048024100a9a94b7b98dc3daf8cac032a14bd4510832b0e007edbdafc065e328645a35828b8185cdbf73ed495c88436b11a9322965595d2e4c1dd63c3c4d41812f876b3070203010001308202313082022d06092b0601050507050104a082021ea082021a0201003171306f0201003019300f310d300b06035504030c04546573740206016859de5806300d06092a864886f70d0101010500044066f1a72f808908af784b83c07895276104d7c4caaee6090212ce5b27517aec510425b784352b5342c999f844b8796286f10a59807e290f06aa39f8cba86dd6bf308201a0060b2a864886f70d0109100115301d060960864801650304010204104aceaa277cc7974ea2a775ff9db6062580820170c648e70c25c4789d2ff4ed398e5536efb45d2dd8ba76a628ad30bf9596a18337afc0f596f0c18e05fb3fa9944ed9691dae1d9b327b5bbafaaa63efb0e22d675811c27bfb023b80184325fd4b67b3b9e41bf43c5583a86433b230e09a34b61397ddff0eadf10c883fc1f01860e2a56ab4002dcc4d4925c53e09dde0b99928fdf602bce544722155cebd8816e91a411a99feea07695774cd8883034022d57f64e9cd3383c3125c48db2936b7395a22b17910be1f2c0b8650bdb5bd752ffc40fcd30169e5ae3a4ac7ad9cc850e9c17bbcf8e1a1898d0d8be19145c484467b8f1124657a5e08c10fc67416274990cc16d55c9fb76c265dd436b7e803425892297f1a08e4fab8e178874b2b3bf9c749693d609db208e9a3ebbddd26cd6a1b33c0201532170dc6c303e7ac0c42ba0bc54dfb928b228842b6bb08d8dc411d262dabf140a8b5a5c67ea486c1877a2fc000981d54cf2decaf1cfeebcf83134992b09a2b1fe9e02da25b874604b5d8bbd609875ba8"));
AsymmetricCipherKeyPair rsaKeyPair = new AsymmetricCipherKeyPair(publicKey,privateKey);
-
SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(publicKey);
-
- Console.WriteLine(msg.GetCertTemplate().Subject.Equivalent(new X509Name("CN=Test")));
-
IsTrue(msg.GetCertTemplate().Subject.Equivalent(new X509Name("CN=Test")));
IsTrue(Arrays.AreEqual(msg.GetCertTemplate().PublicKey.GetEncoded(), publicKeyInfo.GetEncoded()));
- checkCertReqMsgWithArchiveControl(rsaKeyPair, msg);
- checkCertReqMsgWithArchiveControl(rsaKeyPair, new CertificateRequestMessage(msg.GetEncoded()));
+ CheckCertReqMsgWithArchiveControl(rsaKeyPair, msg);
+ CheckCertReqMsgWithArchiveControl(rsaKeyPair, new CertificateRequestMessage(msg.GetEncoded()));
- checkCertReqMsgWithArchiveControl(rsaKeyPair,msg);
+ CheckCertReqMsgWithArchiveControl(rsaKeyPair,msg);
}
- private void checkCertReqMsgWithArchiveControl(AsymmetricCipherKeyPair kp, CertificateRequestMessage certReqMessage)
+ private void CheckCertReqMsgWithArchiveControl(AsymmetricCipherKeyPair kp, CertificateRequestMessage certReqMessage)
{
- var archiveControl =
- (PkiArchiveControl) certReqMessage.GetControl(CrmfObjectIdentifiers.id_regCtrl_pkiArchiveOptions);
+ PkiArchiveControl archiveControl = (PkiArchiveControl)certReqMessage.GetControl(
+ CrmfObjectIdentifiers.id_regCtrl_pkiArchiveOptions);
IsEquals("Archive type", PkiArchiveControl.encryptedPrivKey, archiveControl.ArchiveType);
IsTrue(archiveControl.EnvelopedData);
@@ -172,7 +162,6 @@ namespace Org.BouncyCastle.Crmf.Tests
KeyTransRecipientInformation info = (KeyTransRecipientInformation)collection[0];
EncKeyWithID encKeyWithId = EncKeyWithID.GetInstance(info.GetContent(kp.Private));
-
IsTrue(encKeyWithId.HasIdentifier);
IsTrue(!encKeyWithId.IsIdentifierUtf8String); // GeneralName at this point.
@@ -181,8 +170,6 @@ namespace Org.BouncyCastle.Crmf.Tests
PrivateKeyInfo privateKeyInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(kp.Private);
IsTrue("Private Key", Arrays.AreEqual(privateKeyInfo.GetEncoded(), encKeyWithId.PrivateKey.GetEncoded()));
-
}
-
}
-}
\ No newline at end of file
+}
diff --git a/crypto/test/src/crypto/test/ECGOST3410_2012Test.cs b/crypto/test/src/crypto/test/ECGOST3410_2012Test.cs
index 8c5997835..7e0a84cbe 100644
--- a/crypto/test/src/crypto/test/ECGOST3410_2012Test.cs
+++ b/crypto/test/src/crypto/test/ECGOST3410_2012Test.cs
@@ -1,5 +1,7 @@
using System;
+
using NUnit.Framework;
+
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.CryptoPro;
using Org.BouncyCastle.Asn1.Pkcs;
@@ -17,19 +19,19 @@ using Org.BouncyCastle.X509;
namespace Org.BouncyCastle.Crypto.Tests
{
[TestFixture]
- public class ECGOST3410_2012Test:SimpleTest
+ public class ECGost3410_2012Test
+ : SimpleTest
{
public override string Name
{
- get { return "ECGOST3410-2012-Test"; }
+ get { return "ECGOST3410-2012"; }
}
public SimpleTestResult EncodeRecodePublicKey()
{
-
DerObjectIdentifier oid = ECGost3410NamedCurves.GetOid("Tc26-Gost-3410-12-512-paramSetA");
ECNamedDomainParameters ecp = new ECNamedDomainParameters(oid, ECGost3410NamedCurves.GetByOid(oid));
- ECGost3410Parameters gostParams = new ECGost3410Parameters(ecp, oid, RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512,null);
+ ECGost3410Parameters gostParams = new ECGost3410Parameters(ecp, oid, RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512, null);
ECKeyGenerationParameters paramameters = new ECKeyGenerationParameters(gostParams, new SecureRandom());
ECKeyPairGenerator engine = new ECKeyPairGenerator();
engine.Init(paramameters);
@@ -38,328 +40,302 @@ namespace Org.BouncyCastle.Crypto.Tests
ECPublicKeyParameters generatedKeyParameters = (ECPublicKeyParameters)pair.Public;
ECPublicKeyParameters keyParameters = generatedKeyParameters;
-
//
// Continuously encode/decode the key and check for loss of information.
//
- for (int t = 0; t < 3; t++)
- {
-
- SubjectPublicKeyInfo info = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyParameters);
- keyParameters = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(info);
-
- { // Specifically cast and test gost parameters.
- ECGost3410Parameters gParam = (ECGost3410Parameters)generatedKeyParameters.Parameters;
- ECGost3410Parameters rParam = (ECGost3410Parameters)keyParameters.Parameters;
-
+ for (int t = 0; t < 3; t++)
+ {
+ SubjectPublicKeyInfo info = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyParameters);
+ keyParameters = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(info);
- bool ok = SafeEquals(gParam.DigestParamSet, rParam.DigestParamSet) &&
- SafeEquals(gParam.EncryptionParamSet, rParam.EncryptionParamSet) &&
- SafeEquals(gParam.PublicKeyParamSet, rParam.PublicKeyParamSet);
+ {
+ // Specifically cast and test gost parameters.
+ ECGost3410Parameters gParam = (ECGost3410Parameters)generatedKeyParameters.Parameters;
+ ECGost3410Parameters rParam = (ECGost3410Parameters)keyParameters.Parameters;
- if (!ok)
- {
- return new SimpleTestResult(false, "GOST parameters does not match");
- }
+ bool ok = SafeEquals(gParam.DigestParamSet, rParam.DigestParamSet) &&
+ SafeEquals(gParam.EncryptionParamSet, rParam.EncryptionParamSet) &&
+ SafeEquals(gParam.PublicKeyParamSet, rParam.PublicKeyParamSet);
- }
-
- if (!((ECGost3410Parameters)keyParameters.Parameters).Name.Equals(
- ((ECGost3410Parameters)generatedKeyParameters.Parameters).Name))
+ if (!ok)
{
- return new SimpleTestResult(false, "Name does not match");
+ return new SimpleTestResult(false, "GOST parameters does not match");
}
+ }
+ if (!((ECGost3410Parameters)keyParameters.Parameters).Name.Equals(
+ ((ECGost3410Parameters)generatedKeyParameters.Parameters).Name))
+ {
+ return new SimpleTestResult(false, "Name does not match");
+ }
- if (keyParameters.IsPrivate != generatedKeyParameters.IsPrivate)
- {
- return new SimpleTestResult(false, "isPrivate does not match");
- }
+ if (keyParameters.IsPrivate != generatedKeyParameters.IsPrivate)
+ {
+ return new SimpleTestResult(false, "isPrivate does not match");
+ }
- if (!Arrays.AreEqual(keyParameters.Q.GetEncoded(true), generatedKeyParameters.Q.GetEncoded(true)))
- {
- return new SimpleTestResult(false, "Q does not match");
- }
+ if (!Arrays.AreEqual(keyParameters.Q.GetEncoded(true), generatedKeyParameters.Q.GetEncoded(true)))
+ {
+ return new SimpleTestResult(false, "Q does not match");
+ }
- if (!keyParameters.Parameters.Curve.Equals(generatedKeyParameters.Parameters.Curve))
- {
- return new SimpleTestResult(false, "Curve does not match");
- }
+ if (!keyParameters.Parameters.Curve.Equals(generatedKeyParameters.Parameters.Curve))
+ {
+ return new SimpleTestResult(false, "Curve does not match");
+ }
- if (!Arrays.AreEqual(
- keyParameters.Parameters.G.GetEncoded(true),
- generatedKeyParameters.Parameters.G.GetEncoded(true)))
- {
- return new SimpleTestResult(false, "G does not match");
- }
+ if (!Arrays.AreEqual(
+ keyParameters.Parameters.G.GetEncoded(true),
+ generatedKeyParameters.Parameters.G.GetEncoded(true)))
+ {
+ return new SimpleTestResult(false, "G does not match");
+ }
- if (!keyParameters.Parameters.H.Equals(generatedKeyParameters.Parameters.H))
- {
- return new SimpleTestResult(false, "H does not match");
- }
+ if (!keyParameters.Parameters.H.Equals(generatedKeyParameters.Parameters.H))
+ {
+ return new SimpleTestResult(false, "H does not match");
+ }
- if (!keyParameters.Parameters.HInv.Equals(generatedKeyParameters.Parameters.HInv))
- {
- return new SimpleTestResult(false, "Hinv does not match");
- }
+ if (!keyParameters.Parameters.HInv.Equals(generatedKeyParameters.Parameters.HInv))
+ {
+ return new SimpleTestResult(false, "Hinv does not match");
+ }
- if (!keyParameters.Parameters.N.Equals(generatedKeyParameters.Parameters.N))
- {
- return new SimpleTestResult(false, "N does not match");
- }
+ if (!keyParameters.Parameters.N.Equals(generatedKeyParameters.Parameters.N))
+ {
+ return new SimpleTestResult(false, "N does not match");
+ }
- if (!Arrays.AreEqual(keyParameters.Parameters.GetSeed(), generatedKeyParameters.Parameters.GetSeed()))
- {
- return new SimpleTestResult(false, "Seed does not match");
- }
+ if (!Arrays.AreEqual(keyParameters.Parameters.GetSeed(), generatedKeyParameters.Parameters.GetSeed()))
+ {
+ return new SimpleTestResult(false, "Seed does not match");
}
- return new SimpleTestResult(true, null);
-
+ }
+ return new SimpleTestResult(true, null);
}
-
private SimpleTestResult EncodeRecodePrivateKey()
{
-
- DerObjectIdentifier oid = ECGost3410NamedCurves.GetOid("Tc26-Gost-3410-12-512-paramSetA");
- ECNamedDomainParameters ecp = new ECNamedDomainParameters(oid, ECGost3410NamedCurves.GetByOid(oid));
- ECGost3410Parameters gostParams = new ECGost3410Parameters(ecp, oid, RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512,null);
- ECKeyGenerationParameters parameters = new ECKeyGenerationParameters(gostParams, new SecureRandom());
- ECKeyPairGenerator engine = new ECKeyPairGenerator();
- engine.Init(parameters);
- AsymmetricCipherKeyPair pair = engine.GenerateKeyPair();
-
- ECPrivateKeyParameters generatedKeyParameters = (ECPrivateKeyParameters)pair.Private;
- ECPrivateKeyParameters keyParameters = generatedKeyParameters;
-
+ DerObjectIdentifier oid = ECGost3410NamedCurves.GetOid("Tc26-Gost-3410-12-512-paramSetA");
+ ECNamedDomainParameters ecp = new ECNamedDomainParameters(oid, ECGost3410NamedCurves.GetByOid(oid));
+ ECGost3410Parameters gostParams = new ECGost3410Parameters(ecp, oid, RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512, null);
+ ECKeyGenerationParameters parameters = new ECKeyGenerationParameters(gostParams, new SecureRandom());
+ ECKeyPairGenerator engine = new ECKeyPairGenerator();
+ engine.Init(parameters);
+ AsymmetricCipherKeyPair pair = engine.GenerateKeyPair();
- //
- // Continuously encode/decode the key and check for loss of information.
- //
+ ECPrivateKeyParameters generatedKeyParameters = (ECPrivateKeyParameters)pair.Private;
+ ECPrivateKeyParameters keyParameters = generatedKeyParameters;
+ //
+ // Continuously encode/decode the key and check for loss of information.
+ //
+ for (int t = 0; t < 3; t++)
+ {
+ PrivateKeyInfo info = PrivateKeyInfoFactory.CreatePrivateKeyInfo(keyParameters);
+ keyParameters = (ECPrivateKeyParameters)PrivateKeyFactory.CreateKey(info);
- for (int t = 0; t < 3; t++)
{
- PrivateKeyInfo info = PrivateKeyInfoFactory.CreatePrivateKeyInfo(keyParameters);
- keyParameters = (ECPrivateKeyParameters)PrivateKeyFactory.CreateKey(info);
-
- { // Specifically cast and test gost parameters.
- ECGost3410Parameters gParam = (ECGost3410Parameters)generatedKeyParameters.Parameters;
- ECGost3410Parameters rParam = (ECGost3410Parameters)keyParameters.Parameters;
-
- bool ok = SafeEquals(gParam.DigestParamSet, rParam.DigestParamSet) &&
- SafeEquals(gParam.EncryptionParamSet, rParam.EncryptionParamSet) &&
- SafeEquals(gParam.PublicKeyParamSet, rParam.PublicKeyParamSet);
-
- if (!ok)
- {
- return new SimpleTestResult(false, "GOST parameters does not match");
- }
-
- }
-
- if (keyParameters.IsPrivate != generatedKeyParameters.IsPrivate)
- {
- return new SimpleTestResult(false, "isPrivate does not match");
- }
-
- if (!keyParameters.D.Equals(generatedKeyParameters.D))
- {
- return new SimpleTestResult(false, "D does not match");
- }
-
- if (!((ECGost3410Parameters)keyParameters.Parameters).Name.Equals(
- ((ECGost3410Parameters)generatedKeyParameters.Parameters).Name))
- {
- return new SimpleTestResult(false, "Name does not match");
- }
-
- if (!keyParameters.Parameters.Curve.Equals(generatedKeyParameters.Parameters.Curve))
- {
- return new SimpleTestResult(false, "Curve does not match");
- }
-
- if (!Arrays.AreEqual(
- keyParameters.Parameters.G.GetEncoded(true),
- generatedKeyParameters.Parameters.G.GetEncoded(true)))
- {
- return new SimpleTestResult(false, "G does not match");
- }
+ // Specifically cast and test gost parameters.
+ ECGost3410Parameters gParam = (ECGost3410Parameters)generatedKeyParameters.Parameters;
+ ECGost3410Parameters rParam = (ECGost3410Parameters)keyParameters.Parameters;
- if (!keyParameters.Parameters.H.Equals(generatedKeyParameters.Parameters.H))
- {
- return new SimpleTestResult(false, "H does not match");
- }
-
- if (!keyParameters.Parameters.HInv.Equals(generatedKeyParameters.Parameters.HInv))
- {
- return new SimpleTestResult(false, "Hinv does not match");
- }
-
- if (!keyParameters.Parameters.N.Equals(generatedKeyParameters.Parameters.N))
- {
- return new SimpleTestResult(false, "N does not match");
- }
+ bool ok = SafeEquals(gParam.DigestParamSet, rParam.DigestParamSet) &&
+ SafeEquals(gParam.EncryptionParamSet, rParam.EncryptionParamSet) &&
+ SafeEquals(gParam.PublicKeyParamSet, rParam.PublicKeyParamSet);
- if (!Arrays.AreEqual(keyParameters.Parameters.GetSeed(), generatedKeyParameters.Parameters.GetSeed()))
+ if (!ok)
{
- return new SimpleTestResult(false, "Seed does not match");
+ return new SimpleTestResult(false, "GOST parameters does not match");
}
}
-
-
- return new SimpleTestResult(true, null);
- }
-
- private SimpleTestResult DecodeJCEPublic()
- {
- byte[] pub256 = Hex.Decode("3068302106082a85030701010101301506092a850307010201010106082a850307010102020343000440292335c87d892510c35a033819a13e2b0dc606d911676af2bad8872d74a4b7bae6c729e98ace04c3dee626343f794731e1489edb7bc26f1c8c56e1448c96501a");
-
- ECPublicKeyParameters pkInfo = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(pub256);
-
- if (pkInfo.IsPrivate)
+ if (keyParameters.IsPrivate != generatedKeyParameters.IsPrivate)
{
- return new SimpleTestResult(false, "isPrivate should be false");
+ return new SimpleTestResult(false, "isPrivate does not match");
}
- if (
- !Arrays.AreEqual(
- pkInfo.Q.GetEncoded(true),
- Hex.Decode("02bab7a4742d87d8baf26a6711d906c60d2b3ea11938035ac31025897dc8352329")))
+ if (!keyParameters.D.Equals(generatedKeyParameters.D))
{
- return new SimpleTestResult(false, "Q does not match");
+ return new SimpleTestResult(false, "D does not match");
}
- if (!((ECGost3410Parameters)pkInfo.Parameters).PublicKeyParamSet.ToString().Equals("1.2.643.7.1.2.1.1.1"))
+ if (!((ECGost3410Parameters)keyParameters.Parameters).Name.Equals(
+ ((ECGost3410Parameters)generatedKeyParameters.Parameters).Name))
{
- return new SimpleTestResult(false, "PublicKeyParamSet does not match");
+ return new SimpleTestResult(false, "Name does not match");
}
- if (!((ECGost3410Parameters)pkInfo.Parameters).DigestParamSet.ToString().Equals("1.2.643.7.1.1.2.2"))
+ if (!keyParameters.Parameters.Curve.Equals(generatedKeyParameters.Parameters.Curve))
{
- return new SimpleTestResult(false, "DigestParamSet does not match");
+ return new SimpleTestResult(false, "Curve does not match");
}
- if (((ECGost3410Parameters)pkInfo.Parameters).EncryptionParamSet != null)
+ if (!Arrays.AreEqual(
+ keyParameters.Parameters.G.GetEncoded(true),
+ generatedKeyParameters.Parameters.G.GetEncoded(true)))
{
- return new SimpleTestResult(false, "EncryptionParamSet is not null");
+ return new SimpleTestResult(false, "G does not match");
}
-
- byte[] pub512 = Hex.Decode("3081aa302106082a85030701010102301506092a850307010201020106082a850307010102030381840004818043ccc22692ee8a1870c7c9de0566d7e3a494cf0e3c80f9e8852a3d1ec10d2a829d357253e0864aee2eaacd5e2d327578dee771f62f24decfd6358e06199efe540e7912db43c4c80fe0fd31f7f67a862f9d44fd0075cfee6e3d638c7520063d26311ef962547e8129fb8c5b194e129370cd30313884b4a60872254a10772fe595");
-
- pkInfo = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(pub512);
-
- if (pkInfo.IsPrivate)
+ if (!keyParameters.Parameters.H.Equals(generatedKeyParameters.Parameters.H))
{
- return new SimpleTestResult(false, "isPrivate should be true");
+ return new SimpleTestResult(false, "H does not match");
}
- if (
- !Arrays.AreEqual(
- pkInfo.Q.GetEncoded(true),
- Hex.Decode("0254fe9e19068e35d6cfde242ff671e7de7875322d5ecdaa2eee4a86e05372359d822a0dc11e3d2a85e8f9803c0ecf94a4e3d76605dec9c770188aee9226c2cc43")))
+ if (!keyParameters.Parameters.HInv.Equals(generatedKeyParameters.Parameters.HInv))
{
- return new SimpleTestResult(false, "Q does not match");
+ return new SimpleTestResult(false, "Hinv does not match");
}
-
- if (!((ECGost3410Parameters)pkInfo.Parameters).PublicKeyParamSet.ToString().Equals("1.2.643.7.1.2.1.2.1"))
+ if (!keyParameters.Parameters.N.Equals(generatedKeyParameters.Parameters.N))
{
- return new SimpleTestResult(false, "PublicKeyParamSet does not match");
+ return new SimpleTestResult(false, "N does not match");
}
- if (!((ECGost3410Parameters)pkInfo.Parameters).DigestParamSet.ToString().Equals("1.2.643.7.1.1.2.3"))
+ if (!Arrays.AreEqual(keyParameters.Parameters.GetSeed(), generatedKeyParameters.Parameters.GetSeed()))
{
- return new SimpleTestResult(false, "DigestParamSet does not match");
+ return new SimpleTestResult(false, "Seed does not match");
}
+ }
- if (((ECGost3410Parameters)pkInfo.Parameters).EncryptionParamSet != null)
- {
- return new SimpleTestResult(false, "EncryptionParamSet is not null");
- }
+ return new SimpleTestResult(true, null);
+ }
+
+ private SimpleTestResult DecodeJCEPublic()
+ {
+ byte[] pub256 = Hex.Decode("3068302106082a85030701010101301506092a850307010201010106082a850307010102020343000440292335c87d892510c35a033819a13e2b0dc606d911676af2bad8872d74a4b7bae6c729e98ace04c3dee626343f794731e1489edb7bc26f1c8c56e1448c96501a");
+
+ ECPublicKeyParameters pkInfo = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(pub256);
+ if (pkInfo.IsPrivate)
+ {
+ return new SimpleTestResult(false, "isPrivate should be false");
+ }
+
+ if (!Arrays.AreEqual(
+ pkInfo.Q.GetEncoded(true),
+ Hex.Decode("02bab7a4742d87d8baf26a6711d906c60d2b3ea11938035ac31025897dc8352329")))
+ {
+ return new SimpleTestResult(false, "Q does not match");
+ }
+
+ if (!((ECGost3410Parameters)pkInfo.Parameters).PublicKeyParamSet.ToString().Equals("1.2.643.7.1.2.1.1.1"))
+ {
+ return new SimpleTestResult(false, "PublicKeyParamSet does not match");
+ }
+
+ if (!((ECGost3410Parameters)pkInfo.Parameters).DigestParamSet.ToString().Equals("1.2.643.7.1.1.2.2"))
+ {
+ return new SimpleTestResult(false, "DigestParamSet does not match");
+ }
+
+ if (((ECGost3410Parameters)pkInfo.Parameters).EncryptionParamSet != null)
+ {
+ return new SimpleTestResult(false, "EncryptionParamSet is not null");
+ }
+
+ byte[] pub512 = Hex.Decode("3081aa302106082a85030701010102301506092a850307010201020106082a850307010102030381840004818043ccc22692ee8a1870c7c9de0566d7e3a494cf0e3c80f9e8852a3d1ec10d2a829d357253e0864aee2eaacd5e2d327578dee771f62f24decfd6358e06199efe540e7912db43c4c80fe0fd31f7f67a862f9d44fd0075cfee6e3d638c7520063d26311ef962547e8129fb8c5b194e129370cd30313884b4a60872254a10772fe595");
+
+ pkInfo = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(pub512);
+ if (pkInfo.IsPrivate)
+ {
+ return new SimpleTestResult(false, "isPrivate should be true");
+ }
-
+ if (!Arrays.AreEqual(
+ pkInfo.Q.GetEncoded(true),
+ Hex.Decode("0254fe9e19068e35d6cfde242ff671e7de7875322d5ecdaa2eee4a86e05372359d822a0dc11e3d2a85e8f9803c0ecf94a4e3d76605dec9c770188aee9226c2cc43")))
+ {
+ return new SimpleTestResult(false, "Q does not match");
+ }
+
+ if (!((ECGost3410Parameters)pkInfo.Parameters).PublicKeyParamSet.ToString().Equals("1.2.643.7.1.2.1.2.1"))
+ {
+ return new SimpleTestResult(false, "PublicKeyParamSet does not match");
+ }
+
+ if (!((ECGost3410Parameters)pkInfo.Parameters).DigestParamSet.ToString().Equals("1.2.643.7.1.1.2.3"))
+ {
+ return new SimpleTestResult(false, "DigestParamSet does not match");
+ }
+
+ if (((ECGost3410Parameters)pkInfo.Parameters).EncryptionParamSet != null)
+ {
+ return new SimpleTestResult(false, "EncryptionParamSet is not null");
+ }
return new SimpleTestResult(true, null);
}
private SimpleTestResult DecodeJCEPrivate()
{
- byte[] priv256 = Hex.Decode("304a020100302106082a85030701010101301506092a850307010201010106082a8503070101020204220420fe75ba328d5439ed4859e6dc7e6ca2e9aab0818f094eddeb0d57d1c16a90762b");
- ECPrivateKeyParameters pkInfo = (ECPrivateKeyParameters)PrivateKeyFactory.CreateKey(priv256);
+ byte[] priv256 = Hex.Decode("304a020100302106082a85030701010101301506092a850307010201010106082a8503070101020204220420fe75ba328d5439ed4859e6dc7e6ca2e9aab0818f094eddeb0d57d1c16a90762b");
+ ECPrivateKeyParameters pkInfo = (ECPrivateKeyParameters)PrivateKeyFactory.CreateKey(priv256);
- if (!pkInfo.IsPrivate)
- {
- return new SimpleTestResult(false, "isPrivate should be true");
- }
-
- if (
- !Arrays.AreEqual(
- Hex.Decode("2b76906ac1d1570debdd4e098f81b0aae9a26c7edce65948ed39548d32ba75fe"),
- pkInfo.D.ToByteArray()))
- {
- return new SimpleTestResult(false, "D does not match");
- }
+ if (!pkInfo.IsPrivate)
+ {
+ return new SimpleTestResult(false, "isPrivate should be true");
+ }
- if (!((ECGost3410Parameters)pkInfo.Parameters).PublicKeyParamSet.ToString().Equals("1.2.643.7.1.2.1.1.1"))
- {
- return new SimpleTestResult(false, "PublicKeyParamSet does not match");
- }
+ if (!Arrays.AreEqual(
+ Hex.Decode("2b76906ac1d1570debdd4e098f81b0aae9a26c7edce65948ed39548d32ba75fe"),
+ pkInfo.D.ToByteArray()))
+ {
+ return new SimpleTestResult(false, "D does not match");
+ }
- if (!((ECGost3410Parameters)pkInfo.Parameters).DigestParamSet.ToString().Equals("1.2.643.7.1.1.2.2"))
- {
- return new SimpleTestResult(false, "DigestParamSet does not match");
- }
+ if (!((ECGost3410Parameters)pkInfo.Parameters).PublicKeyParamSet.ToString().Equals("1.2.643.7.1.2.1.1.1"))
+ {
+ return new SimpleTestResult(false, "PublicKeyParamSet does not match");
+ }
- if (((ECGost3410Parameters)pkInfo.Parameters).EncryptionParamSet != null)
- {
- return new SimpleTestResult(false, "EncryptionParamSet is not null");
- }
+ if (!((ECGost3410Parameters)pkInfo.Parameters).DigestParamSet.ToString().Equals("1.2.643.7.1.1.2.2"))
+ {
+ return new SimpleTestResult(false, "DigestParamSet does not match");
+ }
+ if (((ECGost3410Parameters)pkInfo.Parameters).EncryptionParamSet != null)
+ {
+ return new SimpleTestResult(false, "EncryptionParamSet is not null");
+ }
- byte[] priv512 = Hex.Decode("306a020100302106082a85030701010102301506092a850307010201020106082a85030701010203044204402fc35576152f6e873236608b592b4b98d0793bf5184f8dc4a99512be703716991a96061ef46aceeae5319b5c69e6fcbfa7e339207878597ce50f9b7cbf857ff1");
- pkInfo = (ECPrivateKeyParameters)PrivateKeyFactory.CreateKey(priv512);
+ byte[] priv512 = Hex.Decode("306a020100302106082a85030701010102301506092a850307010201020106082a85030701010203044204402fc35576152f6e873236608b592b4b98d0793bf5184f8dc4a99512be703716991a96061ef46aceeae5319b5c69e6fcbfa7e339207878597ce50f9b7cbf857ff1");
- if (!pkInfo.IsPrivate)
- {
- return new SimpleTestResult(false, "isPrivate should be true");
- }
+ pkInfo = (ECPrivateKeyParameters)PrivateKeyFactory.CreateKey(priv512);
- if (
- !Arrays.AreEqual(
- Hex.Decode("00f17f85bf7c9b0fe57c5978782039e3a7bffce6695c9b31e5eace6af41e06961a99163770be1295a9c48d4f18f53b79d0984b2b598b603632876e2f157655c32f"),
- pkInfo.D.ToByteArray()))
- {
- return new SimpleTestResult(false, "D does not match");
- }
+ if (!pkInfo.IsPrivate)
+ {
+ return new SimpleTestResult(false, "isPrivate should be true");
+ }
- if (!((ECGost3410Parameters)pkInfo.Parameters).PublicKeyParamSet.ToString().Equals("1.2.643.7.1.2.1.2.1"))
- {
- return new SimpleTestResult(false, "PublicKeyParamSet does not match");
- }
+ if (!Arrays.AreEqual(
+ Hex.Decode("00f17f85bf7c9b0fe57c5978782039e3a7bffce6695c9b31e5eace6af41e06961a99163770be1295a9c48d4f18f53b79d0984b2b598b603632876e2f157655c32f"),
+ pkInfo.D.ToByteArray()))
+ {
+ return new SimpleTestResult(false, "D does not match");
+ }
- if (!((ECGost3410Parameters)pkInfo.Parameters).DigestParamSet.ToString().Equals("1.2.643.7.1.1.2.3"))
- {
- return new SimpleTestResult(false, "DigestParamSet does not match");
- }
+ if (!((ECGost3410Parameters)pkInfo.Parameters).PublicKeyParamSet.ToString().Equals("1.2.643.7.1.2.1.2.1"))
+ {
+ return new SimpleTestResult(false, "PublicKeyParamSet does not match");
+ }
- if (((ECGost3410Parameters)pkInfo.Parameters).EncryptionParamSet != null)
- {
- return new SimpleTestResult(false, "EncryptionParamSet is not null");
- }
+ if (!((ECGost3410Parameters)pkInfo.Parameters).DigestParamSet.ToString().Equals("1.2.643.7.1.1.2.3"))
+ {
+ return new SimpleTestResult(false, "DigestParamSet does not match");
+ }
-
+ if (((ECGost3410Parameters)pkInfo.Parameters).EncryptionParamSet != null)
+ {
+ return new SimpleTestResult(false, "EncryptionParamSet is not null");
+ }
return new SimpleTestResult(true, null);
}
-
-
- public SimpleTestResult EncodeDecodePrivateLW(String oidStr, DerObjectIdentifier digest)
+ public SimpleTestResult EncodeDecodePrivateLW(string oidStr, DerObjectIdentifier digest)
{
DerObjectIdentifier oid = ECGost3410NamedCurves.GetOid(oidStr);
ECNamedDomainParameters ecp = new ECNamedDomainParameters(oid, ECGost3410NamedCurves.GetByOid(oid));
@@ -369,15 +345,14 @@ namespace Org.BouncyCastle.Crypto.Tests
engine.Init(parameters);
AsymmetricCipherKeyPair pair = engine.GenerateKeyPair();
-
- ECPrivateKeyParameters generatedKeyParameters = (ECPrivateKeyParameters) pair.Private;
+ ECPrivateKeyParameters generatedKeyParameters = (ECPrivateKeyParameters)pair.Private;
PrivateKeyInfo info = PrivateKeyInfoFactory.CreatePrivateKeyInfo(generatedKeyParameters);
ECPrivateKeyParameters recoveredKeyParameters = (ECPrivateKeyParameters)PrivateKeyFactory.CreateKey(info);
-
- { // Specifically cast and test gost parameters.
+ {
+ // Specifically cast and test gost parameters.
ECGost3410Parameters gParam = (ECGost3410Parameters)generatedKeyParameters.Parameters;
ECGost3410Parameters rParam = (ECGost3410Parameters)recoveredKeyParameters.Parameters;
@@ -389,10 +364,8 @@ namespace Org.BouncyCastle.Crypto.Tests
{
return new SimpleTestResult(false, "GOST parameters does not match");
}
-
}
-
if (recoveredKeyParameters.IsPrivate != generatedKeyParameters.IsPrivate)
{
return new SimpleTestResult(false, "isPrivate does not match");
@@ -446,10 +419,10 @@ namespace Org.BouncyCastle.Crypto.Tests
}
public SimpleTestResult EncodeDecodePublicLW(string oidStr, DerObjectIdentifier digest)
- {
+ {
DerObjectIdentifier oid = ECGost3410NamedCurves.GetOid(oidStr);
ECNamedDomainParameters ecp = new ECNamedDomainParameters(oid, ECGost3410NamedCurves.GetByOid(oid));
- ECGost3410Parameters gostParams = new ECGost3410Parameters(ecp,oid,digest,null);
+ ECGost3410Parameters gostParams = new ECGost3410Parameters(ecp, oid, digest, null);
ECKeyGenerationParameters parameters = new ECKeyGenerationParameters(gostParams, new SecureRandom());
ECKeyPairGenerator engine = new ECKeyPairGenerator();
engine.Init(parameters);
@@ -460,35 +433,35 @@ namespace Org.BouncyCastle.Crypto.Tests
ECPublicKeyParameters recoveredKeyParameters = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(info);
- { // Specifically cast and test gost parameters.
+ {
+ // Specifically cast and test gost parameters.
ECGost3410Parameters gParam = (ECGost3410Parameters)generatedKeyParameters.Parameters;
ECGost3410Parameters rParam = (ECGost3410Parameters)recoveredKeyParameters.Parameters;
-
- bool ok = SafeEquals(gParam.DigestParamSet, rParam.DigestParamSet) &&
- SafeEquals(gParam.EncryptionParamSet, rParam.EncryptionParamSet) &&
- SafeEquals(gParam.PublicKeyParamSet, rParam.PublicKeyParamSet);
+ bool ok = SafeEquals(gParam.DigestParamSet, rParam.DigestParamSet)
+ && SafeEquals(gParam.EncryptionParamSet, rParam.EncryptionParamSet)
+ && SafeEquals(gParam.PublicKeyParamSet, rParam.PublicKeyParamSet);
if (!ok)
{
return new SimpleTestResult(false, "GOST parameters does not match");
}
-
}
if (!((ECGost3410Parameters)recoveredKeyParameters.Parameters).Name.Equals(
- ((ECGost3410Parameters)generatedKeyParameters.Parameters).Name))
+ ((ECGost3410Parameters)generatedKeyParameters.Parameters).Name))
{
return new SimpleTestResult(false, "Name does not match");
}
-
if (recoveredKeyParameters.IsPrivate != generatedKeyParameters.IsPrivate)
{
return new SimpleTestResult(false, "isPrivate does not match");
}
- if (!Arrays.AreEqual(recoveredKeyParameters.Q.GetEncoded(true), generatedKeyParameters.Q.GetEncoded(true)))
+ if (!Arrays.AreEqual(
+ recoveredKeyParameters.Q.GetEncoded(true),
+ generatedKeyParameters.Q.GetEncoded(true)))
{
return new SimpleTestResult(false, "Q does not match");
}
@@ -525,13 +498,12 @@ namespace Org.BouncyCastle.Crypto.Tests
return new SimpleTestResult(false, "Seed does not match");
}
- return new SimpleTestResult(true, null);
+ return new SimpleTestResult(true, null);
}
[Test]
public override void PerformTest()
{
-
SimpleTestResult str = EncodeDecodePublicLW("Tc26-Gost-3410-12-512-paramSetA", RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512);
if (!str.IsSuccessful())
{
@@ -544,7 +516,6 @@ namespace Org.BouncyCastle.Crypto.Tests
Fail(str.ToString(), str.GetException());
}
-
str = EncodeDecodePublicLW("Tc26-Gost-3410-12-256-paramSetA", RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256);
if (!str.IsSuccessful())
{
@@ -557,7 +528,6 @@ namespace Org.BouncyCastle.Crypto.Tests
Fail(str.ToString(), str.GetException());
}
-
str = DecodeJCEPrivate();
if (!str.IsSuccessful())
{
@@ -581,7 +551,6 @@ namespace Org.BouncyCastle.Crypto.Tests
{
Fail(str.ToString(), str.GetException());
}
-
}
private bool SafeEquals(object left, object right)
@@ -594,4 +563,4 @@ namespace Org.BouncyCastle.Crypto.Tests
return left.Equals(right);
}
}
-}
\ No newline at end of file
+}
diff --git a/crypto/test/src/crypto/test/EGOST3410_2012SignatureTest.cs b/crypto/test/src/crypto/test/EGOST3410_2012SignatureTest.cs
deleted file mode 100644
index 7c9801430..000000000
--- a/crypto/test/src/crypto/test/EGOST3410_2012SignatureTest.cs
+++ /dev/null
@@ -1,187 +0,0 @@
-using System;
-using System.Security.Cryptography.X509Certificates;
-using NUnit.Framework;
-using Org.BouncyCastle.Asn1;
-using Org.BouncyCastle.Asn1.CryptoPro;
-using Org.BouncyCastle.Asn1.Rosstandart;
-using Org.BouncyCastle.Crypto.Generators;
-using Org.BouncyCastle.Crypto.Parameters;
-using Org.BouncyCastle.Crypto.Signers;
-using Org.BouncyCastle.Math;
-using Org.BouncyCastle.Math.EC;
-using Org.BouncyCastle.Pkcs;
-using Org.BouncyCastle.Security;
-using Org.BouncyCastle.Utilities;
-using Org.BouncyCastle.Utilities.Encoders;
-using Org.BouncyCastle.Utilities.Test;
-using Org.BouncyCastle.X509;
-
-namespace Org.BouncyCastle.Crypto.Tests
-{
- [TestFixture]
- public class EGOST3410_2012SignatureTest : SimpleTest
- {
- public override string Name { get; }
-
- [Test]
- public override void PerformTest()
- {
- EcGOST34102012256Test();
- }
-
-
- public void EcGOST34102012256Test()
- {
- BigInteger r = new BigInteger("29700980915817952874371204983938256990422752107994319651632687982059210933395");
- BigInteger s = new BigInteger("574973400270084654178925310019147038455227042649098563933718999175515839552");
-
- BigInteger e = new BigInteger("20798893674476452017134061561508270130637142515379653289952617252661468872421");
-
- byte[] kData = BigIntegers.AsUnsignedByteArray(new BigInteger("53854137677348463731403841147996619241504003434302020712960838528893196233395"));
- SecureRandom k = new TestRandomBigInteger(kData);
-
- BigInteger mod_p = new BigInteger("57896044618658097711785492504343953926634992332820282019728792003956564821041");
- BigInteger mod_q = new BigInteger("57896044618658097711785492504343953927082934583725450622380973592137631069619");
-
-
- ECCurve curve = new FpCurve(
- mod_p,
- new BigInteger("7"), // a
- new BigInteger("43308876546767276905765904595650931995942111794451039583252968842033849580414"), // b
- mod_q, BigInteger.One);
-
- ECDomainParameters spec = new ECDomainParameters(curve,
- curve.CreatePoint(
- new BigInteger("2"), // x
- new BigInteger("4018974056539037503335449422937059775635739389905545080690979365213431566280")), // y
- mod_q, BigInteger.One);
-
- ECPrivateKeyParameters privateKey = new ECPrivateKeyParameters(
- new BigInteger("55441196065363246126355624130324183196576709222340016572108097750006097525544"), // d
- spec);
-
- ECPublicKeyParameters publicKey = new ECPublicKeyParameters(curve.CreatePoint(
- new BigInteger("57520216126176808443631405023338071176630104906313632182896741342206604859403"), // x
- new BigInteger("17614944419213781543809391949654080031942662045363639260709847859438286763994")), // y
- spec);
-
- ECGost3410_2012Signer signer = new ECGost3410_2012Signer();
- signer.Init(true, new ParametersWithRandom(privateKey, k));
-
- byte[] rev = e.ToByteArray();
- byte[] message = new byte[rev.Length];
- for (int i = 0; i != rev.Length; i++)
- {
- message[i] = rev[rev.Length - 1 - i];
- }
- BigInteger[] sig = signer.GenerateSignature(message);
-
- signer.Init(false, publicKey);
-
- if (!signer.VerifySignature(message, sig[0], sig[1]))
- {
- Fail("ECGOST3410 2012 verification failed");
- }
-
- if (!r.Equals(sig[0]))
- {
- Fail(
- ": r component wrong." + Environment.NewLine
- + " expecting: " + r + Environment.NewLine
- + " got : " + sig[0]);
- }
-
- if (!s.Equals(sig[1]))
- {
- Fail(
- ": s component wrong." + Environment.NewLine
- + " expecting: " + s + Environment.NewLine
- + " got : " + sig[1]);
- }
-
-
- // 256Bit
- {
- DerObjectIdentifier oid = RosstandartObjectIdentifiers.id_tc26_gost_3410_12_256_paramSetA;
- ECNamedDomainParameters ecp = new ECNamedDomainParameters(oid, ECGost3410NamedCurves.GetByOid(oid));
- ECGost3410Parameters gostParams = new ECGost3410Parameters(ecp, oid,
- RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256, null);
- ECKeyGenerationParameters parameters = new ECKeyGenerationParameters(gostParams, new SecureRandom());
- ECKeyPairGenerator engine = new ECKeyPairGenerator();
- engine.Init(parameters);
- AsymmetricCipherKeyPair pair = engine.GenerateKeyPair();
- SignatureGost12Test("ECGOST3410-2012-256", 64, pair);
- }
-
- // 512Bit
-
-
- {
- DerObjectIdentifier oid = RosstandartObjectIdentifiers.id_tc26_gost_3410_12_512_paramSetA;
- ECNamedDomainParameters ecp = new ECNamedDomainParameters(oid, ECGost3410NamedCurves.GetByOid(oid));
- ECGost3410Parameters gostParams = new ECGost3410Parameters(ecp, oid,
- RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512, null);
- ECKeyGenerationParameters parameters = new ECKeyGenerationParameters(gostParams, new SecureRandom());
- ECKeyPairGenerator engine = new ECKeyPairGenerator();
- engine.Init(parameters);
- AsymmetricCipherKeyPair pair = engine.GenerateKeyPair();
-
- SignatureGost12Test("ECGOST3410-2012-512", 128, pair);
-
- }
- }
-
-
-
- private void SignatureGost12Test(String signatureAlg, int expectedSignLen, AsymmetricCipherKeyPair p)
-
- {
- byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
-
- ECPrivateKeyParameters sKey = (ECPrivateKeyParameters)p.Private;
- ECPublicKeyParameters vKey = (ECPublicKeyParameters)p.Public;
-
- ECGost3410_2012Signer s = new ECGost3410_2012Signer();
-
- s.Init(true, sKey);
- BigInteger[] sig = s.GenerateSignature(data);
-
-
- s = new ECGost3410_2012Signer();
- s.Init(false, vKey);
-
- if (!s.VerifySignature(data, sig[0], sig[1]))
- {
- Fail("Signature " + signatureAlg + " did not verify");
- }
-
- //
- // Test with Digest signer.
- //
- Gost3410DigestSigner digestSigner = new Gost3410DigestSigner(
- new ECGost3410_2012Signer(),
- DigestUtilities.GetDigest(((ECGost3410Parameters)vKey.Parameters).DigestParamSet));
- digestSigner.Init(true, sKey);
- digestSigner.BlockUpdate(data, 0, data.Length);
- byte[] sigBytes = digestSigner.GenerateSignature();
-
- if (sigBytes.Length != expectedSignLen)
- {
- Fail(signatureAlg + " signature failed at expected length");
- }
-
- digestSigner = new Gost3410DigestSigner(
- new ECGost3410_2012Signer(),
- DigestUtilities.GetDigest(((ECGost3410Parameters)vKey.Parameters).DigestParamSet));
- digestSigner.Init(false, vKey);
- digestSigner.BlockUpdate(data, 0, data.Length);
-
- if (!digestSigner.VerifySignature(sigBytes))
- {
- Fail("Signature " + signatureAlg + " did not verify");
- }
- }
-
-
- }
-}
\ No newline at end of file
diff --git a/crypto/test/src/crypto/test/RegressionTest.cs b/crypto/test/src/crypto/test/RegressionTest.cs
index f8b5c3c79..9353ec969 100644
--- a/crypto/test/src/crypto/test/RegressionTest.cs
+++ b/crypto/test/src/crypto/test/RegressionTest.cs
@@ -23,6 +23,7 @@ namespace Org.BouncyCastle.Crypto.Tests
new DeterministicDsaTest(),
new Gost3410Test(),
new ECGost3410Test(),
+ new ECGost3410_2012Test(),
new EcIesTest(),
new EcNrTest(),
new MacTest(),
diff --git a/crypto/test/src/util/test/FixedSecureRandom.cs b/crypto/test/src/util/test/FixedSecureRandom.cs
index 1368aa231..682b3eefa 100644
--- a/crypto/test/src/util/test/FixedSecureRandom.cs
+++ b/crypto/test/src/util/test/FixedSecureRandom.cs
@@ -143,7 +143,7 @@ namespace Org.BouncyCastle.Utilities.Test
bOut.Write(sources[i].data, 0, sources[i].data.Length);
}
}
- catch (IOException e)
+ catch (IOException)
{
throw new ArgumentException("can't save value source.");
}
@@ -157,7 +157,7 @@ namespace Org.BouncyCastle.Utilities.Test
{
bOut.Write(sources[i].data, 0, sources[i].data.Length);
}
- catch (IOException e)
+ catch (IOException)
{
throw new ArgumentException("can't save value source.");
}
@@ -195,7 +195,7 @@ namespace Org.BouncyCastle.Utilities.Test
bOut.Write(sources[i].data, 0, sources[i].data.Length);
}
}
- catch (IOException e)
+ catch (IOException)
{
throw new ArgumentException("can't save value source.");
}
|