/// <summary> /// Check for the existence of a key and set the Options accordingly. /// </summary> /// <param name="provider">Provider Object</param> /// <param name="keyName">Name of the key to destroy</param> /// <param name="cngKeyOpts">MachineKey or None depending on where it found the key.</param> /// <returns></returns> private bool doesKeyExists(CngProvider provider, string keyName, CngKeyOpenOptions openOpts = CngKeyOpenOptions.MachineKey) { bool keyExists = false; try { keyExists = CngKey.Exists(keyName, provider, openOpts); } catch (CryptographicException e) { throw new CryptographicException(string.Format("There was an error contacting provider {0}. It may not exist or may be configured incorrectly. Error Code:0x{1:X8} Exception thrown:{2}\nStack Trace:{3}\n", provider.ToString(), e.HResult, e.Message, e.StackTrace), e); } return(keyExists); }