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)); }
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); }
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; }
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); }