/// <summary> /// The generate random key. /// </summary> /// <param name="keyNumber"> /// The key number. /// </param> /// <param name="flags"> /// The flags. /// </param> /// <returns> /// The <see cref="KeyContext"/>. /// </returns> /// <exception cref="Win32Exception"> /// </exception> private KeyContext GenerateRandomKey(KeyNumber keyNumber, int flags = 0) { var keyPiarHandler = IntPtr.Zero; if (!CryptoApi.CryptGenKey(cspHandler, (int)keyNumber, flags, ref keyPiarHandler)) { throw new Win32Exception(); } var keyPairContext = new KeyContext(keyPiarHandler); return(keyPairContext); }