コード例 #1
0
            public IPasswordBasedDeriver <PbkdParameters> Build()
            {
                Utils.ApprovedModeCheck("PKCS12 PBE", ALGORITHM_OPENSSL);

                PbkdParameters parameters = new PbkdParameters(digestAlgorithm, converter, password, iterationCount, salt);

                Pkcs12ParametersGenerator gen = new Pkcs12ParametersGenerator(FipsShs.CreateDigest(parameters.Prf));

                gen.Init(parameters.Password, parameters.Salt, parameters.IterationCount);

                return(new PasswordBasedDeriver <PbkdParameters>(parameters, gen));
            }
コード例 #2
0
        private static DigestRandomGenerator CreatePrng(string digestName, bool autoSeed)
        {
            IDigest digest = FipsShs.CreateDigest(FipsShs.Sha256);

            if (digest == null)
            {
                return(null);
            }
            DigestRandomGenerator prng = new DigestRandomGenerator(digest);

            if (autoSeed)
            {
                prng.AddSeedMaterial(NextCounterValue());
                prng.AddSeedMaterial(GetNextBytes(Master, digest.GetDigestSize()));
            }
            return(prng);
        }
コード例 #3
0
ファイル: ElGamal.cs プロジェクト: NDWX/BouncyCastle.FIPS
        private static IAsymmetricBlockCipher createCipher(bool forEncryption, IAsymmetricKey key, IParameters<Algorithm> parameters, SecureRandom random)
        {
            IAsymmetricBlockCipher engine = new ElGamalEngine();

            ICipherParameters lwParams;

            if (key is AsymmetricDHPublicKey)
            {
                AsymmetricDHPublicKey k = (AsymmetricDHPublicKey)key;

                lwParams = new ElGamalPublicKeyParameters(k.Y, new DHParameters(k.DomainParameters.P, k.DomainParameters.G, k.DomainParameters.Q, k.DomainParameters.L));
            }
            else
            {
                AsymmetricDHPrivateKey k = (AsymmetricDHPrivateKey)key;

                lwParams = new ElGamalPrivateKeyParameters(k.X, new DHParameters(k.DomainParameters.P, k.DomainParameters.G, k.DomainParameters.Q, k.DomainParameters.L));
            }

            if (parameters.Algorithm.Equals(WrapPkcs1v15.Algorithm))
            {
                engine = new Pkcs1Encoding(engine);
            }
            else if (parameters.Algorithm.Equals(WrapOaep.Algorithm))
            {
                OaepWrapParameters oeapParams = (OaepWrapParameters)parameters;

                engine = new OaepEncoding(engine, FipsShs.CreateDigest(oeapParams.DigestAlgorithm), FipsShs.CreateDigest(oeapParams.MgfDigestAlgorithm), oeapParams.GetEncodingParams());
            }

            if (random != null)
            {
                lwParams = new ParametersWithRandom(lwParams, random);
            }

            engine.Init(forEncryption, lwParams);

            return engine;
        }
コード例 #4
0
ファイル: Dsa.cs プロジェクト: NDWX/BouncyCastle.FIPS
            public ISigner CreateEngine(EngineUsage usage)
            {
                ISigner sig = new DsaDigestSigner(new DsaSigner(new HMacDsaKCalculator(FipsShs.CreateHmac(parameters.DigestAlgorithm))), FipsShs.CreateDigest(parameters.DigestAlgorithm));

                sig.Init((usage == EngineUsage.SIGNING), sigParams);

                return(sig);
            }