<?xml version="1.0"?>
<doc>
    <assembly>
        <name>PInvoke.BCrypt</name>
    </assembly>
    <members>
        <member name="T:PInvoke.BCrypt">
            <content>
            Exported functions from the BCrypt.dll Windows library
            that are available to Desktop apps only.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.ChainingModes"/> nested class.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.AlgorithmIdentifiers"/> nested class.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.AlgorithmOperations"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.AsymmetricKeyBlobTypes"/> nested class.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.AuthModeFlags"/> nested type.
            </content>
            <content>
            The <see cref="T:PInvoke.BCrypt.BCryptBuffer"/> nested class.
            </content>
            <content>
            The <see cref="T:PInvoke.BCrypt.BCryptBufferDesc"/> nested class.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptCloseAlgorithmProviderFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptCreateHashFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptDeriveKeyFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptEncryptFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptEnumAlgorithmsFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptExportKeyFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptFinalizeKeyPairFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptFinishHashFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptGenerateKeyPairFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptGenRandomFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptGetPropertyFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptHashDataFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptImportKeyFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptImportKeyPairFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptSecretAgreementFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptSetPropertyFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCryptSignHashFlags"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_AUTH_TAG_LENGTHS_STRUCT"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_DH_KEY_BLOB"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_KEY_BLOB"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_KEY_LENGTHS_STRUCT"/> nested struct.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_OAEP_PADDING_INFO"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_PKCS1_PADDING_INFO"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_PSS_PADDING_INFO"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.BufferType"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.ChainingModes"/> nested class.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.DSAFIPSVERSION_ENUM"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.EccKeyBlob"/> nested struct.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.EccKeyBlobMagicNumbers"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.HASHALGORITHM_ENUM"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.InterfaceIdentifiers"/> nested type.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.KeyDerivationFunctions"/> nested class.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.PaddingSchemes"/> nested enum.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.PropertyNames"/> nested class.
            </content>
            <content>
            The <see cref="T:PInvoke.BCrypt.SafeAlgorithmHandle"/> nested class.
            </content>
            <content>
            The <see cref="T:PInvoke.BCrypt.SafeHashHandle"/> nested class.
            </content>
            <content>
            The <see cref="T:PInvoke.BCrypt.SafeKeyHandle"/> nested class.
            </content>
            <content>
            The <see cref="T:PInvoke.BCrypt.SafeSecretHandle"/> nested class.
            </content>
            <content>
            Contains the <see cref="T:PInvoke.BCrypt.SymmetricKeyBlobTypes"/> nested class.
            </content>
            <content>
            Methods and nested types that are not strictly P/Invokes but provide
            a slightly higher level of functionality to ease calling into native code.
            </content>
            <summary>
            Exported functions from the BCrypt.dll Windows library
            that are available to Desktop and Store apps.
            </summary>
            <content>
            Exported functions from the BCrypt.dll Windows library
            that are available to Desktop apps only.
            </content>
            <content>
            The <see cref = "T:PInvoke.BCrypt.BCryptBuffer"/> nested class.
            </content>
            <content>
            The <see cref = "T:PInvoke.BCrypt.BCryptBufferDesc"/> nested class.
            </content>
            <content>
            Contains the <see cref = "T:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER"/> nested type.
            </content>
            <content>
            Contains the <see cref = "T:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO"/> nested type.
            </content>
            <content>
            Contains the <see cref = "T:PInvoke.BCrypt.BCRYPT_OAEP_PADDING_INFO"/> nested type.
            </content>
            <content>
            Contains the <see cref = "T:PInvoke.BCrypt.BCRYPT_PKCS1_PADDING_INFO"/> nested type.
            </content>
            <content>
            Contains the <see cref = "T:PInvoke.BCrypt.BCRYPT_PSS_PADDING_INFO"/> nested type.
            </content>
            <content>
            Contains the <see cref = "T:PInvoke.BCrypt.SymmetricKeyBlobTypes"/> nested class.
            </content>
            <content>
            Methods and nested types that are not strictly P/Invokes but provide
            a slightly higher level of functionality to ease calling into native code.
            </content>
            <summary>
            Exported functions from the BCrypt.dll Windows library
            that are available to Desktop and Store apps.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptAddContextFunction(PInvoke.BCrypt.ConfigurationTable,System.String,PInvoke.BCrypt.InterfaceIdentifiers,System.String,System.UInt32)">
            <summary>
            The BCryptAddContextFunction function adds a cryptographic function to the list of functions that are supported by an existing CNG context.
            </summary>
            <param name="dwTable">Identifies the configuration table that the context exists in.</param>
            <param name="pszContext">A pointer to a null-terminated Unicode string that contains the identifier of the context to add the function to.</param>
            <param name="dwInterface">Identifies the cryptographic interface to add the function to.</param>
            <param name="pszFunction">A pointer to a null-terminated Unicode string that contains the identifier of the cryptographic function to add.</param>
            <param name="dwPosition">Specifies the position in the list at which to insert this function. The function is inserted at this position ahead of any existing functions. The <see cref="F:PInvoke.BCrypt.CRYPT_PRIORITY_TOP"/> value is used to insert the function at the top of the list. The <see cref="F:PInvoke.BCrypt.CRYPT_PRIORITY_BOTTOM"/> value is used to insert the function at the end of the list.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
            <remarks>
            If the function added is already in the list, it will be removed and inserted at the new position.
            </remarks>
        </member>
        <member name="T:PInvoke.BCrypt.ConfigurationTable">
            <summary>
            Possible values for the <see cref="M:PInvoke.BCrypt.BCryptAddContextFunction(PInvoke.BCrypt.ConfigurationTable,System.String,PInvoke.BCrypt.InterfaceIdentifiers,System.String,System.UInt32)"/>
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.ConfigurationTable.CRYPT_LOCAL">
            <summary>
            The context exists in the local-machine configuration table.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.ConfigurationTable.CRYPT_DOMAIN">
            <summary>
            This value is not available for use.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.AlgorithmIdentifiers">
            <summary>
            The identifiers for the algorithms defined within BCrypt itself.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_3DES_ALGORITHM">
            <summary>
            The triple data encryption standard symmetric encryption algorithm.
            Standard: SP800-67, SP800-38A
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_3DES_112_ALGORITHM">
            <summary>
            The 112-bit triple data encryption standard symmetric encryption algorithm.
            Standard: SP800-67, SP800-38A
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_AES_ALGORITHM">
            <summary>
            The advanced encryption standard symmetric encryption algorithm.
            Standard: FIPS 197
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_AES_CMAC_ALGORITHM">
            <summary>
            The advanced encryption standard (AES) cipher based message authentication code (CMAC) symmetric encryption algorithm.
            Standard: SP 800-38B
            Windows 8:  Support for this algorithm begins.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_AES_GMAC_ALGORITHM">
            <summary>
            The advanced encryption standard (AES) Galois message authentication code (GMAC) symmetric encryption algorithm.
            Standard: SP800-38D
            Windows Vista:  This algorithm is supported beginning with Windows Vista with SP1.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_CAPI_KDF_ALGORITHM">
            <summary>
            Crypto API (CAPI) key derivation function algorithm. Used by the BCryptKeyDerivation and NCryptKeyDerivation functions.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_DES_ALGORITHM">
            <summary>
            The data encryption standard symmetric encryption algorithm.
            Standard: FIPS 46-3, FIPS 81
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_DESX_ALGORITHM">
            <summary>
            The extended data encryption standard symmetric encryption algorithm.
            Standard: None
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_DH_ALGORITHM">
            <summary>
            The Diffie-Hellman key exchange algorithm.
            Standard: PKCS #3
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_DSA_ALGORITHM">
            <summary>
            The digital signature algorithm.
            Standard: FIPS 186-2
            Windows 8:  Beginning with Windows 8, this algorithm supports FIPS 186-3. Keys less than or equal to 1024 bits adhere to FIPS 186-2 and keys greater than 1024 to FIPS 186-3.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_ECDH_P256_ALGORITHM">
            <summary>
            The 256-bit prime elliptic curve Diffie-Hellman key exchange algorithm.
            Standard: SP800-56A
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_ECDH_P384_ALGORITHM">
            <summary>
            The 384-bit prime elliptic curve Diffie-Hellman key exchange algorithm.
            Standard: SP800-56A
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_ECDH_P521_ALGORITHM">
            <summary>
            The 521-bit prime elliptic curve Diffie-Hellman key exchange algorithm.
            Standard: SP800-56A
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_ECDSA_P256_ALGORITHM">
            <summary>
            The 256-bit prime elliptic curve digital signature algorithm (FIPS 186-2).
            Standard: FIPS 186-2, X9.62
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_ECDSA_P384_ALGORITHM">
            <summary>
            The 384-bit prime elliptic curve digital signature algorithm (FIPS 186-2).
            Standard: FIPS 186-2, X9.62
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_ECDSA_P521_ALGORITHM">
            <summary>
            The 521-bit prime elliptic curve digital signature algorithm (FIPS 186-2).
            Standard: FIPS 186-2, X9.62
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_MD2_ALGORITHM">
            <summary>
            The MD2 hash algorithm.
            Standard: RFC 1319
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_MD4_ALGORITHM">
            <summary>
            The MD4 hash algorithm.
            Standard: RFC 1320
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_MD5_ALGORITHM">
            <summary>
            The MD5 hash algorithm.
            Standard: RFC 1321
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_RC2_ALGORITHM">
            <summary>
            The RC2 block symmetric encryption algorithm.
            Standard: RFC 2268
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_RC4_ALGORITHM">
            <summary>
            The RC4 symmetric encryption algorithm.
            Standard: Various
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_RNG_ALGORITHM">
            <summary>
            The random-number generator algorithm.
            Standard: FIPS 186-2, FIPS 140-2, NIST SP 800-90
            Note  Beginning with Windows Vista with SP1 and Windows Server 2008, the random number generator is based on the AES counter mode specified in the NIST SP 800-90 standard.
            Windows Vista:  The random number generator is based on the hash-based random number generator specified in the FIPS 186-2 standard.
            Windows 8:  Beginning with Windows 8, the RNG algorithm supports FIPS 186-3. Keys less than or equal to 1024 bits adhere to FIPS 186-2 and keys greater than 1024 to FIPS 186-3.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_RNG_DUAL_EC_ALGORITHM">
            <summary>
            The dual elliptic curve random-number generator algorithm.
            Standard: SP800-90
            Windows 8:  Beginning with Windows 8, the EC RNG algorithm supports FIPS 186-3. Keys less than or equal to 1024 bits adhere to FIPS 186-2 and keys greater than 1024 to FIPS 186-3.
            Windows 10:  Beginning with Windows 10, the dual elliptic curve random number generator algorithm has been removed. Existing uses of this algorithm will continue to work; however, the random number generator is based on the AES counter mode specified in the NIST SP 800-90 standard. New code should use BCRYPT_RNG_ALGORITHM, and it is recommended that existing code be changed to use BCRYPT_RNG_ALGORITHM.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_RNG_FIPS186_DSA_ALGORITHM">
            <summary>
            The random-number generator algorithm suitable for DSA (Digital Signature Algorithm).
            Standard: FIPS 186-2
            Windows 8:  Support for FIPS 186-3 begins.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_RSA_ALGORITHM">
            <summary>
            The RSA public key algorithm.
            Standard: PKCS #1 v1.5 and v2.0.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_RSA_SIGN_ALGORITHM">
            <summary>
            The RSA signature algorithm. This algorithm is not currently supported. You can use the BCRYPT_RSA_ALGORITHM algorithm to perform RSA signing operations.
            Standard: PKCS #1 v1.5 and v2.0.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_SHA1_ALGORITHM">
            <summary>
            The 160-bit secure hash algorithm.
            Standard: FIPS 180-2, FIPS 198
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_SHA256_ALGORITHM">
            <summary>
            The 256-bit secure hash algorithm.
            Standard: FIPS 180-2, FIPS 198
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_SHA384_ALGORITHM">
            <summary>
            The 384-bit secure hash algorithm.
            Standard: FIPS 180-2, FIPS 198
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_SHA512_ALGORITHM">
            <summary>
            The 512-bit secure hash algorithm.
            Standard: FIPS 180-2, FIPS 198
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_SP800108_CTR_HMAC_ALGORITHM">
            <summary>
            Counter mode, hash-based message authentication code (HMAC) key derivation function algorithm. Used by the BCryptKeyDerivation and NCryptKeyDerivation functions.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_SP80056A_CONCAT_ALGORITHM">
            <summary>
            SP800-56A key derivation function algorithm. Used by the BCryptKeyDerivation and NCryptKeyDerivation functions.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmIdentifiers.BCRYPT_PBKDF2_ALGORITHM">
            <summary>
            Password-based key derivation function 2 (PBKDF2) algorithm. Used by the BCryptKeyDerivation and NCryptKeyDerivation functions.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.AlgorithmOperations">
            <summary>
            Algorithm operations that may be enumerated.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmOperations.BCRYPT_CIPHER_OPERATION">
            <summary>
            Include the cipher algorithms in the enumeration.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmOperations.BCRYPT_HASH_OPERATION">
            <summary>
            Include the hash algorithms in the enumeration.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmOperations.BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION">
            <summary>
            Include the asymmetric encryption algorithms in the enumeration.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmOperations.BCRYPT_SECRET_AGREEMENT_OPERATION">
            <summary>
            Include the secret agreement algorithms in the enumeration.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmOperations.BCRYPT_SIGNATURE_OPERATION">
            <summary>
            Include the signature algorithms in the enumeration.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AlgorithmOperations.BCRYPT_RNG_OPERATION">
            <summary>
            Include the random number generator (RNG) algorithms in the enumeration.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.AsymmetricKeyBlobTypes">
            <summary>
            Defines the asymmetric key blob types supported by Win32.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.BCRYPT_PUBLIC_KEY_BLOB">
            <summary>
            The BLOB is a generic public key of any type. The type of key in this BLOB is determined by the Magic member of the <see cref="T:PInvoke.BCrypt.BCRYPT_KEY_BLOB"/> structure.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.BCRYPT_PRIVATE_KEY_BLOB">
            <summary>
            The BLOB is a generic private key of any type. The private key does not necessarily contain the public key. The type of key in this BLOB is determined by the Magic member of the <see cref="T:PInvoke.BCrypt.BCRYPT_KEY_BLOB"/> structure.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.BCRYPT_DH_PUBLIC_BLOB">
            <summary>
            The BLOB is a Diffie-Hellman public key BLOB. The pbInput buffer must contain a <see cref="T:PInvoke.BCrypt.BCRYPT_DH_KEY_BLOB"/> structure immediately followed by the key data.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.BCRYPT_DH_PRIVATE_BLOB">
            <summary>
            The BLOB is a Diffie-Hellman public/private key pair BLOB. The pbInput buffer must contain a <see cref="T:PInvoke.BCrypt.BCRYPT_DH_KEY_BLOB"/> structure immediately followed by the key data.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.LEGACY_DH_PUBLIC_BLOB">
            <summary>
            The BLOB is a Diffie-Hellman public key BLOB that was exported by using CryptoAPI. The Microsoft primitive provider does not support importing this BLOB type.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.LEGACY_DH_PRIVATE_BLOB">
            <summary>
            The BLOB is a legacy Diffie-Hellman Version 3 Private Key BLOB that contains a Diffie-Hellman public/private key pair that was exported by using CryptoAPI.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.BCRYPT_DSA_PUBLIC_BLOB">
            <summary>
            The BLOB is a DSA public key BLOB. The pbInput buffer must contain a <see cref="T:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB"/> or <see cref="T:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2"/> structure immediately followed by the key data. BCRYPT_DSA_KEY_BLOB is used for key lengths from 512 to 1024 bits. BCRYPT_DSA_KEY_BLOB_V2 is used for key lengths that exceed 1024 bits but are less than or equal to 3072 bits.
            Windows 8:  Support for <see cref="T:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2"/> begins.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.BCRYPT_DSA_PRIVATE_BLOB">
            <summary>
            The BLOB is a DSA public/private key pair BLOB. The pbInput buffer must contain a <see cref="T:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB"/> or <see cref="T:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2"/> structure immediately followed by the key data. BCRYPT_DSA_KEY_BLOB is used for key lengths from 512 to 1024 bits. BCRYPT_DSA_KEY_BLOB_V2 is used for key lengths that exceed 1024 bits but are less than or equal to 3072 bits.
            Windows 8:  Support for <see cref="T:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2"/> begins.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.LEGACY_DSA_PUBLIC_BLOB">
            <summary>
            The BLOB is a DSA public key BLOB that was exported by using CryptoAPI. The Microsoft primitive provider does not support importing this BLOB type.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.LEGACY_DSA_PRIVATE_BLOB">
            <summary>
            The BLOB is a DSA public/private key pair BLOB that was exported by using CryptoAPI.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.LEGACY_DSA_V2_PRIVATE_BLOB">
            <summary>
            The BLOB is a DSA version 2 private key in a form that can be imported by using CryptoAPI.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.BCRYPT_ECCPUBLIC_BLOB">
            <summary>
            The BLOB is an ECC public key. The pbInput buffer must contain a <see cref="T:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB"/> structure immediately followed by the key data.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.BCRYPT_ECCPRIVATE_BLOB">
            <summary>
            The BLOB is an elliptic curve cryptography (ECC) private key. The pbInput buffer must contain a <see cref="T:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB"/> structure immediately followed by the key data.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.BCRYPT_RSAPUBLIC_BLOB">
            <summary>
            The BLOB is an RSA public key BLOB. The pbInput buffer must contain a <see cref="T:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB"/> structure immediately followed by the key data.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.BCRYPT_RSAPRIVATE_BLOB">
            <summary>
            The BLOB is an RSA public/private key pair BLOB. The pbInput buffer must contain a <see cref="T:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB"/> structure immediately followed by the key data.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.BCRYPT_RSAFULLPRIVATE_BLOB">
            <summary>
            The BCRYPT_RSAFULLPRIVATE_BLOB blob type is used to transport
            plaintext private RSA keys.  It includes the following values:
            Public Exponent
            Modulus
            Prime1
            Prime2
            Private Exponent mod (Prime1 - 1)
            Private Exponent mod (Prime2 - 1)
            Inverse of Prime2 mod Prime1
            PrivateExponent
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.LEGACY_RSAPUBLIC_BLOB">
            <summary>
            The BLOB is an RSA public key BLOB that was exported by using CryptoAPI. The Microsoft primitive provider does not support importing this BLOB type.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AsymmetricKeyBlobTypes.LEGACY_RSAPRIVATE_BLOB">
            <summary>
            The BLOB is an RSA public/private key pair BLOB that was exported by using CryptoAPI.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.AsymmetricKeyBlobTypes.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.AsymmetricKeyBlobTypes"/> class.
            </summary>
            <remarks>
            Suppresses generation of a public default constructor.
            </remarks>
        </member>
        <member name="T:PInvoke.BCrypt.AuthModeFlags">
            <summary>
            Flags for the <see cref="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.dwFlags"/> field.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AuthModeFlags.None">
            <summary>
            No flags.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AuthModeFlags.BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG">
            <summary>
            Indicates that <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> and <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> function calls are being chained and that the MAC value will not be computed. On the last call in the chain, clear this value to compute the MAC value for the entire chain.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.AuthModeFlags.BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG">
            <summary>
            Indicates that this <see cref="T:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO"/> structure is being used in a sequence of chained <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> or <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> function calls. This flag is set and maintained internally.
            Note: During the chaining sequence, this flag value is maintained internally and must not be changed or the value of the computed MAC will be corrupted.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCryptBuffer">
            <summary>
            Used to represent a generic CNG buffer.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptBuffer.cbBuffer">
            <summary>
            The size, in bytes, of the buffer.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptBuffer.BufferType">
            <summary>
            A value that specifies the type of buffer represented by this structure.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptBuffer.pvBuffer">
            <summary>
            A pointer-sized value defined by the <see cref="F:PInvoke.BCrypt.BCryptBuffer.BufferType"/> member.
            </summary>
        </member>
        <member name="P:PInvoke.BCrypt.BCryptBuffer.pvBuffer_IntPtr">
            <summary>
            A pointer-sized value defined by the <see cref = "F:PInvoke.BCrypt.BCryptBuffer.BufferType"/> member.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCryptBufferDesc">
            <summary>
            Used to contain a set of generic CNG buffers.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptBufferDesc.BCRYPTBUFFER_VERSION">
            <summary>
            The version of the <see cref="T:PInvoke.BCrypt.BCryptBufferDesc"/> structure defined in this library.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptBufferDesc.ulVersion">
            <summary>
            The version of the structure.
            </summary>
            <remarks>
            This must have the value of <see cref="F:PInvoke.BCrypt.BCryptBufferDesc.BCRYPTBUFFER_VERSION"/>.
            </remarks>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptBufferDesc.cBuffers">
            <summary>
            The number of elements in the <see cref="F:PInvoke.BCrypt.BCryptBufferDesc.pBuffers"/> array.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptBufferDesc.pBuffers">
            <summary>
            The address of an array of <see cref="T:PInvoke.BCrypt.BCryptBuffer"/> structures that contain the buffers.
            The <see cref="F:PInvoke.BCrypt.BCryptBufferDesc.cBuffers"/> member contains the number of elements in this array.
            </summary>
        </member>
        <member name="P:PInvoke.BCrypt.BCryptBufferDesc.pBuffers_IntPtr">
            <summary>
            The address of an array of <see cref = "T:PInvoke.BCrypt.BCryptBuffer"/> structures that contain the buffers.
            The <see cref = "F:PInvoke.BCrypt.BCryptBufferDesc.cBuffers"/> member contains the number of elements in this array.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCryptCreateHashFlags">
            <summary>
            Flags that can be passed to the <see cref="M:PInvoke.BCrypt.BCryptCreateHash(PInvoke.BCrypt.SafeAlgorithmHandle,PInvoke.BCrypt.SafeHashHandle@,System.Byte[],System.Int32,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptCreateHashFlags)"/> method.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptCreateHashFlags.BCRYPT_HASH_REUSABLE_FLAG">
            <summary>
            Creates a reusable hashing object. The object can be used for a new hashing operation immediately after calling BCryptFinishHash. For more information, see Creating a Hash with CNG.
            Windows Server 2008 R2, Windows 7, Windows Server 2008, and Windows Vista:  This flag is not supported.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptDeriveKeyFlags.None">
            <summary>
            No flags.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptDeriveKeyFlags.KDF_USE_SECRET_AS_HMAC_KEY_FLAG">
            <summary>
            Causes the secret agreement to serve also
            as the HMAC key.  If this flag is used, the KDF_HMAC_KEY parameter should
            NOT be specified.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCryptEncryptFlags">
            <summary>
            Flags that can be passed to the <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> method.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptEncryptFlags.BCRYPT_BLOCK_PADDING">
            <summary>
            Symmetric algorithms: Allows the encryption algorithm to pad the data to the next block size. If this flag is not specified, the size of the plaintext specified in the cbInput parameter must be a multiple of the algorithm's block size.
            The block size can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the BCRYPT_BLOCK_LENGTH property for the key. This will provide the size of a block for the algorithm.
            This flag must not be used with the authenticated encryption modes (AES-CCM and AES-GCM).
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptEncryptFlags.BCRYPT_PAD_NONE">
            <summary>
            Asymmetric algorithms: Do not use any padding. The pPaddingInfo parameter is not used. The size of the plaintext specified in the cbInput parameter must be a multiple of the algorithm's block size.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptEncryptFlags.BCRYPT_PAD_PKCS1">
            <summary>
            Asymmetric algorithms: The data will be padded with a random number to round out the block size. The pPaddingInfo parameter is not used.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptEncryptFlags.BCRYPT_PAD_OAEP">
            <summary>
            Asymmetric algorithms: Use the Optimal Asymmetric Encryption Padding (OAEP) scheme. The pPaddingInfo parameter is a pointer to a BCRYPT_OAEP_PADDING_INFO structure.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCryptEnumAlgorithmsFlags">
            <summary>
            Flags that can be passed to the <see cref="M:PInvoke.BCrypt.BCryptEnumAlgorithms(PInvoke.BCrypt.AlgorithmOperations,System.Int32@,PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER*@,PInvoke.BCrypt.BCryptEnumAlgorithmsFlags)"/> method.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptEnumAlgorithmsFlags.None">
            <summary>
            No flags.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCryptFinishHashFlags">
            <summary>
            Flags that can be passed to the <see cref="M:PInvoke.BCrypt.BCryptFinishHash(PInvoke.BCrypt.SafeHashHandle,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptFinishHashFlags)"/> method.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags">
            <summary>
            Flags that may be passed to the <see cref="M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/> method.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptGenRandomFlags.UseEntropyInBuffer">
            <summary>
            This function will use the number in the pbBuffer buffer as additional entropy for the random number. If this flag is not specified, this function will use a random number for the entropy.
            Windows 8 and later:  This flag is ignored in Windows 8 and later.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptGenRandomFlags.UseSystemPreferredRNG">
            <summary>
            Use the system-preferred random number generator algorithm. The hAlgorithm parameter must be NULL.
            <see cref="F:PInvoke.BCrypt.BCryptGenRandomFlags.UseSystemPreferredRNG"/> is only supported at PASSIVE_LEVEL IRQL. For more information, see Remarks.
            Windows Vista:  This flag is not supported.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCryptHashDataFlags">
            <summary>
            Flags that can be passed to the <see cref="M:PInvoke.BCrypt.BCryptHashData(PInvoke.BCrypt.SafeHashHandle,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptHashDataFlags)"/> method.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptImportKeyPairFlags.BCRYPT_NO_KEY_VALIDATION">
            <summary>
            Do not validate the public portion of the key pair.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags">
            <summary>
            Flags that can be passed to <see cref="M:PInvoke.BCrypt.BCryptOpenAlgorithmProvider(System.String,System.String,PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags)"/>
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags.None">
            <summary>
            No flags.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags.AlgorithmHandleHmac">
            <summary>
            The provider will perform the Hash-Based Message Authentication Code (HMAC)
            algorithm with the specified hash algorithm. This flag is only used by hash
            algorithm providers.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags.HashReusable">
            <summary>
            Creates a reusable hashing object. The object can be used for a new hashing
            operation immediately after calling BCryptFinishHash. For more information,
            see Creating a Hash with CNG.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCryptSignHashFlags">
            <summary>
            Flags that can be passed to <see cref="M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)"/>.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptSignHashFlags.None">
            <summary>
            No flags.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptSignHashFlags.BCRYPT_PAD_PKCS1">
            <summary>
            Use the PKCS1 padding scheme. The pPaddingInfo parameter is a pointer to a <see cref="T:PInvoke.BCrypt.BCRYPT_PKCS1_PADDING_INFO"/> structure.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCryptSignHashFlags.BCRYPT_PAD_PSS">
            <summary>
            Use the Probabilistic Signature Scheme (PSS) padding scheme. The pPaddingInfo parameter is a pointer to a <see cref="T:PInvoke.BCrypt.BCRYPT_PSS_PADDING_INFO"/> structure.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER">
            <summary>
            Used with the <see cref="M:PInvoke.BCrypt.BCryptEnumAlgorithms(PInvoke.BCrypt.AlgorithmOperations,System.Int32@,PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER*@,PInvoke.BCrypt.BCryptEnumAlgorithmsFlags)"/> function to contain a cryptographic algorithm identifier.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER.pszName">
            <summary>
            A pointer to a null-terminated Unicode string that contains the string identifier of the algorithm. The <see cref="T:PInvoke.BCrypt.AlgorithmIdentifiers"/> class contains the predefined algorithm identifiers.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER.dwClass">
            <summary>
            Specifies the class of the algorithm.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER.dwFlags">
            <summary>
            A set of flags that specify other information about the algorithm.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER.Flags">
            <summary>
            Flags for the <see cref="F:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER.dwFlags"/> field.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER.Flags.None">
            <summary>
            No flags.
            </summary>
        </member>
        <member name="P:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER.Name">
            <summary>
            Gets the string identifier of the algorithm. The <see cref="T:PInvoke.BCrypt.AlgorithmIdentifiers"/> class contains the predefined algorithm identifiers.
            </summary>
        </member>
        <member name="P:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER.pszName_IntPtr">
            <summary>
            A pointer to a null-terminated Unicode string that contains the string identifier of the algorithm. The <see cref = "T:PInvoke.BCrypt.AlgorithmIdentifiers"/> class contains the predefined algorithm identifiers.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO">
            <summary>
            Used with the <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> and <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> functions
            to contain additional information related to authenticated cipher modes.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION">
            <summary>
            The version of the <see cref="T:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO"/> struct.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.cbSize">
            <summary>
            The size, in bytes, of this structure.
            Do not set this field directly. Use the <see cref="M:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.Create"/> method instead.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.dwInfoVersion">
            <summary>
            The version number of the structure.
            The only supported value is <see cref="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION"/>.
            Do not set this field directly. Use the <see cref="M:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.Create"/> method instead.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.pbNonce">
            <summary>
            A pointer to a buffer that contains a nonce.
            The Microsoft algorithm providers for Advanced Encryption Standard (AES)
            require a nonce for the Counter with CBC-MAC (CCM) and Galois/Counter Mode (GCM)
            chaining modes, and will return an error if none is present.
            If a nonce is not used, this member must be set to NULL.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.cbNonce">
            <summary>
            The size, in bytes, of the buffer pointed to by the <see cref="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.pbNonce"/> member.
            If a nonce is not used, this member must be set to zero.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.pbAuthData">
            <summary>
            A pointer to a buffer that contains the authenticated data.
            This is data that will be included in the Message Authentication Code (MAC) but not encrypted.
            If there is no authenticated data, this member must be set to NULL.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.cbAuthData">
            <summary>
            The size, in bytes, of the buffer pointed to by the <see cref="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.pbAuthData"/> member.
            If there is no authenticated data, this member must be set to zero.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.pbTag">
            <summary>
            A pointer to a buffer.
            The use of this member depends on the function to which the structure is passed.
            For <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/>
            the buffer will receive the authentication tag.
            For <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/>
            the buffer contains the authentication tag to be checked against.
            If there is no tag, this member must be set to NULL.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.cbTag">
            <summary>
            The size, in bytes, of the <see cref="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.pbTag"/> buffer.
            The buffer must be long enough to include the whole authentication tag.
            Some authentication modes, such as CCM and GCM, support checking against a tag
            with multiple lengths. To obtain the valid authentication tag lengths use
            <see cref="M:PInvoke.BCrypt.BCryptGetProperty``1(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> to query the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_AUTH_TAG_LENGTH"/> property.
            If there is no tag, this member must be set to zero.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.pbMacContext">
            <summary>
            A pointer to a buffer that stores the partially computed MAC between calls to <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> and <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> when chaining encryption or decryption.
            If the input to encryption or decryption is scattered across multiple buffers, then you must chain calls to the <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> and <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> functions. Chaining is indicated by setting the <see cref="F:PInvoke.BCrypt.AuthModeFlags.BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG"/> flag in the <see cref="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.dwFlags"/> member.
            This buffer must be supplied by the caller and must be at least as large as the maximum length of an authentication tag for the cipher you are using. To get the valid authentication tag lengths, use <see cref="M:PInvoke.BCrypt.BCryptGetProperty``1(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> to query the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_AUTH_TAG_LENGTH"/> property.
            If <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> and <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> calls are not being chained, this member must be set to NULL.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.cbMacContext">
            <summary>
            The size, in bytes, of the buffer pointed to by the <see cref="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.pbMacContext"/> member.
            If <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> and <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> calls are not being chained, this member must be set to zero.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.cbAAD">
            <summary>
            The length, in bytes, of additional authenticated data (AAD) to be used by the <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> and <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> functions. This member is used only when chaining calls.
            This member is used only when the <see cref="F:PInvoke.BCrypt.AuthModeFlags.BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG"/> flag in the <see cref="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.dwFlags"/> member is set.
            On the first call to <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> or <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> you must set this field to zero.
            Note: During the chaining sequence, this member is maintained internally and must not be changed or the value of the computed MAC will be corrupted.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.cbData">
            <summary>
            The length, in bytes, of the payload data that was encrypted or decrypted. This member is used only when chaining calls.
            This member is used only when the <see cref="F:PInvoke.BCrypt.AuthModeFlags.BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG"/> flag in the <see cref="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.dwFlags"/> member is set.
            On the first call to <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> or <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> you must set this field to zero.
            Note: During the chaining sequence, this member is maintained internally and must not be changed or the value of the computed MAC will be corrupted.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.dwFlags">
            <summary>
            This flag is used when chaining <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> or <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> function calls.
            If calls are not being chained, this member must be set to zero.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.Create">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO"/> struct.
            </summary>
            <returns>An initialized instance.</returns>
        </member>
        <member name="P:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.pbNonce_IntPtr">
            <summary>
            A pointer to a buffer that contains a nonce.
            The Microsoft algorithm providers for Advanced Encryption Standard (AES)
            require a nonce for the Counter with CBC-MAC (CCM) and Galois/Counter Mode (GCM)
            chaining modes, and will return an error if none is present.
            If a nonce is not used, this member must be set to NULL.
            </summary>
        </member>
        <member name="P:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.pbAuthData_IntPtr">
            <summary>
            A pointer to a buffer that contains the authenticated data.
            This is data that will be included in the Message Authentication Code (MAC) but not encrypted.
            If there is no authenticated data, this member must be set to NULL.
            </summary>
        </member>
        <member name="P:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.pbTag_IntPtr">
            <summary>
            A pointer to a buffer.
            The use of this member depends on the function to which the structure is passed.
            For <see cref = "M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/>
            the buffer will receive the authentication tag.
            For <see cref = "M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/>
            the buffer contains the authentication tag to be checked against.
            If there is no tag, this member must be set to NULL.
            </summary>
        </member>
        <member name="P:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.pbMacContext_IntPtr">
            <summary>
            A pointer to a buffer that stores the partially computed MAC between calls to <see cref = "M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> and <see cref = "M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> when chaining encryption or decryption.
            If the input to encryption or decryption is scattered across multiple buffers, then you must chain calls to the <see cref = "M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> and <see cref = "M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> functions. Chaining is indicated by setting the <see cref = "F:PInvoke.BCrypt.AuthModeFlags.BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG"/> flag in the <see cref = "F:PInvoke.BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO.dwFlags"/> member.
            This buffer must be supplied by the caller and must be at least as large as the maximum length of an authentication tag for the cipher you are using. To get the valid authentication tag lengths, use <see cref = "M:PInvoke.BCrypt.BCryptGetProperty``1(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> to query the <see cref = "F:PInvoke.BCrypt.PropertyNames.BCRYPT_AUTH_TAG_LENGTH"/> property.
            If <see cref = "M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> and <see cref = "M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)"/> calls are not being chained, this member must be set to NULL.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_AUTH_TAG_LENGTHS_STRUCT">
            <summary>
            defines the range of tag sizes that are supported by the provider. This structure is used with the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_AUTH_TAG_LENGTH"/> property.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTH_TAG_LENGTHS_STRUCT.dwMinLength">
            <summary>
            The minimum length, in bytes, of a tag.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTH_TAG_LENGTHS_STRUCT.dwMaxLength">
            <summary>
            The maximum length, in bytes, of a tag.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_AUTH_TAG_LENGTHS_STRUCT.dwIncrement">
            <summary>
            The number of bytes that the tag size can be incremented between dwMinLength and dwMaxLength.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.BCRYPT_AUTH_TAG_LENGTHS_STRUCT.GetEnumerator">
            <summary>
            Gets a sequence of allowed tag sizes, from smallest to largest.
            </summary>
            <returns>An enumerator over all allowed sizes.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCRYPT_AUTH_TAG_LENGTHS_STRUCT.System#Collections#IEnumerable#GetEnumerator">
            <inheritdoc />
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_DH_KEY_BLOB">
            <summary>
            A key blob format for transporting DH keys.
            Used as a header for a Diffie-Hellman public key or private key BLOB in memory.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DH_KEY_BLOB.dwMagic">
            <summary>
            Determines the type of key this structure represents.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DH_KEY_BLOB.cbKey">
            <summary>
            The length, in bytes, of the key.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_DH_KEY_BLOB.MagicNumber">
            <summary>
            Enumerates the values that may be used in <see cref="F:PInvoke.BCrypt.BCRYPT_DH_KEY_BLOB.dwMagic"/>.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB">
            <summary>
            A key blob format for transporting DSA keys.
            Used as a header for a Digital Signature Algorithm (DSA) public key or private key BLOB in memory.
            </summary>
            <remarks>
            The structure applies to DSA keys that equal or exceed 512 bits in length but are less than or equal to 1024 bits.
            </remarks>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB.dwMagic">
            <summary>
            Determines the type of key this structure represents.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB.cbKey">
            <summary>
            The length, in bytes, of the key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB.Count">
            <summary>
            The number of iterations, in big-endian format, used to generate q.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB.Seed">
            <summary>
            The seed value, in big-endian format, used to generate q.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB.q">
            <summary>
            The 160-bit prime factor, in big-endian format.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB.MagicNumber">
            <summary>
            Enumerates the possible values for <see cref="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB.dwMagic"/>.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB.MagicNumber.BCRYPT_DSA_PUBLIC_MAGIC">
            <summary>
            The structure represents a DSA public key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB.MagicNumber.BCRYPT_DSA_PRIVATE_MAGIC">
            <summary>
            The structure represents a DSA private key.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2">
            <summary>
            A key blob format for transporting DSA keys.
            Used as a header for a Digital Signature Algorithm (DSA) public key or private key BLOB in memory.
            </summary>
            <remarks>
            The structure applies to DSA keys that exceed 1024 bits in length but are less than or equal to 3072 bits.
            </remarks>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2.dwMagic">
            <summary>
            Determines the type of key this structure represents.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2.cbKey">
            <summary>
            The length, in bytes, of the key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2.hashAlgorithm">
            <summary>
            A value that specifies the hashing algorithm to use.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2.standardVersion">
            <summary>
            A value that specifies the Federal Information Processing Standard(FIPS) to apply.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2.cbSeedLength">
            <summary>
            Length of the seed used to generate the prime number q.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2.cbGroupSize">
            <summary>
            Size of the prime number q . Currently, if the key is less than 128 bits, q is 20 bytes long. If the key exceeds 256 bits, q is 32 bytes long.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2.Count">
            <summary>
            The number of iterations performed to generate the prime number q from the seed. For more information, see NIST standard FIPS186-3.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2.MagicNumber">
            <summary>
            Enumerates the possible values for <see cref="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2.dwMagic"/>.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2.MagicNumber.BCRYPT_DSA_PUBLIC_MAGIC_V2">
            <summary>
            The structure represents a DSA public key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_DSA_KEY_BLOB_V2.MagicNumber.BCRYPT_DSA_PRIVATE_MAGIC_V2">
            <summary>
            The structure represents a DSA private key.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB">
            <summary>
            A key blob format for transporting ECC keys.
            Used as a header for an elliptic curve public key or private key BLOB in memory.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.dwMagic">
            <summary>
            Specifies the type of key this BLOB represents. The possible values for this member depend on the type of BLOB this structure represents.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.cbKey">
            <summary>
            The length, in bytes, of the key.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber">
            <summary>
            Enumerates the values that may be expected in the <see cref="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.dwMagic"/> field.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber.BCRYPT_ECDH_PUBLIC_P256_MAGIC">
            <summary>
            The key is a 256 bit elliptic curve Diffie-Hellman public key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber.BCRYPT_ECDH_PRIVATE_P256_MAGIC">
            <summary>
            The key is a 256 bit elliptic curve Diffie-Hellman private key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber.BCRYPT_ECDH_PUBLIC_P384_MAGIC">
            <summary>
            The key is a 384 bit elliptic curve Diffie-Hellman public key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber.BCRYPT_ECDH_PRIVATE_P384_MAGIC">
            <summary>
            The key is a 384 bit elliptic curve Diffie-Hellman private key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber.BCRYPT_ECDH_PUBLIC_P521_MAGIC">
            <summary>
            The key is a 521 bit elliptic curve Diffie-Hellman public key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber.BCRYPT_ECDH_PRIVATE_P521_MAGIC">
            <summary>
            The key is a 521 bit elliptic curve Diffie-Hellman private key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber.BCRYPT_ECDSA_PUBLIC_P256_MAGIC">
            <summary>
            The key is a 256 bit elliptic curve DSA public key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber.BCRYPT_ECDSA_PRIVATE_P256_MAGIC">
            <summary>
            The key is a 256 bit elliptic curve DSA private key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber.BCRYPT_ECDSA_PUBLIC_P384_MAGIC">
            <summary>
            The key is a 384 bit elliptic curve DSA public key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber.BCRYPT_ECDSA_PRIVATE_P384_MAGIC">
            <summary>
            The key is a 384 bit elliptic curve DSA private key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber.BCRYPT_ECDSA_PUBLIC_P521_MAGIC">
            <summary>
            The key is a 521 bit elliptic curve DSA public key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_ECCKEY_BLOB.MagicNumber.BCRYPT_ECDSA_PRIVATE_P521_MAGIC">
            <summary>
            The key is a 521 bit elliptic curve DSA private key.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_KEY_BLOB">
            <summary>
            Represents a key blob header that identifies a key blob format for transporting keys.
            The base structure for all CNG key BLOBs. All CNG key BLOBs are based on this structure. For example, the <see cref="T:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB"/> structure is based on this structure.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_KEY_BLOB.dwMagic">
            <summary>
            Specifies the type of key this BLOB represents. The possible values for this member depend on the type of BLOB this structure represents.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER">
            <summary>
            Used to contain information about a key data BLOB. The key data BLOB must immediately follow this structure in memory.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER.BCRYPT_KEY_DATA_BLOB_VERSION1">
            <summary>
            The version of the <see cref="T:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER"/> struct.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER.dwMagic">
            <summary>
            The magic value for the key.
            This member must be the following value: <see cref="F:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER.MagicNumber.BCRYPT_KEY_DATA_BLOB_MAGIC"/>
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER.dwVersion">
            <summary>
            Contains the numeric version of the key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER.cbKeyData">
            <summary>
            The size, in bytes, of the key data.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER.MagicNumber">
            <summary>
            Values for the <see cref="F:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER.dwMagic"/> field.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER.Create(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER"/> struct.
            </summary>
            <param name="cbKeyData">The size, in bytes, of the key data.</param>
            <returns>The initialized instance.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER.InsertBeforeKey(System.Byte[])">
            <summary>
            Initializes a key header and returns a buffer with that and the specified key material.
            </summary>
            <param name="keyMaterial">The symmetric secret.</param>
            <returns>A buffer with the symmetric secret, and a header.</returns>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_KEY_LENGTHS_STRUCT">
            <summary>
            Defines the range of key sizes that are supported by the provider.
            This structure is used with the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_KEY_LENGTHS"/> property.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_KEY_LENGTHS_STRUCT.MinLength">
            <summary>
            The minimum length, in bits, of a key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_KEY_LENGTHS_STRUCT.MaxLength">
            <summary>
            The maximum length, in bits, of a key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_KEY_LENGTHS_STRUCT.Increment">
            <summary>
            The number of bits that the key size can be incremented between dwMinLength and dwMaxLength.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.BCRYPT_KEY_LENGTHS_STRUCT.GetEnumerator">
            <summary>
            Gets a sequence of allowed key sizes, from smallest to largest.
            </summary>
            <returns>An enumerator over all allowed sizes.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCRYPT_KEY_LENGTHS_STRUCT.System#Collections#IEnumerable#GetEnumerator">
            <inheritdoc />
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_OAEP_PADDING_INFO">
            <summary>
            The BCRYPT_OAEP_PADDING_INFO structure is used to provide options for the Optimal Asymmetric Encryption Padding (OAEP) scheme.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_OAEP_PADDING_INFO.pszAlgId">
            <summary>
            A pointer to a null-terminated Unicode string that identifies the cryptographic algorithm to use to create the padding. This algorithm must be a hashing algorithm.
            Typically the value comes from a constant defined in <see cref="T:PInvoke.BCrypt.AlgorithmIdentifiers"/>.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_OAEP_PADDING_INFO.pbLabel">
            <summary>
            The address of a buffer that contains the data to use to create the padding. The <see cref="F:PInvoke.BCrypt.BCRYPT_OAEP_PADDING_INFO.cbLabel"/> member contains the size of this buffer.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_OAEP_PADDING_INFO.cbLabel">
            <summary>
            Contains the number of bytes in the <see cref="F:PInvoke.BCrypt.BCRYPT_OAEP_PADDING_INFO.pbLabel"/> buffer to use to create the padding.
            </summary>
        </member>
        <member name="P:PInvoke.BCrypt.BCRYPT_OAEP_PADDING_INFO.pszAlgId_IntPtr">
            <summary>
            A pointer to a null-terminated Unicode string that identifies the cryptographic algorithm to use to create the padding. This algorithm must be a hashing algorithm.
            Typically the value comes from a constant defined in <see cref = "T:PInvoke.BCrypt.AlgorithmIdentifiers"/>.
            </summary>
        </member>
        <member name="P:PInvoke.BCrypt.BCRYPT_OAEP_PADDING_INFO.pbLabel_IntPtr">
            <summary>
            The address of a buffer that contains the data to use to create the padding. The <see cref = "F:PInvoke.BCrypt.BCRYPT_OAEP_PADDING_INFO.cbLabel"/> member contains the size of this buffer.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_PKCS1_PADDING_INFO">
            <summary>
            The BCRYPT_PKCS1_PADDING_INFO structure is used to provide options for the PKCS #1 padding scheme.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_PKCS1_PADDING_INFO.pszAlgId">
            <summary>
            A pointer to a null-terminated Unicode string that identifies the cryptographic algorithm to use to create the padding. This algorithm must be a hashing algorithm. When creating a signature, the object identifier (OID) that corresponds to this algorithm is added to the DigestInfo element in the signature, and if this member is NULL, then the OID is not added. When verifying a signature, the verification fails if the OID that corresponds to this member is not the same as the OID in the signature. If there is no OID in the signature, then verification fails unless this member is NULL.
            Typically the value comes from a constant defined in <see cref="T:PInvoke.BCrypt.AlgorithmIdentifiers"/>.
            </summary>
        </member>
        <member name="P:PInvoke.BCrypt.BCRYPT_PKCS1_PADDING_INFO.pszAlgId_IntPtr">
            <summary>
            A pointer to a null-terminated Unicode string that identifies the cryptographic algorithm to use to create the padding. This algorithm must be a hashing algorithm. When creating a signature, the object identifier (OID) that corresponds to this algorithm is added to the DigestInfo element in the signature, and if this member is NULL, then the OID is not added. When verifying a signature, the verification fails if the OID that corresponds to this member is not the same as the OID in the signature. If there is no OID in the signature, then verification fails unless this member is NULL.
            Typically the value comes from a constant defined in <see cref = "T:PInvoke.BCrypt.AlgorithmIdentifiers"/>.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_PSS_PADDING_INFO">
            <summary>
            The BCRYPT_PSS_PADDING_INFO structure is used to provide options for the Probabilistic Signature Scheme (PSS) padding scheme.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_PSS_PADDING_INFO.pszAlgId">
            <summary>
            A pointer to a null-terminated Unicode string that identifies the cryptographic algorithm to use to create the padding. This algorithm must be a hashing algorithm.
            Typically the value comes from a constant defined in <see cref="T:PInvoke.BCrypt.AlgorithmIdentifiers"/>.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_PSS_PADDING_INFO.cbSalt">
            <summary>
            The size, in bytes, of the random salt to use for the padding.
            </summary>
        </member>
        <member name="P:PInvoke.BCrypt.BCRYPT_PSS_PADDING_INFO.pszAlgId_IntPtr">
            <summary>
            A pointer to a null-terminated Unicode string that identifies the cryptographic algorithm to use to create the padding. This algorithm must be a hashing algorithm.
            Typically the value comes from a constant defined in <see cref = "T:PInvoke.BCrypt.AlgorithmIdentifiers"/>.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB">
            <summary>
            A key blob format for transporting RSA keys.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB.Magic">
            <summary>
            Specifies the type of RSA key this BLOB represents.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB.BitLength">
            <summary>
            The size, in bits, of the key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB.cbPublicExp">
            <summary>
            The size, in bytes, of the exponent of the key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB.cbModulus">
            <summary>
            The size, in bytes, of the modulus of the key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB.cbPrime1">
            <summary>
            The size, in bytes, of the first prime number of the key. This is only used for private key BLOBs.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB.cbPrime2">
            <summary>
            The size, in bytes, of the second prime number of the key. This is only used for private key BLOBs.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB.MagicNumber">
            <summary>
            Enumerates the values that may be expected in the <see cref="F:PInvoke.BCrypt.BCRYPT_RSAKEY_BLOB.Magic"/> field.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.BufferType">
            <summary>
            Types of data stored in <see cref="T:PInvoke.BCrypt.BCryptBuffer"/>.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_HASH_ALGORITHM">
            <summary>
            The buffer is a key derivation function (KDF) parameter that contains a null-terminated Unicode string that identifies the hash algorithm. This can be one of the standard hash algorithm identifiers from CNG Algorithm Identifiers or the identifier for another registered hash algorithm.
            The size specified by the <see cref="F:PInvoke.BCrypt.BCryptBuffer.cbBuffer"/> member of this structure must include the terminating NULL character.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_SECRET_PREPEND">
            <summary>
            The buffer is a KDF parameter that contains the value to add to the beginning of the message that is input to the hash function.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_SECRET_APPEND">
            <summary>
            The buffer is a KDF parameter that contains the value to add to the end of the message that is input to the hash function.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_HMAC_KEY">
            <summary>
            The buffer is a KDF parameter that contains the plain text value of the HMAC key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_TLS_PRF_LABEL">
            <summary>
            The buffer is a KDF parameter that contains an ANSI string that contains the transport layer security (TLS) pseudo-random function (PRF) label.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_TLS_PRF_SEED">
            <summary>
            The buffer is a KDF parameter that contains the PRF seed value. The seed must be 64 bytes long.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_SECRET_HANDLE">
            <summary>
            The buffer is a KDF parameter that contains the secret agreement handle. The <see cref="F:PInvoke.BCrypt.BCryptBuffer.pvBuffer"/> member contains a BCRYPT_SECRET_HANDLE value and is not a pointer.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_TLS_PRF_PROTOCOL">
            <summary>
            The buffer is a KDF parameter that contains a DWORD value identifying the SSL/TLS protocol version whose PRF algorithm is to be used.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_ALGORITHMID">
            <summary>
            The buffer is a KDF parameter that contains the byte array to use as the AlgorithmID subfield of the OtherInfo parameter to the SP 800-56A KDF.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_PARTYUINFO">
            <summary>
            The buffer is a KDF parameter that contains the byte array to use as the PartyUInfo subfield of the OtherInfo parameter to the SP 800-56A KDF.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_PARTYVINFO">
            <summary>
            The buffer is a KDF parameter that contains the byte array to use as the PartyVInfo subfield of the OtherInfo parameter to the SP 800-56A KDF.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_SUPPPUBINFO">
            <summary>
            The buffer is a KDF parameter that contains the byte array to use as the SuppPubInfo subfield of the OtherInfo parameter to the SP 800-56A KDF.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.BufferType.KDF_SUPPPRIVINFO">
            <summary>
            The buffer is a KDF parameter that contains the byte array to use as the SuppPrivInfo subfield of the OtherInfo parameter to the SP 800-56A KDF.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.ChainingModes">
            <summary>
            Possible values for the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_CHAINING_MODE"/> property.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.ChainingModes.Cbc">
            <summary>
            Sets the algorithm's chaining mode to cipher block chaining.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.ChainingModes.Ccm">
            <summary>
            Sets the algorithm's chaining mode to counter with CBC-MAC mode (CCM).
            Windows Vista:  This value is supported beginning with Windows Vista with SP1.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.ChainingModes.Cfb">
            <summary>
            Sets the algorithm's chaining mode to cipher feedback.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.ChainingModes.Ecb">
            <summary>
            Sets the algorithm's chaining mode to electronic codebook.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.ChainingModes.Gcm">
            <summary>
            Sets the algorithm's chaining mode to Galois/counter mode (GCM).
            Windows Vista:  This value is supported beginning with Windows Vista with SP1.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.ChainingModes.NotApplicable">
            <summary>
            The algorithm does not support chaining.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.EccKeyBlob.Magic">
            <summary>
            Specifies the type of key this BLOB represents.
            The possible values for this member depend on the type of BLOB this structure represents.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.EccKeyBlob.KeyLength">
            <summary>
            The length, in bytes, of the key.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.EccKeyBlob.#ctor(System.Byte[])">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.EccKeyBlob"/> struct.
            </summary>
            <param name="keyBlob">The key blob that starts with an BCRYPT_ECCKEY_BLOB structure.</param>
        </member>
        <member name="T:PInvoke.BCrypt.InterfaceIdentifiers">
            <summary>
            Identifiers that are used to identify a CNG cryptographic interface.
            In CNG, an interface identifies the type of cryptographic behavior that a provider supports. For example, a provider may be a random number generator or it may be a hashing provider.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.InterfaceIdentifiers.BCRYPT_CIPHER_INTERFACE">
            <summary>
            The symmetric cipher interface.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.InterfaceIdentifiers.BCRYPT_HASH_INTERFACE">
            <summary>
            The hash interface.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.InterfaceIdentifiers.BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE">
            <summary>
            The algorithm belongs to the asymmetric encryption class of algorithms.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.InterfaceIdentifiers.BCRYPT_SECRET_AGREEMENT_INTERFACE">
            <summary>
            The algorithm belongs to the secret agreement (Diffie-Hellman) class of algorithms.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.InterfaceIdentifiers.BCRYPT_SIGNATURE_INTERFACE">
            <summary>
            The algorithm belongs to the signature class of algorithms.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.InterfaceIdentifiers.BCRYPT_RNG_INTERFACE">
            <summary>
            The random number generator interface.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.InterfaceIdentifiers.BCRYPT_KEY_DERIVATION_INTERFACE">
            <summary>
            The key derivation interface.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.KeyDerivationFunctions">
            <summary>
            Key derivation functions.
            See https://msdn.microsoft.com/en-us/library/windows/desktop/aa376252(v=vs.85).aspx for more information.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.KeyDerivationFunctions.BCRYPT_KDF_HASH">
            <summary>
            Use the hash key derivation function.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.KeyDerivationFunctions.BCRYPT_KDF_HMAC">
            <summary>
            Use the Hash-Based Message Authentication Code (HMAC) key derivation function.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.KeyDerivationFunctions.BCRYPT_KDF_TLS_PRF">
            <summary>
            Use the transport layer security (TLS) pseudo-random function (PRF) key derivation function.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.KeyDerivationFunctions.BCRYPT_KDF_SP80056A_CONCAT">
            <summary>
            Use the SP800-56A key derivation function.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.PaddingSchemes">
            <summary>
            Possible values for the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_PADDING_SCHEMES"/> property.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PaddingSchemes.Router">
            <summary>
            The provider supports padding added by the router.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PaddingSchemes.Pkcs1Encryption">
            <summary>
            The provider supports the PKCS1 encryption padding scheme.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PaddingSchemes.Pkcs1Signature">
            <summary>
            The provider supports the PKCS1 signature padding scheme.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PaddingSchemes.Oaep">
            <summary>
            The provider supports the OAEP padding scheme.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PaddingSchemes.Pss">
            <summary>
            The provider supports the PSS padding scheme.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.PropertyNames">
            <summary>
            Common property names to supply to <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/>.
            </summary>
            <devremarks>
            Fill in summaries for each property as defined here: https://msdn.microsoft.com/en-us/library/windows/desktop/aa376211(v=vs.85).aspx
            </devremarks>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_OBJECT_LENGTH">
            <summary>
            The size, in bytes, of the subobject of a provider. This data type is a DWORD. Currently, the hash and symmetric cipher algorithm providers use caller-allocated buffers to store their subobjects. For example, the hash provider requires you to allocate memory for the hash object obtained with the BCryptCreateHash function. This property provides the buffer size for a provider's object so you can allocate memory for the object created by the provider.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_ALGORITHM_NAME">
            <summary>
            The name of the algorithm.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_PROVIDER_HANDLE">
            <summary>
            The handle of the CNG provider that created the object passed in the hObject parameter. This data type is a BCRYPT_ALG_HANDLE. This property can only be retrieved; it cannot be set.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_CHAINING_MODE">
            <summary>
            Represents the chaining mode of the encryption algorithm. This property can be set on an algorithm handle or a key handle to one of the following values
            specified in <see cref="T:PInvoke.BCrypt.ChainingModes"/>.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_BLOCK_LENGTH">
            <summary>
            The size, in bytes, of a cipher block for the algorithm. This property only applies to block cipher algorithms. This data type is a DWORD.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_KEY_LENGTH">
            <summary>
            The size, in bits, of the key value of a symmetric key provider. This data type is a DWORD.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_KEY_OBJECT_LENGTH">
            <summary>
            This property is not used. The <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_OBJECT_LENGTH"/> property is used to obtain this information.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_KEY_STRENGTH">
            <summary>
            The number of bits in the key. This data type is a DWORD. This property only applies to keys.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_KEY_LENGTHS">
            <summary>
            The key lengths that are supported by the algorithm. This property is a BCRYPT_KEY_LENGTHS_STRUCT structure. This property only applies to algorithms.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_BLOCK_SIZE_LIST">
            <summary>
            A list of the block lengths supported by an encryption algorithm. This data type is an array of DWORDs. The number of elements in the array can be determined by dividing the number of bytes retrieved by the size of a single DWORD.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_EFFECTIVE_KEY_LENGTH">
            <summary>
            The size, in bits, of the effective length of an RC2 key. This data type is a DWORD.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_HASH_LENGTH">
            <summary>
            The size, in bytes, of the hash value of a hash provider. This data type is a DWORD.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_HASH_OID_LIST">
            <summary>
            The list of DER-encoded hashing object identifiers (OIDs). This property is a BCRYPT_OID_LIST structure. This property can only be read.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_PADDING_SCHEMES">
            <summary>
            Represents the padding scheme of the RSA algorithm provider. This data type is a DWORD.
            This can be one of the values specified in <see cref="T:PInvoke.BCrypt.PaddingSchemes"/>.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_SIGNATURE_LENGTH">
            <summary>
            The size, in bytes, of the length of a signature for a key. This data type is a DWORD. This property only applies to keys. This property can only be retrieved; it cannot be set.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_HASH_BLOCK_LENGTH">
            <summary>
            The size, in bytes, of the block for a hash. This property only applies to hash algorithms. This data type is a DWORD.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_AUTH_TAG_LENGTH">
            <summary>
            The authentication tag lengths that are supported by the algorithm. This property is a <see cref="T:PInvoke.BCrypt.BCRYPT_AUTH_TAG_LENGTHS_STRUCT"/> structure. This property only applies to algorithms.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_MESSAGE_BLOCK_LENGTH">
            <summary>
            This can be set on any key handle that has the CFB chaining mode set. By default, this property is set to 1 for 8-bit CFB. Setting it to the block size in bytes causes full-block CFB to be used.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_DH_PARAMETERS">
            <summary>
            Specifies parameters to use with a Diffie-Hellman key. This data type is a pointer to a BCRYPT_DH_PARAMETER_HEADER structure. This property can only be set and must be set for the key before the key is completed.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_DSA_PARAMETERS">
            <summary>
            Specifies parameters to use with a DSA key. This property is a BCRYPT_DSA_PARAMETER_HEADER or a BCRYPT_DSA_PARAMETER_HEADER_V2 structure. This property can only be set and must be set for the key before the key is completed.
            Windows 8:  Beginning with Windows 8, this property can be a BCRYPT_DSA_PARAMETER_HEADER_V2 structure.Use this structure if the key size exceeds 1024 bits and is less than or equal to 3072 bits.If the key size is greater than or equal to 512 but less than or equal to 1024 bits, use the BCRYPT_DSA_PARAMETER_HEADER structure.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_INITIALIZATION_VECTOR">
            <summary>
            Contains the initialization vector (IV) for a key. This property only applies to keys.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_PRIMITIVE_TYPE">
            <summary>
            Undocumented.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_IS_KEYED_HASH">
            <summary>
            Undocumented.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.PropertyNames.BCRYPT_IS_REUSABLE_HASH">
            <summary>
            Undocumented.
            </summary>
        </member>
        <member name="T:PInvoke.BCrypt.SafeAlgorithmHandle">
            <summary>
            A BCrypt algorithm handle.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.SafeAlgorithmHandle.Null">
            <summary>
            A handle that may be used in place of <see cref="F:System.IntPtr.Zero"/>.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.SafeAlgorithmHandle.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.SafeAlgorithmHandle"/> class.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.SafeAlgorithmHandle.#ctor(System.IntPtr,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.SafeAlgorithmHandle"/> class.
            </summary>
            <param name="preexistingHandle">An object that represents the pre-existing handle to use.</param>
            <param name="ownsHandle">
                <see langword="true" /> to have the native handle released when this safe handle is disposed or finalized;
                <see langword="false" /> otherwise.
            </param>
        </member>
        <member name="P:PInvoke.BCrypt.SafeAlgorithmHandle.IsInvalid">
            <inheritdoc />
        </member>
        <member name="M:PInvoke.BCrypt.SafeAlgorithmHandle.ReleaseHandle">
            <inheritdoc />
        </member>
        <member name="T:PInvoke.BCrypt.SafeHashHandle">
            <summary>
            A BCrypt cryptographic hash handle.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.SafeHashHandle.Null">
            <summary>
            A handle that may be used in place of <see cref="F:System.IntPtr.Zero"/>.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.SafeHashHandle.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.SafeHashHandle"/> class.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.SafeHashHandle.#ctor(System.IntPtr,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.SafeHashHandle"/> class.
            </summary>
            <param name="preexistingHandle">An object that represents the pre-existing handle to use.</param>
            <param name="ownsHandle">
                <see langword="true" /> to have the native handle released when this safe handle is disposed or finalized;
                <see langword="false" /> otherwise.
            </param>
        </member>
        <member name="P:PInvoke.BCrypt.SafeHashHandle.IsInvalid">
            <inheritdoc />
        </member>
        <member name="M:PInvoke.BCrypt.SafeHashHandle.ReleaseHandle">
            <inheritdoc />
        </member>
        <member name="T:PInvoke.BCrypt.SafeKeyHandle">
            <summary>
            A BCrypt cryptographic key handle.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.SafeKeyHandle.Null">
            <summary>
            A handle that may be used in place of <see cref="F:System.IntPtr.Zero"/>.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.SafeKeyHandle.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.SafeKeyHandle"/> class.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.SafeKeyHandle.#ctor(System.IntPtr,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.SafeKeyHandle"/> class.
            </summary>
            <param name="preexistingHandle">An object that represents the pre-existing handle to use.</param>
            <param name="ownsHandle">
                <see langword="true" /> to have the native handle released when this safe handle is disposed or finalized;
                <see langword="false" /> otherwise.
            </param>
        </member>
        <member name="P:PInvoke.BCrypt.SafeKeyHandle.IsInvalid">
            <inheritdoc />
        </member>
        <member name="M:PInvoke.BCrypt.SafeKeyHandle.ReleaseHandle">
            <inheritdoc />
        </member>
        <member name="T:PInvoke.BCrypt.SafeSecretHandle">
            <summary>
            A safe handle for BCrypt secrets.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.SafeSecretHandle.Null">
            <summary>
            A handle that may be used in place of <see cref="F:System.IntPtr.Zero"/>.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.SafeSecretHandle.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.SafeSecretHandle"/> class.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.SafeSecretHandle.#ctor(System.IntPtr,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.SafeSecretHandle"/> class.
            </summary>
            <param name="preexistingHandle">An object that represents the pre-existing handle to use.</param>
            <param name="ownsHandle">
                <see langword="true" /> to have the native handle released when this safe handle is disposed or finalized;
                <see langword="false" /> otherwise.
            </param>
        </member>
        <member name="P:PInvoke.BCrypt.SafeSecretHandle.IsInvalid">
            <inheritdoc />
        </member>
        <member name="M:PInvoke.BCrypt.SafeSecretHandle.ReleaseHandle">
            <inheritdoc />
        </member>
        <member name="F:PInvoke.BCrypt.SymmetricKeyBlobTypes.BCRYPT_AES_WRAP_KEY_BLOB">
            <summary>
            Import a symmetric key from an AES key–wrapped key BLOB. The hImportKey parameter must reference a valid BCRYPT_KEY_HANDLE pointer to the key encryption key.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.SymmetricKeyBlobTypes.BCRYPT_KEY_DATA_BLOB">
            <summary>
            Import a symmetric key from a data BLOB. The pbInput parameter is a pointer to a <see cref="T:PInvoke.BCrypt.BCRYPT_KEY_DATA_BLOB_HEADER"/> structure immediately followed by the key BLOB.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.SymmetricKeyBlobTypes.BCRYPT_OPAQUE_KEY_BLOB">
            <summary>
            Import a symmetric key BLOB in a format that is specific to a single CSP. Opaque BLOBs are not transferable and must be imported by using the same CSP that generated the BLOB. Opaque BLOBs are only intended to be used for interprocess transfer of keys and are not suitable to be persisted and read in across versions of a provider.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.SymmetricKeyBlobTypes.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:PInvoke.BCrypt.SymmetricKeyBlobTypes"/> class.
            </summary>
            <remarks>
            Suppresses generation of a public default constructor.
            </remarks>
        </member>
        <member name="F:PInvoke.BCrypt.NonEmptyArrayReplacesNull">
            <summary>
            An array that fills in for a null one.
            </summary>
        </member>
        <member name="F:PInvoke.BCrypt.NonEmptyArrayReplacesEmpty">
            <summary>
            An array that fills in for one with no elements.
            </summary>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptOpenAlgorithmProvider(System.String,System.String,PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags)">
            <summary>
            Loads and initializes a CNG provider.
            </summary>
            <param name="pszAlgId">
            A pointer to a null-terminated Unicode string that identifies the requested
            cryptographic algorithm. This can be one of the standard
            CNG Algorithm Identifiers defined in <see cref="T:PInvoke.BCrypt.AlgorithmIdentifiers"/>
            or the identifier for another registered algorithm.
            </param>
            <param name="pszImplementation">
            <para>
            A pointer to a null-terminated Unicode string that identifies the specific provider
            to load. This is the registered alias of the cryptographic primitive provider.
            This parameter is optional and can be NULL if it is not needed. If this parameter
            is NULL, the default provider for the specified algorithm will be loaded.
            </para>
            <para>
            Note If the <paramref name="pszImplementation"/> parameter value is NULL, CNG attempts to open each
            registered provider, in order of priority, for the algorithm specified by the
            <paramref name="pszAlgId"/> parameter and returns the handle of the first provider that is successfully
            opened.For the lifetime of the handle, any BCrypt*** cryptographic APIs will use the
            provider that was successfully opened.
            </para>
            </param>
            <param name="dwFlags">Options for the function.</param>
            <returns>
            A pointer to a BCRYPT_ALG_HANDLE variable that receives the CNG provider handle.
            When you have finished using this handle, release it by passing it to the
            BCryptCloseAlgorithmProvider function.
            </returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptCreateHash(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptCreateHashFlags)">
            <summary>
            Create a hash or Message Authentication Code (MAC) object.
            </summary>
            <param name="algorithm">
            The handle of an algorithm provider created by using the <see cref="M:PInvoke.BCrypt.BCryptOpenAlgorithmProvider(System.String,System.String,PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags)"/> function. The algorithm that was specified when the provider was created must support the hash interface.
            </param>
            <param name="hashObject">
            A pointer to a buffer that receives the hash or MAC object. The required size of this buffer can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_OBJECT_LENGTH"/> property. This will provide the size of the hash or MAC object for the specified algorithm.
            This memory can only be freed after the handle pointed to by the return value is destroyed.
            If the value of this parameter is NULL, the memory for the hash object is allocated and freed by this function.
            Windows 7:  This memory management functionality is available beginning with Windows 7.
            </param>
            <param name="secret">
            A pointer to a buffer that contains the key to use for the hash or MAC. This key only applies to hash algorithms opened by the BCryptOpenAlgorithmProvider function by using the <see cref="F:PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags.AlgorithmHandleHmac"/> flag. Otherwise, set this parameter to NULL.
            </param>
            <param name="flags">Flags that modify the behavior of the function.</param>
            <returns>
            A pointer to a <see cref="T:PInvoke.BCrypt.SafeHashHandle"/> value that receives a handle that represents the hash or MAC object. This handle is used in subsequent hashing or MAC functions, such as the <see cref="M:PInvoke.BCrypt.BCryptHashData(PInvoke.BCrypt.SafeHashHandle,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptHashDataFlags)"/> function. When you have finished using this handle, release it by passing it to the <see cref="M:PInvoke.BCrypt.BCryptDestroyHash(System.IntPtr)"/> function.
            </returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptExportKey(PInvoke.BCrypt.SafeKeyHandle,PInvoke.BCrypt.SafeKeyHandle,System.String)">
            <summary>
            Exports a key to a memory BLOB that can be persisted for later use.
            </summary>
            <param name="key">The handle of the key to export.</param>
            <param name="exportKey">
            The handle of the key with which to wrap the exported key. Use this parameter when exporting BLOBs of type BCRYPT_AES_WRAP_KEY_BLOB; otherwise, set it to NULL.
            Note: The <paramref name="exportKey"/> handle must be supplied by the same provider that supplied the hKey handle, and hExportKey must be a handle to a symmetric key that can be used in the Advanced Encryption Standard(AES) key wrap algorithm.When the hKey handle is from the Microsoft provider, hExportKey must be an AES key handle.
            </param>
            <param name="blobType">
            An identifier that specifies the type of BLOB to export. This can be one of the values
            defined in the <see cref="T:PInvoke.BCrypt.AsymmetricKeyBlobTypes"/> or <see cref="T:PInvoke.BCrypt.SymmetricKeyBlobTypes"/> classes.
            </param>
            <returns>
            A buffer with the key BLOB.
            </returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)">
            <summary>
            Creates an empty public/private key pair.
            </summary>
            <param name="algorithm">The handle to the algorithm previously opened by <see cref="M:PInvoke.BCrypt.BCryptOpenAlgorithmProvider(System.String,System.String,PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags)"/></param>
            <param name="keyLength">The length of the key, in bits.</param>
            <returns>A handle to the generated key pair.</returns>
            <remarks>
            After you create a key by using this function, you can use the BCryptSetProperty
            function to set its properties; however, the key cannot be used until the
            BCryptFinalizeKeyPair function is called.
            </remarks>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)">
            <summary>
            Creates a key object for use with a symmetrical key encryption algorithm from a supplied key.
            </summary>
            <param name="algorithm">
            The handle of an algorithm provider created with the <see cref="M:PInvoke.BCrypt.BCryptOpenAlgorithmProvider(System.String,System.String,PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags)"/> function. The algorithm specified when the provider was created must support symmetric key encryption.
            </param>
            <param name="secret">
            A buffer that contains the key from which to create the key object. This is normally a hash of a password or some other reproducible data. If the data passed in exceeds the target key size, the data will be truncated and the excess will be ignored.
            Note: We strongly recommended that applications pass in the exact number of bytes required by the target key.
            </param>
            <param name="keyObject">
            A pointer to a buffer that receives the key object. The required size of this buffer can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the BCRYPT_OBJECT_LENGTH property. This will provide the size of the key object for the specified algorithm.
            This memory can only be freed after the returned key handle is destroyed.
            If the value of this parameter is NULL, the memory for the key object is allocated and freed by this function.
            </param>
            <param name="flags">A set of flags that modify the behavior of this function. No flags are currently defined, so this parameter should be zero.</param>
            <returns>A handle to the generated key.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptImportKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.BCryptImportKeyPairFlags)">
            <summary>
            Imports a public/private key pair from a key BLOB.
            </summary>
            <param name="algorithm">The handle of the algorithm provider to import the key. This handle is obtained by calling the BCryptOpenAlgorithmProvider function.</param>
            <param name="blobType">An identifier that specifies the type of BLOB that is contained in the <paramref name="input"/> buffer. Supported formats are defined in <see cref="T:PInvoke.BCrypt.AsymmetricKeyBlobTypes"/>.</param>
            <param name="input">The address of a buffer that contains the key BLOB to import. The <paramref name="blobType"/> parameter specifies the type of key BLOB this buffer contains.</param>
            <param name="flags">A set of flags that modify the behavior of this function. This can be zero or the following value: BCRYPT_NO_KEY_VALIDATION</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)">
            <summary>
            Imports a symmetric key from a key BLOB. The BCryptImportKeyPair function is used to import a public/private key pair.
            </summary>
            <param name="hAlgorithm">
            The handle of the algorithm provider to import the key. This handle is obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptOpenAlgorithmProvider(System.String,System.String,PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags)"/> function.
            </param>
            <param name="pszBlobType">
            An identifier that specifies the type of BLOB that is contained in the pbInput buffer.
            This can be one of the values defined in <see cref="T:PInvoke.BCrypt.SymmetricKeyBlobTypes"/>.
            </param>
            <param name="pbInput">
            The address of a buffer that contains the key BLOB to import.
            The <paramref name="pszBlobType"/> parameter specifies the type of key BLOB this buffer contains.
            </param>
            <param name="hImportKey">
            The handle of the key encryption key needed to unwrap the key BLOB in the pbInput parameter.
            Note The handle must be supplied by the same provider that supplied the key that is being imported.
            </param>
            <param name="pbKeyObject">
            A pointer to a buffer that receives the imported key object.
            The required size of this buffer can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/>
            function to get the BCRYPT_OBJECT_LENGTH property. This will provide the size of the
            key object for the specified algorithm.
            This memory can only be freed after the phKey key handle is destroyed.
            </param>
            <param name="dwFlags">A set of flags that modify the behavior of this function.</param>
            <returns>The imported key.</returns>
            <exception cref="T:PInvoke.Win32Exception">If an error occurs.</exception>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Encrypts a block of data.
            </summary>
            <param name="hKey">
            The handle of the key to use to encrypt the data. This handle is obtained from one of the key creation functions, such as <see cref="M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref="M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref="M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name="pbInput">
            The address of a buffer that contains the plaintext to be encrypted. The cbInput parameter contains the size of the plaintext to encrypt.
            </param>
            <param name="pPaddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the dwFlags parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name="pbIV">
            The address of a buffer that contains the initialization vector (IV) to use during encryption. The cbIV parameter contains the size of this buffer. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the BCRYPT_BLOCK_LENGTH property.This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name="dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the hKey parameter.
            </param>
            <returns>The encrypted ciphertext.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Nullable{System.ArraySegment{System.Byte}},System.Void*,System.Nullable{System.ArraySegment{System.Byte}},System.Nullable{System.ArraySegment{System.Byte}},System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Encrypts a block of data.
            </summary>
            <param name="key">
            The handle of the key to use to encrypt the data. This handle is obtained from one of the key creation functions, such as <see cref="M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref="M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref="M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name="input">
            The address of a buffer that contains the plaintext to be encrypted. The cbInput parameter contains the size of the plaintext to encrypt.
            </param>
            <param name="paddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the dwFlags parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name="iv">
            The address of a buffer that contains the initialization vector (IV) to use during encryption. The cbIV parameter contains the size of this buffer. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the BCRYPT_BLOCK_LENGTH property.This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name="output">
            The address of the buffer that receives the ciphertext produced by this function. For more information, see Remarks.
            If this parameter is NULL, the <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> function calculates the size needed for the ciphertext of the data passed in the <paramref name="input"/> parameter. In this case, the location pointed to by the <paramref name="outputLength"/> parameter contains this size, and the function returns <see cref="F:PInvoke.NTSTATUS.Code.STATUS_SUCCESS"/>.The <paramref name="paddingInfo"/> parameter is not modified.
            If the values of both the <paramref name="output"/> and <paramref name="input"/> parameters are NULL, an error is returned unless an authenticated encryption algorithm is in use.In the latter case, the call is treated as an authenticated encryption call with zero length data, and the authentication tag is returned in the <paramref name="paddingInfo"/> parameter.
            </param>
            <param name="outputLength">
            Receives the number of bytes copied to the <paramref name="output"/> buffer. If <paramref name="output"/> is NULL, this receives the size, in bytes, required for the ciphertext.
            </param>
            <param name="flags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the hKey parameter.
            </param>
            <returns>The encrypted ciphertext.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Decrypts a block of data.
            </summary>
            <param name="hKey">
            The handle of the key to use to decrypt the data. This handle is obtained from one of the key creation functions, such as <see cref="M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref="M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref="M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name="pbInput">
            The address of a buffer that contains the ciphertext to be decrypted. For more information, see Remarks.
            </param>
            <param name="pPaddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the <paramref name="dwFlags"/> parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name="pbIV">
            The address of a buffer that contains the initialization vector (IV) to use during decryption. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_BLOCK_LENGTH"/> property. This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name="dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the <paramref name="hKey"/> parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Nullable{System.ArraySegment{System.Byte}},System.Void*,System.Nullable{System.ArraySegment{System.Byte}},System.Nullable{System.ArraySegment{System.Byte}},System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Decrypts a block of data.
            </summary>
            <param name="key">
            The handle of the key to use to decrypt the data. This handle is obtained from one of the key creation functions, such as <see cref="M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref="M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref="M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name="input">
            The address of a buffer that contains the ciphertext to be decrypted. For more information, see Remarks.
            </param>
            <param name="paddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the <paramref name="flags"/> parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name="iv">
            The address of a buffer that contains the initialization vector (IV) to use during decryption. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_BLOCK_LENGTH"/> property. This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name="output">
            The address of a buffer to receive the plaintext produced by this function. The cbOutput parameter contains the size of this buffer. For more information, see Remarks.
            If this parameter is NULL, the <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> function calculates the size required for the plaintext of the encrypted data passed in the <paramref name="input"/> parameter.In this case, the location pointed to by the <paramref name="outputLength"/> parameter contains this size, and the function returns <see cref="F:PInvoke.NTSTATUS.Code.STATUS_SUCCESS"/>.
            If the values of both the <paramref name="output"/> and <paramref name="input" /> parameters are NULL, an error is returned unless an authenticated encryption algorithm is in use.In the latter case, the call is treated as an authenticated encryption call with zero length data, and the authentication tag, passed in the <paramref name="paddingInfo"/> parameter, is verified.
            </param>
            <param name="outputLength">
            A pointer to a ULONG variable to receive the number of bytes copied to the <paramref name="output"/> buffer. If <paramref name="output"/> is NULL, this receives the size, in bytes, required for the plaintext.
            </param>
            <param name="flags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the <paramref name="key"/> parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptFinishHash(PInvoke.BCrypt.SafeHashHandle,PInvoke.BCrypt.BCryptFinishHashFlags)">
            <summary>
            Retrieves the hash or Message Authentication Code (MAC) value for the data accumulated from prior calls to <see cref="M:PInvoke.BCrypt.BCryptHashData(PInvoke.BCrypt.SafeHashHandle,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptHashDataFlags)"/>.
            </summary>
            <param name="hHash">
            The handle of the hash or MAC object to use to compute the hash or MAC. This handle is obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptCreateHash(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptCreateHashFlags)"/> function. After this function has been called, the hash handle passed to this function cannot be used again except in a call to <see cref="M:PInvoke.BCrypt.BCryptDestroyHash(System.IntPtr)"/>.
            </param>
            <param name="flags">A set of flags that modify the behavior of this function.</param>
            <returns>The hash or MAC value.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)">
            <summary>
            Creates a signature of a hash value.
            </summary>
            <param name="key">The handle of the key to use to sign the hash.</param>
            <param name="hash">
            A pointer to a buffer that contains the hash value to sign.
            </param>
            <param name="paddingInfo">
            A pointer to a structure that contains padding information. The actual type of structure this parameter points to depends on the value of the <paramref name="flags"/> parameter. This parameter is only used with asymmetric keys and must be NULL otherwise.
            </param>
            <param name="flags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the <paramref name="key"/> parameter.
            </param>
            <returns>
            The signature produced by this function.
            </returns>
            <remarks>
            To later verify that the signature is valid, call the <see cref="M:PInvoke.BCrypt.BCryptVerifySignature(PInvoke.BCrypt.SafeKeyHandle,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptSignHashFlags)"/> function with an identical key and an identical hash of the original data.
            </remarks>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptVerifySignature(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)">
            <summary>
            Verifies that the specified signature matches the specified hash.
            </summary>
            <param name="key">
            The handle of the key to use to decrypt the signature. This must be an identical key or the public key portion of the key pair used to sign the data with the <see cref="M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)"/> function.
            </param>
            <param name="hash">
            The address of a buffer that contains the hash of the data.
            </param>
            <param name="signature">
            The address of a buffer that contains the signed hash of the data. The <see cref="M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)"/> function is used to create the signature.
            </param>
            <param name="paddingInfo">
            A pointer to a structure that contains padding information. The actual type of structure this parameter points to depends on the value of the <paramref name="flags"/> parameter. This parameter is only used with asymmetric keys and must be NULL otherwise.
            </param>
            <param name="flags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the hKey parameter.
            If the key is a symmetric key, this parameter is not used and should be zero.
            If the key is an asymmetric key, this can be one of the following values.
            </param>
            <returns>
            <c>true</c> if the signature is valid; <c>false</c> otherwise.
            </returns>
            <exception cref="T:PInvoke.Win32Exception">Thrown when any error occurs other than an invalid signature.</exception>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptSecretAgreement(PInvoke.BCrypt.SafeKeyHandle,PInvoke.BCrypt.SafeKeyHandle)">
            <summary>
            Creates a secret agreement value from a private and a public key.
            </summary>
            <param name="privateKey">
            The handle of the private key to use to create the secret agreement value.
            This key and the hPubKey key must come from the same CNG cryptographic algorithm provider.
            </param>
            <param name="publicKey">
            The handle of the public key to use to create the secret agreement value.
            This key and the hPrivKey key must come from the same CNG cryptographic algorithm provider.
            </param>
            <returns>
            A handle to the shared secret.
            </returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptSetProperty(System.Runtime.InteropServices.SafeHandle,System.String,System.String,PInvoke.BCrypt.BCryptSetPropertyFlags)">
            <summary>
            Sets the value of a named property for a CNG object.
            </summary>
            <param name="hObject">A handle that represents the CNG object to set the property value for.</param>
            <param name="propertyName">
            The name of the property to set. This can be one of the predefined <see cref="T:PInvoke.BCrypt.PropertyNames"/> or a custom property identifier.
            </param>
            <param name="propertyValue">The new property value.</param>
            <param name="flags">Flags to pass to <see cref="M:PInvoke.BCrypt.BCryptSetProperty(System.Runtime.InteropServices.SafeHandle,System.String,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptSetPropertyFlags)"/></param>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptSetProperty``1(System.Runtime.InteropServices.SafeHandle,System.String,``0,PInvoke.BCrypt.BCryptSetPropertyFlags)">
            <summary>
            Sets the value of a named property for a CNG object.
            </summary>
            <typeparam name="T">The type of value being set.</typeparam>
            <param name="hObject">A handle that represents the CNG object to set the property value for.</param>
            <param name="propertyName">
            The name of the property to set. This can be one of the predefined <see cref="T:PInvoke.BCrypt.PropertyNames"/> or a custom property identifier.
            </param>
            <param name="propertyValue">The new property value.</param>
            <param name="flags">Flags to pass to <see cref="M:PInvoke.BCrypt.BCryptSetProperty(System.Runtime.InteropServices.SafeHandle,System.String,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptSetPropertyFlags)"/></param>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)">
            <summary>
            Retrieves the value of a named property for a CNG object.
            </summary>
            <param name="hObject">A handle that represents the CNG object to obtain the property value for.</param>
            <param name="propertyName">A pointer to a null-terminated Unicode string that contains the name of the property to retrieve. This can be one of the predefined <see cref="T:PInvoke.BCrypt.PropertyNames"/> or a custom property identifier.</param>
            <param name="flags">A set of flags that modify the behavior of this function. No flags are defined for this function.</param>
            <returns>The property value.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptGetProperty``1(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)">
            <summary>
            Retrieves the value of a named property for a CNG object.
            </summary>
            <typeparam name="T">The type of struct to return the property value as.</typeparam>
            <param name="hObject">A handle that represents the CNG object to obtain the property value for.</param>
            <param name="propertyName">A pointer to a null-terminated Unicode string that contains the name of the property to retrieve. This can be one of the predefined <see cref="T:PInvoke.BCrypt.PropertyNames"/> or a custom property identifier.</param>
            <param name="flags">A set of flags that modify the behavior of this function. No flags are defined for this function.</param>
            <returns>The property value.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.EnsureNotNullOrEmpty(System.ArraySegment{System.Byte}@)">
            <summary>
            Ensures that the specified byte array is not null.
            </summary>
            <param name="buffer">The byte buffer to replace with a non-null buffer, if null.</param>
        </member>
        <member name="M:PInvoke.BCrypt.ArraySegmentFor(System.Byte[])">
            <summary>
            Returns an array segment for the specified array.
            </summary>
            <param name="buffer">The byte buffer to wrap as an ArraySegment.</param>
            <returns>An array segment.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.ArrayOrOriginalNull(System.ArraySegment{System.Byte},System.Byte*)">
            <summary>
            Returns the specified <paramref name="pointer"/>,
            or null if <paramref name="buffer"/> was null before a call to
            <see cref="M:PInvoke.BCrypt.EnsureNotNullOrEmpty(System.ArraySegment{System.Byte}@)"/>.
            </summary>
            <param name="buffer">The buffer which may have originally been null.</param>
            <param name="pointer">The pointer to some element in the buffer.</param>
            <returns>The <paramref name="pointer"/> or <c>null</c>.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptEnumAlgorithms(PInvoke.BCrypt.AlgorithmOperations,System.Int32@,PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER*@,PInvoke.BCrypt.BCryptEnumAlgorithmsFlags)">
            <summary>
            The BCryptEnumAlgorithms function gets a list of the registered algorithm identifiers.
            </summary>
            <param name="dwAlgOperations">A value that specifies the algorithm operation types to include in the enumeration.</param>
            <param name="pAlgCount">A pointer to a ULONG variable to receive the number of elements in the <paramref name="ppAlgList"/> array.</param>
            <param name="ppAlgList">
            The address of a <see cref="T:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER"/> structure pointer to receive the array of registered algorithm identifiers. This pointer must be passed to the <see cref="M:PInvoke.BCrypt.BCryptFreeBuffer(System.Void*)"/> function when it is no longer needed.
            </param>
            <param name="dwFlags">A set of flags that modify the behavior of this function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptOpenAlgorithmProvider(PInvoke.BCrypt.SafeAlgorithmHandle@,System.String,System.String,PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags)">
            <summary>
            Loads and initializes a CNG provider.
            </summary>
            <param name="phAlgorithm">
            A pointer to a BCRYPT_ALG_HANDLE variable that receives the CNG provider handle.
            When you have finished using this handle, release it by passing it to the
            BCryptCloseAlgorithmProvider function.
            </param>
            <param name="pszAlgId">
            A pointer to a null-terminated Unicode string that identifies the requested
            cryptographic algorithm. This can be one of the standard
            CNG Algorithm Identifiers defined in <see cref="T:PInvoke.BCrypt.AlgorithmIdentifiers"/>
            or the identifier for another registered algorithm.
            </param>
            <param name="pszImplementation">
            <para>
            A pointer to a null-terminated Unicode string that identifies the specific provider
            to load. This is the registered alias of the cryptographic primitive provider.
            This parameter is optional and can be NULL if it is not needed. If this parameter
            is NULL, the default provider for the specified algorithm will be loaded.
            </para>
            <para>
            Note If the <paramref name="pszImplementation"/> parameter value is NULL, CNG attempts to open each
            registered provider, in order of priority, for the algorithm specified by the
            <paramref name="pszAlgId"/> parameter and returns the handle of the first provider that is successfully
            opened.For the lifetime of the handle, any BCrypt*** cryptographic APIs will use the
            provider that was successfully opened.
            </para>
            </param>
            <param name="dwFlags">Options for the function.</param>
            <returns>
            Returns a status code that indicates the success or failure of the function.
            </returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptCreateHash(PInvoke.BCrypt.SafeAlgorithmHandle,PInvoke.BCrypt.SafeHashHandle@,System.Byte[],System.Int32,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptCreateHashFlags)">
            <summary>
            Create a hash or Message Authentication Code (MAC) object.
            </summary>
            <param name="hAlgorithm">
            The handle of an algorithm provider created by using the <see cref="M:PInvoke.BCrypt.BCryptOpenAlgorithmProvider(System.String,System.String,PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags)"/> function. The algorithm that was specified when the provider was created must support the hash interface.
            </param>
            <param name="phHash">
            A pointer to a <see cref="T:PInvoke.BCrypt.SafeHashHandle"/> value that receives a handle that represents the hash or MAC object. This handle is used in subsequent hashing or MAC functions, such as the <see cref="M:PInvoke.BCrypt.BCryptHashData(PInvoke.BCrypt.SafeHashHandle,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptHashDataFlags)"/> function. When you have finished using this handle, release it by passing it to the <see cref="M:PInvoke.BCrypt.BCryptDestroyHash(System.IntPtr)"/> function.
            </param>
            <param name="pbHashObject">
            A pointer to a buffer that receives the hash or MAC object. The <paramref name="cbHashObject"/> parameter contains the size of this buffer. The required size of this buffer can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_OBJECT_LENGTH"/> property. This will provide the size of the hash or MAC object for the specified algorithm.
            This memory can only be freed after the handle pointed to by the <paramref name="phHash"/> parameter is destroyed.
            If the value of this parameter is NULL and the value of the <paramref name="cbHashObject"/> parameter is zero, the memory for the hash object is allocated and freed by this function.
            Windows 7:  This memory management functionality is available beginning with Windows 7.
            </param>
            <param name="cbHashObject">
            The size, in bytes, of the <paramref name="pbHashObject"/> buffer.
            If the value of this parameter is zero and the value of the <paramref name="pbHashObject"/> parameter is NULL, the memory for the key object is allocated and freed by this function.
            Windows 7:  This memory management functionality is available beginning with Windows 7.
            </param>
            <param name="pbSecret">
            A pointer to a buffer that contains the key to use for the hash or MAC. The <paramref name="cbSecret"/> parameter contains the size of this buffer. This key only applies to hash algorithms opened by the BCryptOpenAlgorithmProvider function by using the <see cref="F:PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags.AlgorithmHandleHmac"/> flag. Otherwise, set this parameter to NULL.
            </param>
            <param name="cbSecret">
            The size, in bytes, of the <paramref name="pbSecret"/> buffer. If no key is used, set this parameter to zero.
            </param>
            <param name="dwFlags">Flags that modify the behavior of the function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte*,System.Int32,System.Void*,System.Byte*,System.Int32,System.Byte*,System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Encrypts a block of data.
            </summary>
            <param name="hKey">
            The handle of the key to use to encrypt the data. This handle is obtained from one of the key creation functions, such as <see cref="M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref="M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref="M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name="pbInput">
            The address of a buffer that contains the plaintext to be encrypted. The cbInput parameter contains the size of the plaintext to encrypt.
            </param>
            <param name="cbInput">
            The number of bytes in the pbInput buffer to encrypt.
            </param>
            <param name="pPaddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the dwFlags parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name="pbIV">
            The address of a buffer that contains the initialization vector (IV) to use during encryption. The cbIV parameter contains the size of this buffer. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the BCRYPT_BLOCK_LENGTH property.This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name="cbIV">The size, in bytes, of the pbIV buffer.</param>
            <param name="pbOutput">
            The address of the buffer that receives the ciphertext produced by this function. The <paramref name="cbOutput"/> parameter contains the size of this buffer. For more information, see Remarks.
            If this parameter is NULL, the <see cref="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> function calculates the size needed for the ciphertext of the data passed in the <paramref name="pbInput"/> parameter. In this case, the location pointed to by the <paramref name="pcbResult"/> parameter contains this size, and the function returns <see cref="F:PInvoke.NTSTATUS.Code.STATUS_SUCCESS"/>.The <paramref name="pPaddingInfo"/> parameter is not modified.
            If the values of both the <paramref name="pbOutput"/> and <paramref name="pbInput"/> parameters are NULL, an error is returned unless an authenticated encryption algorithm is in use.In the latter case, the call is treated as an authenticated encryption call with zero length data, and the authentication tag is returned in the <paramref name="pPaddingInfo"/> parameter.
            </param>
            <param name="cbOutput">
            The size, in bytes, of the <paramref name="pbOutput"/> buffer. This parameter is ignored if the <paramref name="pbOutput"/> parameter is NULL.
            </param>
            <param name="pcbResult">
            A pointer to a ULONG variable that receives the number of bytes copied to the <paramref name="pbOutput"/> buffer. If <paramref name="pbOutput"/> is NULL, this receives the size, in bytes, required for the ciphertext.
            </param>
            <param name="dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the hKey parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
            <remarks>
            The <paramref name="pbInput"/> and <paramref name="pbOutput"/> parameters can point to the same buffer. In this case, this function will perform the encryption in place. It is possible that the encrypted data size will be larger than the unencrypted data size, so the buffer must be large enough to hold the encrypted data.
            </remarks>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte*,System.Int32,System.Void*,System.Byte*,System.Int32,System.Byte*,System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Decrypts a block of data.
            </summary>
            <param name="hKey">
            The handle of the key to use to decrypt the data. This handle is obtained from one of the key creation functions, such as <see cref="M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref="M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref="M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name="pbInput">
            The address of a buffer that contains the ciphertext to be decrypted. The <paramref name="cbInput"/> parameter contains the size of the ciphertext to decrypt. For more information, see Remarks.
            </param>
            <param name="cbInput">
            The number of bytes in the <paramref name="pbInput"/> buffer to decrypt.
            </param>
            <param name="pPaddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the <paramref name="dwFlags"/> parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name="pbIV">
            The address of a buffer that contains the initialization vector (IV) to use during decryption. The <paramref name="cbIV"/> parameter contains the size of this buffer. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_BLOCK_LENGTH"/> property. This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name="cbIV">
            The size, in bytes, of the <paramref name="pbIV"/> buffer.
            </param>
            <param name="pbOutput">
            The address of a buffer to receive the plaintext produced by this function. The cbOutput parameter contains the size of this buffer. For more information, see Remarks.
            If this parameter is NULL, the <see cref="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> function calculates the size required for the plaintext of the encrypted data passed in the <paramref name="pbInput"/> parameter.In this case, the location pointed to by the <paramref name="pcbResult"/> parameter contains this size, and the function returns <see cref="F:PInvoke.NTSTATUS.Code.STATUS_SUCCESS"/>.
            If the values of both the <paramref name="pbOutput"/> and <paramref name="pbInput" /> parameters are NULL, an error is returned unless an authenticated encryption algorithm is in use.In the latter case, the call is treated as an authenticated encryption call with zero length data, and the authentication tag, passed in the <paramref name="pPaddingInfo"/> parameter, is verified.
            </param>
            <param name="cbOutput">
            The size, in bytes, of the <paramref name="pbOutput"/> buffer. This parameter is ignored if the <paramref name="pbOutput"/> parameter is NULL.
            </param>
            <param name="pcbResult">
            A pointer to a ULONG variable to receive the number of bytes copied to the <paramref name="pbOutput"/> buffer. If <paramref name="pbOutput"/> is NULL, this receives the size, in bytes, required for the plaintext.
            </param>
            <param name="dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the <paramref name="hKey"/> parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptHashData(PInvoke.BCrypt.SafeHashHandle,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptHashDataFlags)">
            <summary>
            Performs a one way hash or Message Authentication Code (MAC) on a data buffer.
            </summary>
            <param name="hHash">
            The handle of the hash or MAC object to use to perform the operation. This handle is obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptCreateHash(PInvoke.BCrypt.SafeAlgorithmHandle,PInvoke.BCrypt.SafeHashHandle@,System.Byte[],System.Int32,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptCreateHashFlags)"/> function.
            </param>
            <param name="pbInput">
            A pointer to a buffer that contains the data to process. The <paramref name="cbInput"/> parameter contains the number of bytes in this buffer. This function does not modify the contents of this buffer.
            </param>
            <param name="cbInput">The number of bytes in the <paramref name="pbInput"/> buffer.</param>
            <param name="dwFlags">A set of flags that modify the behavior of this function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
            <remarks>
            To combine more than one buffer into the hash or MAC, you can call this function multiple times, passing a different buffer each time. To obtain the hash or MAC value, call the <see cref="M:PInvoke.BCrypt.BCryptFinishHash(PInvoke.BCrypt.SafeHashHandle,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptFinishHashFlags)"/> function.
            After the <see cref="M:PInvoke.BCrypt.BCryptFinishHash(PInvoke.BCrypt.SafeHashHandle,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptFinishHashFlags)"/> function has been called for a specified handle, that handle cannot be reused.
            </remarks>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptFinishHash(PInvoke.BCrypt.SafeHashHandle,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptFinishHashFlags)">
            <summary>
            Retrieves the hash or Message Authentication Code (MAC) value for the data accumulated from prior calls to <see cref="M:PInvoke.BCrypt.BCryptHashData(PInvoke.BCrypt.SafeHashHandle,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptHashDataFlags)"/>.
            </summary>
            <param name="hHash">
            The handle of the hash or MAC object to use to compute the hash or MAC. This handle is obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptCreateHash(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptCreateHashFlags)"/> function. After this function has been called, the hash handle passed to this function cannot be used again except in a call to <see cref="M:PInvoke.BCrypt.BCryptDestroyHash(System.IntPtr)"/>.
            </param>
            <param name="pbOutput">
            A pointer to a buffer that receives the hash or MAC value. The <paramref name="cbOutput"/> parameter contains the size of this buffer.
            </param>
            <param name="cbOutput">
            The size, in bytes, of the <paramref name="pbOutput"/> buffer. This size must exactly match the size of the hash or MAC value.
            The size can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_HASH_LENGTH"/> property. This will provide the size of the hash or MAC value for the specified algorithm.
            </param>
            <param name="dwFlags">A set of flags that modify the behavior of this function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptSignHashFlags)">
            <summary>
            Creates a signature of a hash value.
            </summary>
            <param name="hKey">The handle of the key to use to sign the hash.</param>
            <param name="pPaddingInfo">
            A pointer to a structure that contains padding information. The actual type of structure this parameter points to depends on the value of the <paramref name="dwFlags"/> parameter. This parameter is only used with asymmetric keys and must be NULL otherwise.
            </param>
            <param name="pbInput">
            A pointer to a buffer that contains the hash value to sign. The <paramref name="cbInput"/> parameter contains the size of this buffer.
            </param>
            <param name="cbInput">
            The number of bytes in the <paramref name="pbInput"/> buffer to sign.
            </param>
            <param name="pbOutput">
            The address of a buffer to receive the signature produced by this function. The <paramref name="cbOutput"/> parameter contains the size of this buffer.
            If this parameter is NULL, this function will calculate the size required for the signature and return the size in the location pointed to by the <paramref name="pcbResult"/> parameter.
            </param>
            <param name="cbOutput">
            The size, in bytes, of the <paramref name="pbOutput"/> buffer. This parameter is ignored if the <paramref name="pbOutput"/> parameter is NULL.
            </param>
            <param name="pcbResult">
            A pointer to a ULONG variable that receives the number of bytes copied to the <paramref name="pbOutput"/> buffer.
            If <paramref name="pbOutput"/> is NULL, this receives the size, in bytes, required for the signature.
            </param>
            <param name="dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the <paramref name="hKey"/> parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
            <remarks>
            To later verify that the signature is valid, call the <see cref="M:PInvoke.BCrypt.BCryptVerifySignature(PInvoke.BCrypt.SafeKeyHandle,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptSignHashFlags)"/> function with an identical key and an identical hash of the original data.
            </remarks>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptVerifySignature(PInvoke.BCrypt.SafeKeyHandle,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptSignHashFlags)">
            <summary>
            Verifies that the specified signature matches the specified hash.
            </summary>
            <param name="hKey">
            The handle of the key to use to decrypt the signature. This must be an identical key or the public key portion of the key pair used to sign the data with the <see cref="M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)"/> function.
            </param>
            <param name="pPaddingInfo">
            A pointer to a structure that contains padding information. The actual type of structure this parameter points to depends on the value of the <paramref name="dwFlags"/> parameter. This parameter is only used with asymmetric keys and must be NULL otherwise.
            </param>
            <param name="pbHash">
            The address of a buffer that contains the hash of the data. The <paramref name="cbHash"/> parameter contains the size of this buffer.
            </param>
            <param name="cbHash">
            The size, in bytes, of the <paramref name="pbHash"/> buffer.
            </param>
            <param name="pbSignature">
            The address of a buffer that contains the signed hash of the data. The <see cref="M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)"/> function is used to create the signature. The <paramref name="cbSignature"/> parameter contains the size of this buffer.
            </param>
            <param name="cbSignature">
            The size, in bytes, of the <paramref name="pbSignature"/> buffer. The <see cref="M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)"/> function is used to create the signature.
            </param>
            <param name="dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the hKey parameter.
            If the key is a symmetric key, this parameter is not used and should be zero.
            If the key is an asymmetric key, this can be one of the following values.
            </param>
            <returns>
            Returns a status code that indicates the success or failure of the function.
            In particular, an invalid signature will produce a <see cref="F:PInvoke.NTSTATUS.Code.STATUS_INVALID_SIGNATURE"/> result.
            </returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,PInvoke.BCrypt.SafeKeyHandle@,System.Int32,PInvoke.BCrypt.BCryptGenerateKeyPairFlags)">
            <summary>
            Creates an empty public/private key pair.
            </summary>
            <param name="hAlgorithm">The handle to the algorithm previously opened by <see cref="M:PInvoke.BCrypt.BCryptOpenAlgorithmProvider(System.String,System.String,PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags)"/></param>
            <param name="phKey">Receives a handle to the generated key pair.</param>
            <param name="dwLength">The length of the key, in bits.</param>
            <param name="dwFlags">A set of flags that modify the behavior of this function. No flags are currently defined, so this parameter should be zero.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
            <remarks>
            After you create a key by using this function, you can use the BCryptSetProperty
            function to set its properties; however, the key cannot be used until the
            BCryptFinalizeKeyPair function is called.
            </remarks>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,PInvoke.BCrypt.SafeKeyHandle@,System.Byte[],System.Int32,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)">
            <summary>
            Creates a key object for use with a symmetrical key encryption algorithm from a supplied key.
            </summary>
            <param name="hAlgorithm">
            The handle of an algorithm provider created with the <see cref="M:PInvoke.BCrypt.BCryptOpenAlgorithmProvider(System.String,System.String,PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags)"/> function. The algorithm specified when the provider was created must support symmetric key encryption.
            </param>
            <param name="phKey">
            Receives the <see cref="T:PInvoke.BCrypt.SafeKeyHandle"/> of the generated key.
            </param>
            <param name="pbKeyObject">
            A pointer to a buffer that receives the key object. The <paramref name="cbKeyObject"/> parameter contains the size of this buffer. The required size of this buffer can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the BCRYPT_OBJECT_LENGTH property. This will provide the size of the key object for the specified algorithm.
            This memory can only be freed after the <paramref name="phKey"/> key handle is destroyed.
            If the value of this parameter is NULL and the value of the <paramref name="cbKeyObject"/> parameter is zero, the memory for the key object is allocated and freed by this function.
            </param>
            <param name="cbKeyObject">
            The size, in bytes, of the <paramref name="pbKeyObject"/> buffer.
            If the value of this parameter is zero and the value of the <paramref name="pbKeyObject"/> parameter is NULL, the memory for the key object is allocated and freed by this function.
            </param>
            <param name="pbSecret">
            Pointer to a buffer that contains the key from which to create the key object. The <paramref name="cbSecret"/> parameter contains the size of this buffer. This is normally a hash of a password or some other reproducible data. If the data passed in exceeds the target key size, the data will be truncated and the excess will be ignored.
            Note: We strongly recommended that applications pass in the exact number of bytes required by the target key.
            </param>
            <param name="cbSecret">
            The size, in bytes, of the <paramref name="pbSecret"/> buffer.
            </param>
            <param name="flags">A set of flags that modify the behavior of this function. No flags are currently defined, so this parameter should be zero.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptFinalizeKeyPair(PInvoke.BCrypt.SafeKeyHandle,PInvoke.BCrypt.BCryptFinalizeKeyPairFlags)">
            <summary>
            Completes a public/private key pair.
            </summary>
            <param name="hKey">The handle of the key to complete. This handle is obtained by calling the BCryptGenerateKeyPair function.</param>
            <param name="dwFlags">A set of flags that modify the behavior of this function. No flags are currently defined, so this parameter should be zero.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
            <remarks>
            The key cannot be used until this function has been called.
            After this function has been called, the BCryptSetProperty function
            can no longer be used for this key.
            </remarks>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,PInvoke.BCrypt.SafeKeyHandle,System.String,PInvoke.BCrypt.SafeKeyHandle@,System.Byte[],System.Int32,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptImportKeyFlags)">
            <summary>
            Imports a symmetric key from a key BLOB. The BCryptImportKeyPair function is used to import a public/private key pair.
            </summary>
            <param name="hAlgorithm">
            The handle of the algorithm provider to import the key. This handle is obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptOpenAlgorithmProvider(System.String,System.String,PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags)"/> function.
            </param>
            <param name="hImportKey">
            The handle of the key encryption key needed to unwrap the key BLOB in the pbInput parameter.
            Note The handle must be supplied by the same provider that supplied the key that is being imported.
            </param>
            <param name="pszBlobType">
            An identifier that specifies the type of BLOB that is contained in the pbInput buffer.
            This can be one of the values defined in <see cref="T:PInvoke.BCrypt.SymmetricKeyBlobTypes"/>.
            </param>
            <param name="phKey">
            A pointer to a BCRYPT_KEY_HANDLE that receives the handle of the imported key. This handle is used in subsequent functions that require a key, such as BCryptEncrypt. This handle must be released when it is no longer needed by passing it to the <see cref="M:PInvoke.BCrypt.BCryptDestroyKey(System.IntPtr)"/> function.
            </param>
            <param name="pbKeyObject">
            A pointer to a buffer that receives the imported key object.
            The <paramref name="cbKeyObject"/> parameter contains the size of this buffer.
            The required size of this buffer can be obtained by calling the <see cref="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/>
            function to get the <see cref="F:PInvoke.BCrypt.PropertyNames.BCRYPT_OBJECT_LENGTH"/> property. This will provide the size of the
            key object for the specified algorithm.
            This memory can only be freed after the phKey key handle is destroyed.
            </param>
            <param name="cbKeyObject">The size, in bytes, of the <paramref name="pbKeyObject"/> buffer.</param>
            <param name="pbInput">
            The address of a buffer that contains the key BLOB to import.
            The <paramref name="cbInput"/> parameter contains the size of this buffer.
            The <paramref name="pszBlobType"/> parameter specifies the type of key BLOB this buffer contains.
            </param>
            <param name="cbInput">
            The size, in bytes, of the <paramref name="pbInput" /> buffer.
            </param>
            <param name="dwFlags">A set of flags that modify the behavior of this function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptImportKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,PInvoke.BCrypt.SafeKeyHandle,System.String,PInvoke.BCrypt.SafeKeyHandle@,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptImportKeyPairFlags)">
            <summary>
            Imports a public/private key pair from a key BLOB.
            </summary>
            <param name="hAlgorithm">The handle of the algorithm provider to import the key. This handle is obtained by calling the BCryptOpenAlgorithmProvider function.</param>
            <param name="hImportKey">This parameter is not currently used and should be NULL.</param>
            <param name="pszBlobType">An identifier that specifies the type of BLOB that is contained in the <paramref name="pbInput"/> buffer. Supported formats are defined in <see cref="T:PInvoke.BCrypt.AsymmetricKeyBlobTypes"/>.</param>
            <param name="phKey">A pointer to a BCRYPT_KEY_HANDLE that receives the handle of the imported key. This handle is used in subsequent functions that require a key, such as BCryptSignHash. This handle must be released when it is no longer needed by passing it to the <see cref="M:PInvoke.BCrypt.BCryptDestroyKey(System.IntPtr)"/> function.</param>
            <param name="pbInput">The address of a buffer that contains the key BLOB to import. The <paramref name="cbInput"/> parameter contains the size of this buffer. The <paramref name="pszBlobType"/> parameter specifies the type of key BLOB this buffer contains.</param>
            <param name="cbInput">The size, in bytes, of the <paramref name="pbInput"/> buffer.</param>
            <param name="dwFlags">A set of flags that modify the behavior of this function. This can be zero or the following value: BCRYPT_NO_KEY_VALIDATION</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptExportKey(PInvoke.BCrypt.SafeKeyHandle,PInvoke.BCrypt.SafeKeyHandle,System.String,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptExportKeyFlags)">
            <summary>
            Exports a key to a memory BLOB that can be persisted for later use.
            </summary>
            <param name="hKey">The handle of the key to export.</param>
            <param name="hExportKey">
            The handle of the key with which to wrap the exported key. Use this parameter when exporting BLOBs of type BCRYPT_AES_WRAP_KEY_BLOB; otherwise, set it to NULL.
            Note: The <paramref name="hExportKey"/> handle must be supplied by the same provider that supplied the hKey handle, and hExportKey must be a handle to a symmetric key that can be used in the Advanced Encryption Standard(AES) key wrap algorithm.When the hKey handle is from the Microsoft provider, hExportKey must be an AES key handle.
            </param>
            <param name="pszBlobType">
            An identifier that specifies the type of BLOB to export. This can be one of the values
            defined in the <see cref="T:PInvoke.BCrypt.AsymmetricKeyBlobTypes"/> or <see cref="T:PInvoke.BCrypt.SymmetricKeyBlobTypes"/> classes.
            </param>
            <param name="pbOutput">
            The address of a buffer that receives the key BLOB.
            The <paramref name="cbOutput"/> parameter contains the size of this buffer.
            If this parameter is NULL, this function will place the required size, in bytes, in the ULONG pointed to by the <paramref name="pcbResult"/> parameter.
            </param>
            <param name="cbOutput">
            Contains the size, in bytes, of the <paramref name="pbOutput"/> buffer.
            </param>
            <param name="pcbResult">
            A pointer to a ULONG that receives the number of bytes that were copied to the <paramref name="pbOutput"/> buffer.
            If the pbOutput parameter is NULL, this function will place the required size, in bytes,
            in the ULONG pointed to by this parameter.
            </param>
            <param name="dwFlags">A set of flags that modify the behavior of this function. </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptSecretAgreement(PInvoke.BCrypt.SafeKeyHandle,PInvoke.BCrypt.SafeKeyHandle,PInvoke.BCrypt.SafeSecretHandle@,PInvoke.BCrypt.BCryptSecretAgreementFlags)">
            <summary>
            Creates a secret agreement value from a private and a public key.
            </summary>
            <param name="privateKey">
            The handle of the private key to use to create the secret agreement value.
            This key and the hPubKey key must come from the same CNG cryptographic algorithm provider.
            </param>
            <param name="publicKey">
            The handle of the public key to use to create the secret agreement value.
            This key and the hPrivKey key must come from the same CNG cryptographic algorithm provider.
            </param>
            <param name="secret">
            A pointer to a BCRYPT_SECRET_HANDLE that receives a handle that represents the
            secret agreement value. This handle must be released by passing it to the
            BCryptDestroySecret function when it is no longer needed.
            </param>
            <param name="flags">A set of flags that modify the behavior of this function. No flags are defined for this function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptDeriveKey(PInvoke.BCrypt.SafeSecretHandle,System.String,PInvoke.BCrypt.BCryptBufferDesc@,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptDeriveKeyFlags)">
            <summary>
            Derives a key from a secret agreement value.
            </summary>
            <param name="sharedSecret">
            The secret agreement handle to create the key from.
            This handle is obtained from the BCryptSecretAgreement function.
            </param>
            <param name="keyDerivationFunction">
            The key derivation function.
            May come from the constants defined on the <see cref="T:PInvoke.BCrypt.KeyDerivationFunctions"/> class.
            </param>
            <param name="kdfParameters">
            The address of a BCryptBufferDesc structure that contains the KDF parameters.
            This parameter is optional and can be NULL if it is not needed.
            </param>
            <param name="derivedKey">
            The address of a buffer that receives the key. The cbDerivedKey parameter contains
            the size of this buffer. If this parameter is NULL, this function will place the
            required size, in bytes, in the ULONG pointed to by the pcbResult parameter.
            </param>
            <param name="derivedKeySize">
            The size, in bytes, of the pbDerivedKey buffer.
            </param>
            <param name="resultSize">
            A pointer to a ULONG that receives the number of bytes that were copied to the
            pbDerivedKey buffer. If the pbDerivedKey parameter is NULL, this function will
            place the required size, in bytes, in the ULONG pointed to by this parameter.
            </param>
            <param name="flags">
            A set of flags that modify the behavior of this function.
            This can be zero or the following value.
            </param>
            <returns>
            Returns a status code that indicates the success or failure of the function.
            </returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptSetProperty(System.Runtime.InteropServices.SafeHandle,System.String,System.Byte*,System.Int32,PInvoke.BCrypt.BCryptSetPropertyFlags)">
            <summary>
            Sets the value of a named property for a CNG object.
            </summary>
            <param name="hObject">A handle that represents the CNG object to set the property value for.</param>
            <param name="pszProperty">
            A pointer to a null-terminated Unicode string that contains the name of the property to set. This can be one of the predefined <see cref="T:PInvoke.BCrypt.PropertyNames"/> or a custom property identifier.
            </param>
            <param name="pbInput">The address of a buffer that contains the new property value. The <paramref name="cbInput"/> parameter contains the size of this buffer.</param>
            <param name="cbInput">The size, in bytes, of the <paramref name="pbInput"/> buffer.</param>
            <param name="dwFlags">A set of flags that modify the behavior of this function. No flags are defined for this function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptSetProperty(System.Runtime.InteropServices.SafeHandle,System.String,System.String,System.Int32,PInvoke.BCrypt.BCryptSetPropertyFlags)">
            <summary>
            Sets the value of a named property for a CNG object.
            </summary>
            <param name="hObject">A handle that represents the CNG object to set the property value for.</param>
            <param name="pszProperty">
            The name of the property to set. This can be one of the predefined <see cref="T:PInvoke.BCrypt.PropertyNames"/> or a custom property identifier.
            </param>
            <param name="pbInput">The new property value. The <paramref name="cbInput"/> parameter contains the size of this buffer.</param>
            <param name="cbInput">The size, in bytes, of the <paramref name="pbInput"/> buffer.</param>
            <param name="dwFlags">A set of flags that modify the behavior of this function. No flags are defined for this function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptGetPropertyFlags)">
            <summary>
            Retrieves the value of a named property for a CNG object.
            </summary>
            <param name="hObject">A handle that represents the CNG object to obtain the property value for.</param>
            <param name="property">A pointer to a null-terminated Unicode string that contains the name of the property to retrieve. This can be one of the predefined <see cref="T:PInvoke.BCrypt.PropertyNames"/> or a custom property identifier.</param>
            <param name="output">The address of a buffer that receives the property value. The <paramref name="outputSize"/> parameter contains the size of this buffer.</param>
            <param name="outputSize">The size, in bytes, of the <paramref name="output"/> buffer.</param>
            <param name="resultSize">A pointer to a ULONG variable that receives the number of bytes that were copied to the pbOutput buffer. If the <paramref name="output"/> parameter is NULL, this function will place the required size, in bytes, in the location pointed to by this parameter.</param>
            <param name="flags">A set of flags that modify the behavior of this function. No flags are defined for this function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptGenRandom(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptGenRandomFlags)">
            <summary>
            Generates a random number.
            </summary>
            <param name="hAlgorithm">
            The handle of an algorithm provider created by using the <see cref="M:PInvoke.BCrypt.BCryptOpenAlgorithmProvider(System.String,System.String,PInvoke.BCrypt.BCryptOpenAlgorithmProviderFlags)"/> function. The algorithm that was specified when the provider was created must support the random number generator interface.
            </param>
            <param name="pbBuffer">
            The address of a buffer that receives the random number. The size of this buffer is specified by the <paramref name="cbBuffer"/> parameter.
            </param>
            <param name="cbBuffer">
            The size, in bytes, of the <paramref name="pbBuffer" /> buffer.
            </param>
            <param name="flags">A set of flags that modify the behavior of this function. </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptFreeBuffer(System.Void*)">
            <summary>
            The BCryptFreeBuffer function is used to free memory that was allocated by one of the CNG functions.
            </summary>
            <param name="pvBuffer">A pointer to the memory buffer to be freed.</param>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptCloseAlgorithmProvider(System.IntPtr,PInvoke.BCrypt.BCryptCloseAlgorithmProviderFlags)">
            <summary>
            Closes an algorithm provider.
            </summary>
            <param name="algorithmHandle">A handle that represents the algorithm provider to close. This handle is obtained by calling the BCryptOpenAlgorithmProvider function.</param>
            <param name="flags">A set of flags that modify the behavior of this function. No flags are defined for this function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptDestroyHash(System.IntPtr)">
            <summary>
            Destroys a hash or Message Authentication Code (MAC) object.
            </summary>
            <param name="hHash">The handle of the hash or MAC object to destroy. This handle is obtained by using the <see cref="M:PInvoke.BCrypt.BCryptCreateHash(PInvoke.BCrypt.SafeAlgorithmHandle,PInvoke.BCrypt.SafeHashHandle@,System.Byte[],System.Int32,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptCreateHashFlags)"/> function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptDestroyKey(System.IntPtr)">
            <summary>
            Destroys a key.
            </summary>
            <param name="hKey">The handle of the key to destroy.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptDestroySecret(System.IntPtr)">
            <summary>
            Destroys a secret agreement handle that was created by using the BCryptSecretAgreement function.
            </summary>
            <param name="hSecret">The handle of the secret to destroy.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.IntPtr,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Encrypts a block of data.
            </summary>
            <param name = "hKey">
            The handle of the key to use to encrypt the data. This handle is obtained from one of the key creation functions, such as <see cref = "M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref = "M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref = "M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name = "pbInput">
            The address of a buffer that contains the plaintext to be encrypted. The cbInput parameter contains the size of the plaintext to encrypt.
            </param>
            <param name = "pPaddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the dwFlags parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name = "pbIV">
            The address of a buffer that contains the initialization vector (IV) to use during encryption. The cbIV parameter contains the size of this buffer. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref = "M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the BCRYPT_BLOCK_LENGTH property.This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name = "dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the hKey parameter.
            </param>
            <returns>The encrypted ciphertext.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Nullable{System.ArraySegment{System.Byte}},System.IntPtr,System.Nullable{System.ArraySegment{System.Byte}},System.Nullable{System.ArraySegment{System.Byte}},System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Encrypts a block of data.
            </summary>
            <param name = "key">
            The handle of the key to use to encrypt the data. This handle is obtained from one of the key creation functions, such as <see cref = "M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref = "M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref = "M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name = "input">
            The address of a buffer that contains the plaintext to be encrypted. The cbInput parameter contains the size of the plaintext to encrypt.
            </param>
            <param name = "paddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the dwFlags parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name = "iv">
            The address of a buffer that contains the initialization vector (IV) to use during encryption. The cbIV parameter contains the size of this buffer. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref = "M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the BCRYPT_BLOCK_LENGTH property.This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name = "output">
            The address of the buffer that receives the ciphertext produced by this function. For more information, see Remarks.
            If this parameter is NULL, the <see cref = "M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> function calculates the size needed for the ciphertext of the data passed in the <paramref name = "input"/> parameter. In this case, the location pointed to by the <paramref name = "outputLength"/> parameter contains this size, and the function returns <see cref = "F:PInvoke.NTSTATUS.Code.STATUS_SUCCESS"/>.The <paramref name = "paddingInfo"/> parameter is not modified.
            If the values of both the <paramref name = "output"/> and <paramref name = "input"/> parameters are NULL, an error is returned unless an authenticated encryption algorithm is in use.In the latter case, the call is treated as an authenticated encryption call with zero length data, and the authentication tag is returned in the <paramref name = "paddingInfo"/> parameter.
            </param>
            <param name = "outputLength">
            Receives the number of bytes copied to the <paramref name = "output"/> buffer. If <paramref name = "output"/> is NULL, this receives the size, in bytes, required for the ciphertext.
            </param>
            <param name = "flags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the hKey parameter.
            </param>
            <returns>The encrypted ciphertext.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.IntPtr,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Decrypts a block of data.
            </summary>
            <param name = "hKey">
            The handle of the key to use to decrypt the data. This handle is obtained from one of the key creation functions, such as <see cref = "M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref = "M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref = "M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name = "pbInput">
            The address of a buffer that contains the ciphertext to be decrypted. For more information, see Remarks.
            </param>
            <param name = "pPaddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the <paramref name = "dwFlags"/> parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name = "pbIV">
            The address of a buffer that contains the initialization vector (IV) to use during decryption. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref = "M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the <see cref = "F:PInvoke.BCrypt.PropertyNames.BCRYPT_BLOCK_LENGTH"/> property. This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name = "dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the <paramref name = "hKey"/> parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Nullable{System.ArraySegment{System.Byte}},System.IntPtr,System.Nullable{System.ArraySegment{System.Byte}},System.Nullable{System.ArraySegment{System.Byte}},System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Decrypts a block of data.
            </summary>
            <param name = "key">
            The handle of the key to use to decrypt the data. This handle is obtained from one of the key creation functions, such as <see cref = "M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref = "M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref = "M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name = "input">
            The address of a buffer that contains the ciphertext to be decrypted. For more information, see Remarks.
            </param>
            <param name = "paddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the <paramref name = "flags"/> parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name = "iv">
            The address of a buffer that contains the initialization vector (IV) to use during decryption. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref = "M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the <see cref = "F:PInvoke.BCrypt.PropertyNames.BCRYPT_BLOCK_LENGTH"/> property. This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name = "output">
            The address of a buffer to receive the plaintext produced by this function. The cbOutput parameter contains the size of this buffer. For more information, see Remarks.
            If this parameter is NULL, the <see cref = "M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> function calculates the size required for the plaintext of the encrypted data passed in the <paramref name = "input"/> parameter.In this case, the location pointed to by the <paramref name = "outputLength"/> parameter contains this size, and the function returns <see cref = "F:PInvoke.NTSTATUS.Code.STATUS_SUCCESS"/>.
            If the values of both the <paramref name = "output"/> and <paramref name = "input"/> parameters are NULL, an error is returned unless an authenticated encryption algorithm is in use.In the latter case, the call is treated as an authenticated encryption call with zero length data, and the authentication tag, passed in the <paramref name = "paddingInfo"/> parameter, is verified.
            </param>
            <param name = "outputLength">
            A pointer to a ULONG variable to receive the number of bytes copied to the <paramref name = "output"/> buffer. If <paramref name = "output"/> is NULL, this receives the size, in bytes, required for the plaintext.
            </param>
            <param name = "flags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the <paramref name = "key"/> parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.IntPtr,PInvoke.BCrypt.BCryptSignHashFlags)">
            <summary>
            Creates a signature of a hash value.
            </summary>
            <param name = "key">The handle of the key to use to sign the hash.</param>
            <param name = "hash">
            A pointer to a buffer that contains the hash value to sign.
            </param>
            <param name = "paddingInfo">
            A pointer to a structure that contains padding information. The actual type of structure this parameter points to depends on the value of the <paramref name = "flags"/> parameter. This parameter is only used with asymmetric keys and must be NULL otherwise.
            </param>
            <param name = "flags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the <paramref name = "key"/> parameter.
            </param>
            <returns>
            The signature produced by this function.
            </returns>
            <remarks>
            To later verify that the signature is valid, call the <see cref = "M:PInvoke.BCrypt.BCryptVerifySignature(PInvoke.BCrypt.SafeKeyHandle,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptSignHashFlags)"/> function with an identical key and an identical hash of the original data.
            </remarks>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptVerifySignature(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Byte[],System.IntPtr,PInvoke.BCrypt.BCryptSignHashFlags)">
            <summary>
            Verifies that the specified signature matches the specified hash.
            </summary>
            <param name = "key">
            The handle of the key to use to decrypt the signature. This must be an identical key or the public key portion of the key pair used to sign the data with the <see cref = "M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)"/> function.
            </param>
            <param name = "hash">
            The address of a buffer that contains the hash of the data.
            </param>
            <param name = "signature">
            The address of a buffer that contains the signed hash of the data. The <see cref = "M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)"/> function is used to create the signature.
            </param>
            <param name = "paddingInfo">
            A pointer to a structure that contains padding information. The actual type of structure this parameter points to depends on the value of the <paramref name = "flags"/> parameter. This parameter is only used with asymmetric keys and must be NULL otherwise.
            </param>
            <param name = "flags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the hKey parameter.
            If the key is a symmetric key, this parameter is not used and should be zero.
            If the key is an asymmetric key, this can be one of the following values.
            </param>
            <returns>
            <c>true</c> if the signature is valid; <c>false</c> otherwise.
            </returns>
            <exception cref = "T:PInvoke.Win32Exception">Thrown when any error occurs other than an invalid signature.</exception>
        </member>
        <member name="M:PInvoke.BCrypt.ArrayOrOriginalNull(System.ArraySegment{System.Byte},System.IntPtr)">
            <summary>
            Returns the specified <paramref name = "pointer"/>,
            or null if <paramref name = "buffer"/> was null before a call to
            <see cref = "M:PInvoke.BCrypt.EnsureNotNullOrEmpty(System.ArraySegment{System.Byte}@)"/>.
            </summary>
            <param name = "buffer">The buffer which may have originally been null.</param>
            <param name = "pointer">The pointer to some element in the buffer.</param>
            <returns>The <paramref name = "pointer"/> or <c>null</c>.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.ArrayOrOriginalNull(System.ArraySegment{System.Byte},System.Byte[])">
            <summary>
            Returns the specified <paramref name = "pointer"/>,
            or null if <paramref name = "buffer"/> was null before a call to
            <see cref = "M:PInvoke.BCrypt.EnsureNotNullOrEmpty(System.ArraySegment{System.Byte}@)"/>.
            </summary>
            <param name = "buffer">The buffer which may have originally been null.</param>
            <param name = "pointer">The pointer to some element in the buffer.</param>
            <returns>The <paramref name = "pointer"/> or <c>null</c>.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptEnumAlgorithms(PInvoke.BCrypt.AlgorithmOperations,System.Int32@,System.IntPtr@,PInvoke.BCrypt.BCryptEnumAlgorithmsFlags)">
            <summary>
            The BCryptEnumAlgorithms function gets a list of the registered algorithm identifiers.
            </summary>
            <param name = "dwAlgOperations">A value that specifies the algorithm operation types to include in the enumeration.</param>
            <param name = "pAlgCount">A pointer to a ULONG variable to receive the number of elements in the <paramref name = "ppAlgList"/> array.</param>
            <param name = "ppAlgList">
            The address of a <see cref = "T:PInvoke.BCrypt.BCRYPT_ALGORITHM_IDENTIFIER"/> structure pointer to receive the array of registered algorithm identifiers. This pointer must be passed to the <see cref = "M:PInvoke.BCrypt.BCryptFreeBuffer(System.Void*)"/> function when it is no longer needed.
            </param>
            <param name = "dwFlags">A set of flags that modify the behavior of this function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.IntPtr,System.Int32,System.IntPtr,System.IntPtr,System.Int32,System.IntPtr,System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Encrypts a block of data.
            </summary>
            <param name = "hKey">
            The handle of the key to use to encrypt the data. This handle is obtained from one of the key creation functions, such as <see cref = "M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref = "M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref = "M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name = "pbInput">
            The address of a buffer that contains the plaintext to be encrypted. The cbInput parameter contains the size of the plaintext to encrypt.
            </param>
            <param name = "cbInput">
            The number of bytes in the pbInput buffer to encrypt.
            </param>
            <param name = "pPaddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the dwFlags parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name = "pbIV">
            The address of a buffer that contains the initialization vector (IV) to use during encryption. The cbIV parameter contains the size of this buffer. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref = "M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the BCRYPT_BLOCK_LENGTH property.This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name = "cbIV">The size, in bytes, of the pbIV buffer.</param>
            <param name = "pbOutput">
            The address of the buffer that receives the ciphertext produced by this function. The <paramref name = "cbOutput"/> parameter contains the size of this buffer. For more information, see Remarks.
            If this parameter is NULL, the <see cref = "M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> function calculates the size needed for the ciphertext of the data passed in the <paramref name = "pbInput"/> parameter. In this case, the location pointed to by the <paramref name = "pcbResult"/> parameter contains this size, and the function returns <see cref = "F:PInvoke.NTSTATUS.Code.STATUS_SUCCESS"/>.The <paramref name = "pPaddingInfo"/> parameter is not modified.
            If the values of both the <paramref name = "pbOutput"/> and <paramref name = "pbInput"/> parameters are NULL, an error is returned unless an authenticated encryption algorithm is in use.In the latter case, the call is treated as an authenticated encryption call with zero length data, and the authentication tag is returned in the <paramref name = "pPaddingInfo"/> parameter.
            </param>
            <param name = "cbOutput">
            The size, in bytes, of the <paramref name = "pbOutput"/> buffer. This parameter is ignored if the <paramref name = "pbOutput"/> parameter is NULL.
            </param>
            <param name = "pcbResult">
            A pointer to a ULONG variable that receives the number of bytes copied to the <paramref name = "pbOutput"/> buffer. If <paramref name = "pbOutput"/> is NULL, this receives the size, in bytes, required for the ciphertext.
            </param>
            <param name = "dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the hKey parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
            <remarks>
            The <paramref name = "pbInput"/> and <paramref name = "pbOutput"/> parameters can point to the same buffer. In this case, this function will perform the encryption in place. It is possible that the encrypted data size will be larger than the unencrypted data size, so the buffer must be large enough to hold the encrypted data.
            </remarks>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.IntPtr,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Encrypts a block of data.
            </summary>
            <param name = "hKey">
            The handle of the key to use to encrypt the data. This handle is obtained from one of the key creation functions, such as <see cref = "M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref = "M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref = "M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name = "pbInput">
            The address of a buffer that contains the plaintext to be encrypted. The cbInput parameter contains the size of the plaintext to encrypt.
            </param>
            <param name = "cbInput">
            The number of bytes in the pbInput buffer to encrypt.
            </param>
            <param name = "pPaddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the dwFlags parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name = "pbIV">
            The address of a buffer that contains the initialization vector (IV) to use during encryption. The cbIV parameter contains the size of this buffer. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref = "M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the BCRYPT_BLOCK_LENGTH property.This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name = "cbIV">The size, in bytes, of the pbIV buffer.</param>
            <param name = "pbOutput">
            The address of the buffer that receives the ciphertext produced by this function. The <paramref name = "cbOutput"/> parameter contains the size of this buffer. For more information, see Remarks.
            If this parameter is NULL, the <see cref = "M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> function calculates the size needed for the ciphertext of the data passed in the <paramref name = "pbInput"/> parameter. In this case, the location pointed to by the <paramref name = "pcbResult"/> parameter contains this size, and the function returns <see cref = "F:PInvoke.NTSTATUS.Code.STATUS_SUCCESS"/>.The <paramref name = "pPaddingInfo"/> parameter is not modified.
            If the values of both the <paramref name = "pbOutput"/> and <paramref name = "pbInput"/> parameters are NULL, an error is returned unless an authenticated encryption algorithm is in use.In the latter case, the call is treated as an authenticated encryption call with zero length data, and the authentication tag is returned in the <paramref name = "pPaddingInfo"/> parameter.
            </param>
            <param name = "cbOutput">
            The size, in bytes, of the <paramref name = "pbOutput"/> buffer. This parameter is ignored if the <paramref name = "pbOutput"/> parameter is NULL.
            </param>
            <param name = "pcbResult">
            A pointer to a ULONG variable that receives the number of bytes copied to the <paramref name = "pbOutput"/> buffer. If <paramref name = "pbOutput"/> is NULL, this receives the size, in bytes, required for the ciphertext.
            </param>
            <param name = "dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the hKey parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
            <remarks>
            The <paramref name = "pbInput"/> and <paramref name = "pbOutput"/> parameters can point to the same buffer. In this case, this function will perform the encryption in place. It is possible that the encrypted data size will be larger than the unencrypted data size, so the buffer must be large enough to hold the encrypted data.
            </remarks>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Encrypts a block of data.
            </summary>
            <param name = "hKey">
            The handle of the key to use to encrypt the data. This handle is obtained from one of the key creation functions, such as <see cref = "M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref = "M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref = "M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name = "pbInput">
            The address of a buffer that contains the plaintext to be encrypted. The cbInput parameter contains the size of the plaintext to encrypt.
            </param>
            <param name = "cbInput">
            The number of bytes in the pbInput buffer to encrypt.
            </param>
            <param name = "pPaddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the dwFlags parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name = "pbIV">
            The address of a buffer that contains the initialization vector (IV) to use during encryption. The cbIV parameter contains the size of this buffer. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref = "M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the BCRYPT_BLOCK_LENGTH property.This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name = "cbIV">The size, in bytes, of the pbIV buffer.</param>
            <param name = "pbOutput">
            The address of the buffer that receives the ciphertext produced by this function. The <paramref name = "cbOutput"/> parameter contains the size of this buffer. For more information, see Remarks.
            If this parameter is NULL, the <see cref = "M:PInvoke.BCrypt.BCryptEncrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> function calculates the size needed for the ciphertext of the data passed in the <paramref name = "pbInput"/> parameter. In this case, the location pointed to by the <paramref name = "pcbResult"/> parameter contains this size, and the function returns <see cref = "F:PInvoke.NTSTATUS.Code.STATUS_SUCCESS"/>.The <paramref name = "pPaddingInfo"/> parameter is not modified.
            If the values of both the <paramref name = "pbOutput"/> and <paramref name = "pbInput"/> parameters are NULL, an error is returned unless an authenticated encryption algorithm is in use.In the latter case, the call is treated as an authenticated encryption call with zero length data, and the authentication tag is returned in the <paramref name = "pPaddingInfo"/> parameter.
            </param>
            <param name = "cbOutput">
            The size, in bytes, of the <paramref name = "pbOutput"/> buffer. This parameter is ignored if the <paramref name = "pbOutput"/> parameter is NULL.
            </param>
            <param name = "pcbResult">
            A pointer to a ULONG variable that receives the number of bytes copied to the <paramref name = "pbOutput"/> buffer. If <paramref name = "pbOutput"/> is NULL, this receives the size, in bytes, required for the ciphertext.
            </param>
            <param name = "dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the hKey parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
            <remarks>
            The <paramref name = "pbInput"/> and <paramref name = "pbOutput"/> parameters can point to the same buffer. In this case, this function will perform the encryption in place. It is possible that the encrypted data size will be larger than the unencrypted data size, so the buffer must be large enough to hold the encrypted data.
            </remarks>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.IntPtr,System.Int32,System.IntPtr,System.IntPtr,System.Int32,System.IntPtr,System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Decrypts a block of data.
            </summary>
            <param name = "hKey">
            The handle of the key to use to decrypt the data. This handle is obtained from one of the key creation functions, such as <see cref = "M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref = "M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref = "M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name = "pbInput">
            The address of a buffer that contains the ciphertext to be decrypted. The <paramref name = "cbInput"/> parameter contains the size of the ciphertext to decrypt. For more information, see Remarks.
            </param>
            <param name = "cbInput">
            The number of bytes in the <paramref name = "pbInput"/> buffer to decrypt.
            </param>
            <param name = "pPaddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the <paramref name = "dwFlags"/> parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name = "pbIV">
            The address of a buffer that contains the initialization vector (IV) to use during decryption. The <paramref name = "cbIV"/> parameter contains the size of this buffer. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref = "M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the <see cref = "F:PInvoke.BCrypt.PropertyNames.BCRYPT_BLOCK_LENGTH"/> property. This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name = "cbIV">
            The size, in bytes, of the <paramref name = "pbIV"/> buffer.
            </param>
            <param name = "pbOutput">
            The address of a buffer to receive the plaintext produced by this function. The cbOutput parameter contains the size of this buffer. For more information, see Remarks.
            If this parameter is NULL, the <see cref = "M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> function calculates the size required for the plaintext of the encrypted data passed in the <paramref name = "pbInput"/> parameter.In this case, the location pointed to by the <paramref name = "pcbResult"/> parameter contains this size, and the function returns <see cref = "F:PInvoke.NTSTATUS.Code.STATUS_SUCCESS"/>.
            If the values of both the <paramref name = "pbOutput"/> and <paramref name = "pbInput"/> parameters are NULL, an error is returned unless an authenticated encryption algorithm is in use.In the latter case, the call is treated as an authenticated encryption call with zero length data, and the authentication tag, passed in the <paramref name = "pPaddingInfo"/> parameter, is verified.
            </param>
            <param name = "cbOutput">
            The size, in bytes, of the <paramref name = "pbOutput"/> buffer. This parameter is ignored if the <paramref name = "pbOutput"/> parameter is NULL.
            </param>
            <param name = "pcbResult">
            A pointer to a ULONG variable to receive the number of bytes copied to the <paramref name = "pbOutput"/> buffer. If <paramref name = "pbOutput"/> is NULL, this receives the size, in bytes, required for the plaintext.
            </param>
            <param name = "dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the <paramref name = "hKey"/> parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.IntPtr,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Decrypts a block of data.
            </summary>
            <param name = "hKey">
            The handle of the key to use to decrypt the data. This handle is obtained from one of the key creation functions, such as <see cref = "M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref = "M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref = "M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name = "pbInput">
            The address of a buffer that contains the ciphertext to be decrypted. The <paramref name = "cbInput"/> parameter contains the size of the ciphertext to decrypt. For more information, see Remarks.
            </param>
            <param name = "cbInput">
            The number of bytes in the <paramref name = "pbInput"/> buffer to decrypt.
            </param>
            <param name = "pPaddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the <paramref name = "dwFlags"/> parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name = "pbIV">
            The address of a buffer that contains the initialization vector (IV) to use during decryption. The <paramref name = "cbIV"/> parameter contains the size of this buffer. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref = "M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the <see cref = "F:PInvoke.BCrypt.PropertyNames.BCRYPT_BLOCK_LENGTH"/> property. This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name = "cbIV">
            The size, in bytes, of the <paramref name = "pbIV"/> buffer.
            </param>
            <param name = "pbOutput">
            The address of a buffer to receive the plaintext produced by this function. The cbOutput parameter contains the size of this buffer. For more information, see Remarks.
            If this parameter is NULL, the <see cref = "M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> function calculates the size required for the plaintext of the encrypted data passed in the <paramref name = "pbInput"/> parameter.In this case, the location pointed to by the <paramref name = "pcbResult"/> parameter contains this size, and the function returns <see cref = "F:PInvoke.NTSTATUS.Code.STATUS_SUCCESS"/>.
            If the values of both the <paramref name = "pbOutput"/> and <paramref name = "pbInput"/> parameters are NULL, an error is returned unless an authenticated encryption algorithm is in use.In the latter case, the call is treated as an authenticated encryption call with zero length data, and the authentication tag, passed in the <paramref name = "pPaddingInfo"/> parameter, is verified.
            </param>
            <param name = "cbOutput">
            The size, in bytes, of the <paramref name = "pbOutput"/> buffer. This parameter is ignored if the <paramref name = "pbOutput"/> parameter is NULL.
            </param>
            <param name = "pcbResult">
            A pointer to a ULONG variable to receive the number of bytes copied to the <paramref name = "pbOutput"/> buffer. If <paramref name = "pbOutput"/> is NULL, this receives the size, in bytes, required for the plaintext.
            </param>
            <param name = "dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the <paramref name = "hKey"/> parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Int32,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptEncryptFlags)">
            <summary>
            Decrypts a block of data.
            </summary>
            <param name = "hKey">
            The handle of the key to use to decrypt the data. This handle is obtained from one of the key creation functions, such as <see cref = "M:PInvoke.BCrypt.BCryptGenerateSymmetricKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.Byte[],System.Byte[],PInvoke.BCrypt.BCryptGenerateSymmetricKeyFlags)"/>, <see cref = "M:PInvoke.BCrypt.BCryptGenerateKeyPair(PInvoke.BCrypt.SafeAlgorithmHandle,System.Int32)"/>, or <see cref = "M:PInvoke.BCrypt.BCryptImportKey(PInvoke.BCrypt.SafeAlgorithmHandle,System.String,System.Byte[],PInvoke.BCrypt.SafeKeyHandle,System.Byte[],PInvoke.BCrypt.BCryptImportKeyFlags)"/>.
            </param>
            <param name = "pbInput">
            The address of a buffer that contains the ciphertext to be decrypted. The <paramref name = "cbInput"/> parameter contains the size of the ciphertext to decrypt. For more information, see Remarks.
            </param>
            <param name = "cbInput">
            The number of bytes in the <paramref name = "pbInput"/> buffer to decrypt.
            </param>
            <param name = "pPaddingInfo">
            A pointer to a structure that contains padding information. This parameter is only used with asymmetric keys and authenticated encryption modes. If an authenticated encryption mode is used, this parameter must point to a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure. If asymmetric keys are used, the type of structure this parameter points to is determined by the value of the <paramref name = "dwFlags"/> parameter. Otherwise, the parameter must be set to NULL.
            </param>
            <param name = "pbIV">
            The address of a buffer that contains the initialization vector (IV) to use during decryption. The <paramref name = "cbIV"/> parameter contains the size of this buffer. This function will modify the contents of this buffer. If you need to reuse the IV later, make sure you make a copy of this buffer before calling this function.
            This parameter is optional and can be NULL if no IV is used.
            The required size of the IV can be obtained by calling the <see cref = "M:PInvoke.BCrypt.BCryptGetProperty(System.Runtime.InteropServices.SafeHandle,System.String,PInvoke.BCrypt.BCryptGetPropertyFlags)"/> function to get the <see cref = "F:PInvoke.BCrypt.PropertyNames.BCRYPT_BLOCK_LENGTH"/> property. This will provide the size of a block for the algorithm, which is also the size of the IV.
            </param>
            <param name = "cbIV">
            The size, in bytes, of the <paramref name = "pbIV"/> buffer.
            </param>
            <param name = "pbOutput">
            The address of a buffer to receive the plaintext produced by this function. The cbOutput parameter contains the size of this buffer. For more information, see Remarks.
            If this parameter is NULL, the <see cref = "M:PInvoke.BCrypt.BCryptDecrypt(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,System.Byte[],PInvoke.BCrypt.BCryptEncryptFlags)"/> function calculates the size required for the plaintext of the encrypted data passed in the <paramref name = "pbInput"/> parameter.In this case, the location pointed to by the <paramref name = "pcbResult"/> parameter contains this size, and the function returns <see cref = "F:PInvoke.NTSTATUS.Code.STATUS_SUCCESS"/>.
            If the values of both the <paramref name = "pbOutput"/> and <paramref name = "pbInput"/> parameters are NULL, an error is returned unless an authenticated encryption algorithm is in use.In the latter case, the call is treated as an authenticated encryption call with zero length data, and the authentication tag, passed in the <paramref name = "pPaddingInfo"/> parameter, is verified.
            </param>
            <param name = "cbOutput">
            The size, in bytes, of the <paramref name = "pbOutput"/> buffer. This parameter is ignored if the <paramref name = "pbOutput"/> parameter is NULL.
            </param>
            <param name = "pcbResult">
            A pointer to a ULONG variable to receive the number of bytes copied to the <paramref name = "pbOutput"/> buffer. If <paramref name = "pbOutput"/> is NULL, this receives the size, in bytes, required for the plaintext.
            </param>
            <param name = "dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the <paramref name = "hKey"/> parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.IntPtr,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32@,PInvoke.BCrypt.BCryptSignHashFlags)">
            <summary>
            Creates a signature of a hash value.
            </summary>
            <param name = "hKey">The handle of the key to use to sign the hash.</param>
            <param name = "pPaddingInfo">
            A pointer to a structure that contains padding information. The actual type of structure this parameter points to depends on the value of the <paramref name = "dwFlags"/> parameter. This parameter is only used with asymmetric keys and must be NULL otherwise.
            </param>
            <param name = "pbInput">
            A pointer to a buffer that contains the hash value to sign. The <paramref name = "cbInput"/> parameter contains the size of this buffer.
            </param>
            <param name = "cbInput">
            The number of bytes in the <paramref name = "pbInput"/> buffer to sign.
            </param>
            <param name = "pbOutput">
            The address of a buffer to receive the signature produced by this function. The <paramref name = "cbOutput"/> parameter contains the size of this buffer.
            If this parameter is NULL, this function will calculate the size required for the signature and return the size in the location pointed to by the <paramref name = "pcbResult"/> parameter.
            </param>
            <param name = "cbOutput">
            The size, in bytes, of the <paramref name = "pbOutput"/> buffer. This parameter is ignored if the <paramref name = "pbOutput"/> parameter is NULL.
            </param>
            <param name = "pcbResult">
            A pointer to a ULONG variable that receives the number of bytes copied to the <paramref name = "pbOutput"/> buffer.
            If <paramref name = "pbOutput"/> is NULL, this receives the size, in bytes, required for the signature.
            </param>
            <param name = "dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the <paramref name = "hKey"/> parameter.
            </param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
            <remarks>
            To later verify that the signature is valid, call the <see cref = "M:PInvoke.BCrypt.BCryptVerifySignature(PInvoke.BCrypt.SafeKeyHandle,System.Void*,System.Byte[],System.Int32,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptSignHashFlags)"/> function with an identical key and an identical hash of the original data.
            </remarks>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptVerifySignature(PInvoke.BCrypt.SafeKeyHandle,System.IntPtr,System.Byte[],System.Int32,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptSignHashFlags)">
            <summary>
            Verifies that the specified signature matches the specified hash.
            </summary>
            <param name = "hKey">
            The handle of the key to use to decrypt the signature. This must be an identical key or the public key portion of the key pair used to sign the data with the <see cref = "M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)"/> function.
            </param>
            <param name = "pPaddingInfo">
            A pointer to a structure that contains padding information. The actual type of structure this parameter points to depends on the value of the <paramref name = "dwFlags"/> parameter. This parameter is only used with asymmetric keys and must be NULL otherwise.
            </param>
            <param name = "pbHash">
            The address of a buffer that contains the hash of the data. The <paramref name = "cbHash"/> parameter contains the size of this buffer.
            </param>
            <param name = "cbHash">
            The size, in bytes, of the <paramref name = "pbHash"/> buffer.
            </param>
            <param name = "pbSignature">
            The address of a buffer that contains the signed hash of the data. The <see cref = "M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)"/> function is used to create the signature. The <paramref name = "cbSignature"/> parameter contains the size of this buffer.
            </param>
            <param name = "cbSignature">
            The size, in bytes, of the <paramref name = "pbSignature"/> buffer. The <see cref = "M:PInvoke.BCrypt.BCryptSignHash(PInvoke.BCrypt.SafeKeyHandle,System.Byte[],System.Void*,PInvoke.BCrypt.BCryptSignHashFlags)"/> function is used to create the signature.
            </param>
            <param name = "dwFlags">
            A set of flags that modify the behavior of this function. The allowed set of flags depends on the type of key specified by the hKey parameter.
            If the key is a symmetric key, this parameter is not used and should be zero.
            If the key is an asymmetric key, this can be one of the following values.
            </param>
            <returns>
            Returns a status code that indicates the success or failure of the function.
            In particular, an invalid signature will produce a <see cref = "F:PInvoke.NTSTATUS.Code.STATUS_INVALID_SIGNATURE"/> result.
            </returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptSetProperty(System.Runtime.InteropServices.SafeHandle,System.String,System.IntPtr,System.Int32,PInvoke.BCrypt.BCryptSetPropertyFlags)">
            <summary>
            Sets the value of a named property for a CNG object.
            </summary>
            <param name = "hObject">A handle that represents the CNG object to set the property value for.</param>
            <param name = "pszProperty">
            A pointer to a null-terminated Unicode string that contains the name of the property to set. This can be one of the predefined <see cref = "T:PInvoke.BCrypt.PropertyNames"/> or a custom property identifier.
            </param>
            <param name = "pbInput">The address of a buffer that contains the new property value. The <paramref name = "cbInput"/> parameter contains the size of this buffer.</param>
            <param name = "cbInput">The size, in bytes, of the <paramref name = "pbInput"/> buffer.</param>
            <param name = "dwFlags">A set of flags that modify the behavior of this function. No flags are defined for this function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptSetProperty(System.Runtime.InteropServices.SafeHandle,System.String,System.Byte[],System.Int32,PInvoke.BCrypt.BCryptSetPropertyFlags)">
            <summary>
            Sets the value of a named property for a CNG object.
            </summary>
            <param name = "hObject">A handle that represents the CNG object to set the property value for.</param>
            <param name = "pszProperty">
            A pointer to a null-terminated Unicode string that contains the name of the property to set. This can be one of the predefined <see cref = "T:PInvoke.BCrypt.PropertyNames"/> or a custom property identifier.
            </param>
            <param name = "pbInput">The address of a buffer that contains the new property value. The <paramref name = "cbInput"/> parameter contains the size of this buffer.</param>
            <param name = "cbInput">The size, in bytes, of the <paramref name = "pbInput"/> buffer.</param>
            <param name = "dwFlags">A set of flags that modify the behavior of this function. No flags are defined for this function.</param>
            <returns>Returns a status code that indicates the success or failure of the function.</returns>
        </member>
        <member name="M:PInvoke.BCrypt.BCryptFreeBuffer(System.IntPtr)">
            <summary>
            The BCryptFreeBuffer function is used to free memory that was allocated by one of the CNG functions.
            </summary>
            <param name = "pvBuffer">A pointer to the memory buffer to be freed.</param>
        </member>
    </members>
</doc>
