public static GostProviderParams ParamsForOids(params string[] oids) { if (oids == null || oids.Length == 0) { throw new ArgumentException(); } var providerInfo = Providers.FirstOrDefault(x => x.IsCompatible(oids)); if (providerInfo == null) { return(null); } ProviderAlgo signAlgo = null, hashAlgo = null; foreach (var oid in oids) { var algo = providerInfo.FirstOrDefault(x => x.Oid == oid); if (algo != null) { if (algo.Class == CryptoApiEx.AlgClass.Hash) { hashAlgo = algo; } if (algo.Class == CryptoApiEx.AlgClass.Signature) { signAlgo = algo; } } else { var sign = providerInfo.SignGroups.First(x => x.Oid == oid); signAlgo = signAlgo ?? sign.SignAlgo; hashAlgo = hashAlgo ?? sign.HashAlgo; } if (hashAlgo != null && signAlgo != null) { break; } } // if (hashAlgo == null && signAlgo == null) { return(null); } // var result = new ConfigurableProviderParams() { Info = providerInfo, SignAlgo = signAlgo, HashAlgo = hashAlgo }; return(result); }
protected override void DoDispose() { Info = null; SignAlgo = null; HashAlgo = null; }