text:
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>vm.Aspects.Security.Cryptography.Ciphers</name>
    </assembly>
    <members>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Asymmetric">
            <summary>
            Contains constant strings identifying the various asymmetric encryption algorithms used by the ciphers.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Asymmetric.Default">
            <summary>
            The default and preferred asymmetric algorithm implementation is RSA.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Asymmetric.Rsa">
            <summary>
            RSA implemented by RSACryptoServiceProvider. Recommended.
            </summary>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash">
            <summary>
            Contains constant strings identifying various hashing algorithms used by the ciphers.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash.Default">
            <summary>
            The default and preferred hash algorithm implementation is SHA256.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash.Sha1">
            <summary>
            SHA1. Not recommended. Prefer SHA256, and higher. Use for backwards compatibility only.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash.Sha256">
            <summary>
            SHA256.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash.Sha384">
            <summary>
            SHA384.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash.Sha512">
            <summary>
            SHA512.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash.MD5">
            <summary>
            MD5. Not recommended, use for backwards compatibility only.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash.Ripemd160">
            <summary>
            RIPEMD160 implemented by RIPEMD160Managed. Not recommended, use for backwards compatibility only.
            </summary>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyedHash">
            <summary>
            Contains constant strings identifying various keyed hashing algorithms used by the ciphers.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyedHash.Default">
            <summary>
            The default and preferred hash algorithm implementation - "HMACSHA256".
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyedHash.MacTripleDes">
            <summary>
            The MAC-TripleDES. Recommended.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyedHash.HmacSha256">
            <summary>
            The HMAC-SHA256. Recommended.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyedHash.HmacSha384">
            <summary>
            The HMAC-SHA384. Recommended.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyedHash.HmacSha512">
            <summary>
            The HMAC-SHA512. Recommended.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyedHash.HmacSha1">
            <summary>
            The HMAC-SHA1. Not recommended, use for backwards compatibility only.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyedHash.HmacRipemd160">
            <summary>
            The HMAC-RIPEMD160. Not recommended, use for backwards compatibility only.
            </summary>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyExchange">
            <summary>
            Contains constant strings identifying various key exchange algorithms (currently not used by the ciphers).
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyExchange.Default">
            <summary>
            The default and preferred signature algorithm implementation is RSA.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyExchange.Rsa">
            <summary>
            RSA implemented by RSACryptoServiceProvider. Recommended.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyExchange.ECDiffieHellman">
            <summary>
            ECDiffieHellman implemented by ECDiffieHellmanCng. Recommended.
            </summary>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Signature">
            <summary>
            Contains constant strings identifying the various signing algorithms used by the ciphers.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Signature.Default">
            <summary>
            The default and preferred signature algorithm implementation is RSA.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Signature.Rsa">
            <summary>
            RSA implemented by RSACryptoServiceProvider. Recommended.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Signature.Dsa">
            <summary>
            DSA implemented by DSACryptoServiceProvider. Not recommended, use for backwards compatibility only.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Signature.ECDsa">
            <summary>
            ECDsa implemented by ECDsaCng. Recommended.
            </summary>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric">
            <summary>
            Contains constant strings identifying the various symmetric encryption algorithms used by the ciphers.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Default">
            <summary>
            The default and preferred symmetric algorithm implementation is AES.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Aes">
            <summary>
            AES implemented by AesCryptoServiceProvider maybe faster than AES Managed. Available on older platforms and not developed anymore. Recommended.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.AesManaged">
            <summary>
            AES implemented by AesManaged may be faster than AesCryptoServiceProvider. Available on all platforms. Preferred.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Rijndael">
            <summary>
            The Rijndael implemented by RijndaelManaged.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Des">
            <summary>
            The DES implemented by DESCryptoServiceProvider. Not recommended, use for backwards compatibility only.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.TripleDes">
            <summary>
            The Triple DES implemented by TripleDESCryptoServiceProvider. Not recommended, use for backwards compatibility only.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.RC2">
            <summary>
            The RC2 implemented by RC2CryptoServiceProvider. Not recommended, use for backwards compatibility only.
            </summary>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.ByteArrayExtensions">
            <summary>
            Class ByteArrayExtensions contains extension methods for array of bytes type of objects (<c>byte[]</c>).
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ByteArrayExtensions.FillRandom(System.Byte[])">
            <summary>
            Fills the array with cryptographically strong random data.
            </summary>
            <param name="array">The array to fill.</param>
            <returns>The filled array.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="array"/> is <see langword="null"/></exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">The encryption failed.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ByteArrayExtensions.ConstantTimeEquals(System.Byte[],System.Byte[])">
            <summary>
            Securely compares two arrays for equality in time which depends only on the length of <paramref name="array"/>.
            The security of this compare is based on the fact that regardless of where the first unequal bytes are,
            the method compares stubbornly all bytes to the end, thus producing the result in time depending only on the length of the <paramref name="array"/>.
            </summary>
            <param name="array">The first array to compare.</param>
            <param name="other">The second array to compare.</param>
            <returns>
            <see langword="true"/> if the arrays are equal, otherwise <see langword="false"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            array
            or
            other
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ByteArrayExtensions.ToBase64String(System.Byte[],System.Base64FormattingOptions)">
            <summary>
            Converts the <c>byte[]</c> parameter to base64 string.
            </summary>
            <param name="array">The array to be converted.</param>
            <param name="options">The base64 conversion options.</param>
            <returns>The base64 representation of the array.</returns>
            <remarks>
            Note that the returned string contains only the following characters: a-z, A-Z, 0-9, +, / and =.
            If stored, for saving space, consider storing the result as an ASCII string instead of Unicode string.
            </remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ByteArrayExtensions.FromBase64String(System.String,System.Int32,System.Int32)">
            <summary>
            Coverts base64 encoded string to the original byte array.
            </summary>
            <param name="base64">The base64 string to convert.</param>
            <param name="offset">The offset in the string to start the conversion from.</param>
            <param name="length">The length of the string to convert over, if negative - converts the string to the end.</param>
            <returns>The original byte array.</returns>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.DecryptedAttribute">
            <summary>
            DecryptedAttribute marks a property or field as one that must be first decrypted before accessing its actual value.
            This class cannot be inherited.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.DecryptedAttribute.DefaultEncryptedProperty">
            <summary>
            The default name of a property or field that holds the encrypted value.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.DecryptedAttribute.EncryptedIn">
            <summary>
            Gets or sets the name of the property or field which holds the encrypted value.
            The type of the specified property or field must be array of bytes.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.DecryptedAttribute.CipherResolver">
            <summary>
            Gets a string that can be used to resolve which cipher should be selected from the DI container.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DecryptedAttribute.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DecryptedAttribute"/> class.
            </summary>
            <param name="encryptedIn">
            Sets the name of a property or field that holds the encrypted value.
            The type of the specified property or field must be array of bytes.
            </param>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.HashAlgorithmFactory">
            <summary>
            Class <c>HashAlgorithmFactory</c> encapsulates the strategy for determining and realizing the hash algorithm.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.HashAlgorithmFactory.HashAlgorithmName">
            <summary>
            Gets the name of the hash algorithm.
            </summary>
            <value>The hash algorithm.</value>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.HashAlgorithmFactory.Initialize(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.HashAlgorithmFactory"/> class with optional hash algorithm name.
            </summary>
            <param name="hashAlgorithmName">Name of the hash algorithm.</param>
            <remarks>
            Implements the strategy for resolving the hash algorithm:
            <list type="number">
                <item>
                    If the user passed hash algorithm name that is not <see langword="null"/>, empty or whitespace characters only,
                    it is used in creating the <see cref="T:System.Security.Cryptography.HashAlgorithm"/> object; otherwise
                </item>
                <item>
                    Assume the default hash algorithm - <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash.Default"/> - SHA256.
                </item>
            </list>
            </remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.HashAlgorithmFactory.Create">
            <summary>
            Creates a <see cref="T:System.Security.Cryptography.HashAlgorithm"/> instance.
            </summary>
            <returns><see cref="T:System.Security.Cryptography.HashAlgorithm"/> instance.</returns>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyedHashAlgorithmFactory">
            <summary>
            Class <c>KeyedHashAlgorithmFactory</c> encapsulates the strategy for determining and realizing the keyed hash algorithm.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyedHashAlgorithmFactory._hashFactory">
            <summary>
            The generated keyed hash factory
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyedHashAlgorithmFactory.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyedHashAlgorithmFactory"/> class.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyedHashAlgorithmFactory.Initialize(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyedHashAlgorithmFactory"/> class with optional keyed hash algorithm name.
            </summary>
            <param name="hashAlgorithmName">Name of the keyed hash algorithm.</param>
            <exception cref="T:System.Exception">
            If the supplied keyed hash algorithm name is not valid.
            </exception>
            <remarks>
            Implements the strategy for resolving the keyed hash algorithm:
            <list type="number">
                <item>
                    If the user passed keyed hash algorithm name that is not <see langword="null"/>, empty or whitespace characters only,
                    it is used in creating the <see cref="T:System.Security.Cryptography.KeyedHashAlgorithm"/> object; otherwise
                </item>
                <item>
                    Assumes the default keyed hash algorithm - <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyedHash.Default"/> - HMACSHA256.
                </item>
            </list>
            </remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyedHashAlgorithmFactory.Create">
            <summary>
            Creates a <see cref="T:System.Security.Cryptography.KeyedHashAlgorithm"/> instance.
            </summary>
            <returns><see cref="T:System.Security.Cryptography.HashAlgorithm"/> instance.</returns>
            <exception cref="T:System.InvalidOperationException">
            If the factory could not resolve the keyed hash algorithm.
            </exception>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyedHashAlgorithmFactory.HashAlgorithmName">
            <summary>
            Gets the name of the keyed hash algorithm.
            </summary>
            <value>The name of the keyed hash algorithm.</value>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileLocationStrategy">
            <summary>
            DefaultKeyLocationStrategy implements the following hierarchical rules for locating the file with the encrypted symmetric key:
                <list type="number">
                    <item>if it is specified by the caller in the constructor's input parameter; otherwise</item>
                    <item>if it is specified in the <c>appSettings</c> section of the application's configuration file with key <c>symmetricKeyLocation</c>; otherwise</item>
                    <item>by the path and name of the entry assembly with added suffix ".KEY", e.g. "MyApp.exe.KEY".</item>.
                </list>
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileLocationStrategy.DefaultKeyLocation">
            <summary>
            The default key location suffix - .key
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileLocationStrategy.GetKeyLocation(System.String)">
            <summary>
            Executes the key location strategy and returns the resolved store specific key location (here path and filename).
            </summary>
            <param name="keyLocation">
            The key location. Can be <see langword="null" />, empty or string consisting of whitespace characters only.
            </param>
            <returns>The store specific key location (here path and filename).</returns>
            <remarks>
            The method implements the strategy for determining the location of the file containing the encryption key.
            </remarks>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileStorage">
            <summary>
            DefaultKeyFileStorage implements the interface <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorage"/> by storing and retrieving the keys to and from a file,
            where the store specific key location name is the path and filename of the file containing the key.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileStorage.KeyLocationExists(System.String)">
            <summary>
            Tests whether the keys file exists.
            </summary>
            <param name="keyLocation">Here, the key path and filename of the key file.</param>
            <returns><see langword="true" /> if the file exists, otherwise <see langword="false" />.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileStorage.KeyLocationExistsAsync(System.String)">
            <summary>
            Tests whether the key's storage location name exists.
            </summary>
            <param name="keyLocation">Here, the key path and filename of the key file.</param>
            <returns><see langword="true"/> if the location exists, otherwise <see langword="false"/>.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileStorage.PutKey(System.Byte[],System.String)">
            <summary>
            Puts the key in the specified file.
            If the file doesn't exist, it creates it, stores the key in it, and sets the appropriate security on the file.
            </summary>
            <param name="key">The key.</param>
            <param name="keyLocation">The key location, here the key path and filename of the key file.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if the <paramref name="key"/> is <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if <paramref name="key"/> is empty array, or
            <paramref name="keyLocation"/> is <see langword="null"/>, empty, or consist of whitespace characters only.
            </exception>
            <exception cref="T:System.ArgumentException">
            <paramref name="keyLocation"/> refers to a non-file device, such as "con:", "com1:", "lpt1:", etc. in an NTFS environment.
            </exception>
            <exception cref="T:System.NotSupportedException">
            <paramref name="keyLocation"/> refers to a non-file device, such as "con:", "com1:", "lpt1:", etc. in an NTFS environment.
            </exception>
            <exception cref="T:System.IO.IOException">
            I/O error occurred.
            </exception>
            <exception cref="T:System.Security.SecurityException">
            The caller does not have the required permission.
            </exception>
            <exception cref="T:System.IO.DirectoryNotFoundException">
            The specified path is invalid, such as being on an unmapped drive.
            </exception>
            <exception cref="T:System.UnauthorizedAccessException">
            The access requested is not permitted by the operating system for the specified path,
            such as when access is Write or ReadWrite and the file or directory is set for read-only access.
            </exception>
            <exception cref="T:System.IO.PathTooLongException">
            The specified path, file name, or both exceed the system-defined maximum length.
            For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileStorage.GetKey(System.String)">
            <summary>
            Gets the key from the specified file. The file must exist.
            </summary>
            <param name="keyLocation">The key location, i.e. path and filename of the key file.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if the <paramref name="keyLocation"/> is <see langword="null"/>, empty or consists of whitespace characters only.
            </exception>
            <exception cref="T:System.ArgumentException">
            <paramref name="keyLocation"/> refers to a non-file device, such as "con:", "com1:", "lpt1:", etc. in an NTFS environment.
            </exception>
            <exception cref="T:System.NotSupportedException">
            <paramref name="keyLocation"/> refers to a non-file device, such as "con:", "com1:", "lpt1:", etc. in an NTFS environment.
            </exception>
            <exception cref="T:System.IO.FileNotFoundException">
            <paramref name="keyLocation"/> refers to a non-existent file.
            </exception>
            <exception cref="T:System.IO.IOException">
            I/O error occurred.
            </exception>
            <exception cref="T:System.Security.SecurityException">
            The caller does not have the required permission.
            </exception>
            <exception cref="T:System.IO.DirectoryNotFoundException">
            The specified path is invalid, such as being on an unmapped drive.
            </exception>
            <exception cref="T:System.UnauthorizedAccessException">
            The access requested is not permitted by the operating system for the specified path,
            such as when access is Write or ReadWrite and the file or directory is set for read-only access.
            </exception>
            <exception cref="T:System.IO.PathTooLongException">
            The specified path, file name, or both exceed the system-defined maximum length.
            For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileStorage.PutKeyAsync(System.Byte[],System.String)">
            <summary>
            Asynchronously puts the key in the specified file.
            If the file doesn't exist it creates it, stores the key and sets the appropriate security on the file.
            </summary>
            <param name="key">The key.</param>
            <param name="keyLocation">The key location, i.e. the path and filename of the key file.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> object representing the process of putting the key in the file.</returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if the <paramref name="key"/> is <see langword="null"/> or if the <paramref name="keyLocation"/> is <see langword="null"/>,
            empty or consists of whitespace characters only.
            </exception>
            <exception cref="T:System.ArgumentException">
            <paramref name="keyLocation"/> refers to a non-file device, such as "con:", "com1:", "lpt1:", etc. in an NTFS environment.
            </exception>
            <exception cref="T:System.NotSupportedException">
            <paramref name="keyLocation"/> refers to a non-file device, such as "con:", "com1:", "lpt1:", etc. in an NTFS environment.
            </exception>
            <exception cref="T:System.IO.IOException">
            I/O error occurred.
            </exception>
            <exception cref="T:System.Security.SecurityException">
            The caller does not have the required permission.
            </exception>
            <exception cref="T:System.IO.DirectoryNotFoundException">
            The specified path is invalid, such as being on an unmapped drive.
            </exception>
            <exception cref="T:System.UnauthorizedAccessException">
            The access requested is not permitted by the operating system for the specified path,
            such as when access is Write or ReadWrite and the file or directory is set for read-only access.
            </exception>
            <exception cref="T:System.IO.PathTooLongException">
            The specified path, file name, or both exceed the system-defined maximum length.
            For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileStorage.GetKeyAsync(System.String)">
            <summary>
            Asynchronously gets the key from the specified file. The file must exist.
            </summary>
            <param name="keyLocation">The key location.</param>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object representing the task of getting the key.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if the <paramref name="keyLocation"/> is <see langword="null"/>, empty or consists of whitespace characters only.
            </exception>
            <exception cref="T:System.ArgumentException">
            <paramref name="keyLocation"/> refers to a non-file device, such as "con:", "com1:", "lpt1:", etc. in an NTFS environment.
            </exception>
            <exception cref="T:System.NotSupportedException">
            <paramref name="keyLocation"/> refers to a non-file device, such as "con:", "com1:", "lpt1:", etc. in an NTFS environment.
            </exception>
            <exception cref="T:System.IO.FileNotFoundException">
            <paramref name="keyLocation"/> refers to a non-existent file.
            </exception>
            <exception cref="T:System.IO.IOException">
            I/O error occurred.
            </exception>
            <exception cref="T:System.Security.SecurityException">
            The caller does not have the required permission.
            </exception>
            <exception cref="T:System.IO.DirectoryNotFoundException">
            The specified path is invalid, such as being on an unmapped drive.
            </exception>
            <exception cref="T:System.UnauthorizedAccessException">
            The access requested is not permitted by the operating system for the specified path,
            such as when access is Write or ReadWrite and the file or directory is set for read-only access.
            </exception>
            <exception cref="T:System.IO.PathTooLongException">
            The specified path, file name, or both exceed the system-defined maximum length.
            For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileStorage.DeleteKeyLocation(System.String)">
            <summary>
            Deletes the storage (the file) with the specified location name (path and filename).
            </summary>
            <param name="keyLocation">
            The key location name to be deleted.
            </param>
            <exception cref="T:System.ArgumentNullException">
            The <paramref name="keyLocation"/> is <see langword="null"/>, empty or consists of only whitespace characters.
            </exception>
            <exception cref="T:System.IO.DirectoryNotFoundException">
            The specified path in <paramref name="keyLocation"/> is invalid (for example, it is on an unmapped drive).
            </exception>
            <exception cref="T:System.IO.IOException">
            An I/O error occurred.
            </exception>
            <exception cref="T:System.NotSupportedException">
            <paramref name="keyLocation"/> is an invalid file format.
            </exception>
            <exception cref="T:System.IO.PathTooLongException">
            The specified path, file name, or both exceed the system-defined maximum length. For example,
            on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
            </exception>
            <exception cref="T:System.UnauthorizedAccessException">
            The caller does not have the required permission.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileStorage.DeleteKeyLocationAsync(System.String)">
            <summary>
            Deletes the storage with the specified location name.
            </summary>
            <param name="keyLocation">The key location name to be deleted.</param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileStorage.SetKeyFileSecurity(System.String)">
            <summary>
            Sets the key file security by removing all ACL entries and then allowing full control to the file to
                <list type="bullet">
                    <item>the current user,</item>
                    <item>the SYSTEM account and</item>
                    <item>the Administrators group.</item>
                </list>
            </summary>
            <param name="keyLocation">The key location.</param>
            <exception cref="T:System.ArgumentNullException">
            The <paramref name="keyLocation"/> is <see langword="null"/>, empty or consists of only whitespace characters.
            </exception>
            <exception cref="T:System.IO.IOException">
            An I/O error occurred.
            </exception>
            <exception cref="T:System.UnauthorizedAccessException">
            The caller does not have the required permission.
            </exception>
            <exception cref="T:System.SystemException">
            The file could not be found.
            </exception>
            <exception cref="T:System.InvalidOperationException">

            </exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.RandomGenerator">
            <summary>
            DefaultRandomGenerator generates cryptographically strong byte sequences.
            </summary>
            <seealso cref="T:vm.Aspects.Security.Cryptography.Ciphers.IRandom" />
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.RandomGenerator.GetBytes(System.Byte[])">
            <summary>
            Fills an array of bytes with a cryptographically strong sequence of random values.
            </summary>
            <param name="data">The array to fill with a cryptographically strong sequence of random bytes.</param>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.RandomGenerator._disposed">
            <summary>
            The flag will be set just before the object is disposed.
            </summary>
            <value>0 - if the object is not disposed yet, any other value - the object is already disposed.</value>
            <remarks>
            Do not test or manipulate this flag outside of the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.RandomGenerator.IsDisposed"/> or the method <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.RandomGenerator.Dispose"/>.
            The type of this field is Int32 so that it can be easily passed to the members of the class <see cref="T:System.Threading.Interlocked"/>.
            </remarks>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.RandomGenerator.IsDisposed">
            <summary>
            Returns <see langword="true"/> if the object has already been disposed, otherwise <see langword="false"/>.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.RandomGenerator.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName.Equals(vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName)">
            <summary>
            Indicates whether the current object is equal to a reference to another object of the same type.
            </summary>
            <param name="other">A reference to another object of type <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName"/> to compare with this object.</param>
            <returns>
            <c>false</c> if <paramref name="other"/> is equal to <c>null</c>, otherwise
            <c>true</c> if <paramref name="other"/> refers to <c>this</c> object, otherwise
            <c>true</c> if <i>the business identities</i> of the current object and the <paramref name="other"/> are equal by value,
            e.g. <c>BusinessKeyProperty == other.BusinessKeyProperty && (some other properties equality...);</c>; otherwise, <c>false</c>.
            </returns>
            <remarks>
            The <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName.Equals(System.Object)"/> methods and the overloaded <c>operator==</c>-s test for business identity,
            i.e. they test for business <i>same-ness</i> by comparing the business keys.
            </remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName.Equals(System.Object)">
            <summary>
            Determines whether this <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName"/> instance is equal to the specified <see cref="T:System.Object"/> reference.
            </summary>
            <param name="obj">The <see cref="T:System.Object"/> reference to compare with this <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName"/> object.</param>
            <returns>
            <c>false</c> if <paramref name="obj"/> is equal to <c>null</c>, otherwise
            <c>true</c> if <paramref name="obj"/> refers to <c>this</c> object, otherwise
            <c>true</c> if <paramref name="obj"/> <i>is an instance of</i> <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName"/> and
            <i>the business identities</i> of the current object and the <paramref name="obj"/> are equal by value; otherwise,
            <c>false</c>.
            </returns>
            <remarks>
            The <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName.Equals(vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName)"/> methods and the overloaded <c>operator==</c>-s test for business identity,
            i.e. they test for business <i>same-ness</i> by comparing the business keys.
            </remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName.GetHashCode">
            <summary>
            Serves as a hash function for the objects of <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName"/> and its derived types.
            </summary>
            <returns>A hash code for the current <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName"/> instance.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName.op_Equality(vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName,vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName)">
            <summary>
            Compares two <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName"/> objects.
            </summary>
            <param name="left">The left operand.</param>
            <param name="right">The right operand.</param>
            <returns>
            <c>true</c> if the objects are considered to be equal (<see cref="M:Equals{TypeAndName}"/>);
            otherwise <c>false</c>.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName.op_Inequality(vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName,vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName)">
            <summary>
            Compares two <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.Resolver.TypeAndName"/> objects.
            </summary>
            <param name="left">The left operand.</param>
            <param name="right">The right operand.</param>
            <returns>
            <c>true</c> if the objects are not considered to be equal (<see cref="M:Equals{TypeAndName}"/>);
            otherwise <c>false</c>.
            </returns>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.SymmetricAlgorithmFactory">
            <summary>
            DefaultSymmetricAlgorithmFactory encapsulates the default strategy for creating of a symmetric encryption algorithm object.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.SymmetricAlgorithmFactory.Initialize(System.String)">
            <summary>
            Initializes the factory with an optional symmetric algorithm name.
            </summary>
            <param name="symmetricAlgorithmName">
            If you do not call this method the factory will create instances implementing the <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Default"/> (AESManaged) algorithm.
            Name of the symmetric algorithm. Hint: use the constants in the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric"/> static class.
            </param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.SymmetricAlgorithmFactory.Create">
            <summary>
            Creates a new <see cref="T:System.Security.Cryptography.SymmetricAlgorithm" /> instance.
            </summary>
            <returns><see cref="T:System.Security.Cryptography.SymmetricAlgorithm" /> instance.</returns>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.SymmetricAlgorithmFactory.SymmetricAlgorithmName">
            <summary>
            Gets the name of the symmetric algorithm.
            </summary>
            <value>The name of the symmetric algorithm.</value>
            <remarks>Initial value <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Default"/> (AESManaged).</remarks>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher">
            <summary>
            The <c>EncryptedKeyCipher</c> is a symmetric cipher. The symmetric key is encrypted with an asymmetric algorithm and so saved in a file.
            This class also defines a set of crypto-operations (virtual protected methods)
            for the descending classes which implement the various steps of the methods (GoF template pattern)
            that compose and decompose the crypto-packages.
            </summary>
            <remarks>
            <para>
            By default the cipher uses the <see cref="T:System.Security.Cryptography.AesCryptoServiceProvider"/> with default parameters.
            </para><para>
            The cipher can be used for protecting data in motion where the sender has access to the public key and
            the receiver owns the private key. It can be used also to encrypt data at rest, e.g. stored in a database, file, etc.
            where the writer owns the private key and the reader has access to the public key.
            </para><para>
            The asymmetric key can be stored in a:
            <list type="bullet">
                <item>key container, in which case the class will locate the key container using an implementation of <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyLocationStrategy"/></item>
                <item>or the sender of the crypto-package can use a public key stored in a public certificate which corresponds to
                      a private certificate owned by the receiver. The private certificate stores the private key too.</item>
            </list>
            </para><para>
            The encrypted symmetric key is stored in a file. The class determines the path and name of the file from an <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyLocationStrategy"/> object.
            If the key file does not exist a new key is generated, encrypted and saved in a file in the location determined by the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyLocationStrategy"/> object.
            </para><para>
            Note that this cipher uses one symmetric key for all packages.
            It performs faster than the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.ProtectedKeyCipher"/>.
            Which cipher to use is a matter of compromise. <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.ProtectedKeyCipher"/>
            encrypts and stores or retrieves and decrypts a single symmetric key once per the life time of the cipher.
            However the file containing the encrypted symmetric key needs to be managed separately and if compromised all encrypted documents will be compromised too.
            </para><para>
            Crypto package contents:
            <list type="number">
                <item><description>The length of the initialization vector of the encrypted symmetric cipher (serialized Int32) - 4 bytes.</description></item>
                <item><description>The bytes of the encrypted initialization vector.</description></item>
                <item><description>The bytes of the encrypted text.</description></item>
            </list>
            </para><para>
            The cipher can also be used to encrypt elements of or entire XML documents.
            </para>
            </remarks>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.PublicKey">
            <summary>
            Gets or sets the public key used for encrypting the symmetric key.
            </summary>
            <value>The public key.</value>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.PrivateKey">
            <summary>
            Gets or sets the private key used for decrypting the symmetric key.
            </summary>
            <value>The private key.</value>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.ShouldEncryptIV">
            <summary>
            Flag indicating whether to encrypt the initialization vector. Here the setter checks if the certificate has a private key.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.#ctor(System.Security.Cryptography.X509Certificates.X509Certificate2,System.String,vm.Aspects.Security.Cryptography.Ciphers.IKeyLocationStrategy,vm.Aspects.Security.Cryptography.Ciphers.IKeyStorageTasks,System.String,vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher" /> class.
            </summary>
            <param name="certificate">
            The certificate containing the public and optionally the private key for encryption and decryption of the symmetric key.
            </param>
            <param name="symmetricKeyLocation">
            Seeding name of store location name of the encrypted symmetric key (e.g. relative or absolute path).
            The parameter will be passed to the <paramref name="symmetricKeyLocationStrategy" /> to determine the final store location name path
            (e.g. relative or absolute path).
            </param>
            <param name="symmetricKeyLocationStrategy">
            Object which implements the strategy for determining the store location name (e.g. path and filename) of the encrypted symmetric key.
            If <see langword="null" /> it defaults to a new instance of the class <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileLocationStrategy" />.
            </param>
            <param name="keyStorage">
            Object which implements the storing and retrieving of the the encrypted symmetric key to and from the store with the determined location name.
            If <see langword="null" /> it defaults to a new instance of the class <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileStorage" />.
            </param>
            <param name="symmetricAlgorithmName">
            The name of the symmetric algorithm implementation. You can use any of the constants from <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric" /> or
            <see langword="null" />, empty or whitespace characters only - these will default to <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Default" />.
            </param>
            <param name="symmetricAlgorithmFactory">
            The symmetric algorithm factory. If <see langword="null" /> the constructor will create an instance of the default <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.SymmetricAlgorithmFactory" />,
            which uses the <see cref="M:System.Security.Cryptography.SymmetricAlgorithm.Create(System.String)" /> method from the .NET library.
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="certificate" /> is <see langword="null" />.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.#ctor(System.Security.Cryptography.X509Certificates.X509Certificate2,System.String,vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher" /> class for initialization by the constructors of the inheriting classes.
            </summary>
            <param name="certificate">
            The certificate containing the public and optionally the private key for encryption and decryption of the symmetric key.
            </param>
            <param name="symmetricAlgorithmName">
            The name of the symmetric algorithm implementation. You can use any of the constants from <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric" /> or
            <see langword="null" />, empty or whitespace characters only - these will default to <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Default" />.
            </param>
            <param name="symmetricAlgorithmFactory">
            The symmetric algorithm factory. If <see langword="null" /> the constructor will create an instance of the default <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.SymmetricAlgorithmFactory" />,
            which uses the <see cref="M:System.Security.Cryptography.SymmetricAlgorithm.Create(System.String)" /> method from the .NET library.
            </param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.#ctor(System.String,vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher" /> class.
            </summary>
            <param name="symmetricAlgorithmName">
            The name of the symmetric algorithm implementation. You can use any of the constants from <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric" /> or
            <see langword="null" />, empty or whitespace characters only - these will default to <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Default" />.
            </param>
            <param name="symmetricAlgorithmFactory">
            The symmetric algorithm factory. If <see langword="null" /> the constructor will create an instance of the default <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.SymmetricAlgorithmFactory" />,
            which uses the <see cref="M:System.Security.Cryptography.SymmetricAlgorithm.Create(System.String)" /> method from the .NET library.
            </param>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.Base64Encoded">
            <summary>
            Gets or sets a value indicating whether the encrypted texts are or should be Base64 encoded.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.Encrypt(System.IO.Stream,System.IO.Stream)">
            <summary>
            Reads the clear text from the <paramref name="dataStream"/> encrypts it and writes the result into the <paramref name="encryptedStream"/>
            stream. This is the reverse method of <see cref="M:Decrypt(System.Stream, System.Stream)"/>.
            </summary>
            <param name="dataStream">
            The unencrypted input stream.
            </param>
            <param name="encryptedStream">
            The output stream where to write the crypto package which will contain the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either <paramref name="dataStream"/> or <paramref name="encryptedStream"/> are <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when either <paramref name="dataStream"/> cannot be read or
            <paramref name="encryptedStream"/> cannot be written to.
            </exception>
            <exception cref="T:System.Security.CryptographicException">
            The encryption failed.
            </exception>
            <exception cref="T:System.IO.IOException">
            An I/O error occurred.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.Decrypt(System.IO.Stream,System.IO.Stream)">
            <summary>
            Reads and decrypts the <paramref name="encryptedStream"/> stream and writes the clear text into the <paramref name="dataStream"/> stream.
            This is the reverse method of <see cref="M:Encrypt(System.Stream, System.Stream)"/>.
            </summary>
            <param name="encryptedStream">
            The input crypto package stream which contains the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            </param>
            <param name="dataStream">
            The output stream where to put the unencrypted data.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either <paramref name="encryptedStream"/> or <paramref name="dataStream"/> are <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when either <paramref name="dataStream"/> cannot be written to or
            <paramref name="encryptedStream"/> cannot be read from.
            </exception>
            <exception cref="T:System.Security.CryptographicException">
            The decryption failed.
            </exception>
            <exception cref="T:System.IO.IOException">
            An I/O error occurred.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.Encrypt(System.Byte[])">
            <summary>
            Encrypts the specified <paramref name="data"/>. This is the reverse method of <see cref="M:Decrypt(byte[])"/>.
            </summary>
            <param name="data">
            The data to be encrypted.
            </param>
            <returns>
            The bytes of the crypto package which contains the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            Or returns <see langword="null"/> if <paramref name="data"/> is <see langword="null"/>.
            </returns>
            <exception cref="T:System.Security.CryptographicException">
            The encryption failed.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.Decrypt(System.Byte[])">
            <summary>
            Decrypts the specified <paramref name="encryptedData"/>.
            This is the reverse method of <see cref="M:Encrypt(byte[])"/>.
            </summary>
            <param name="encryptedData">
            The bytes of the crypto package which contains the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            If <paramref name="encryptedData"/> is <see langword="null"/> the method returns <see langword="null"/>.
            </param>
            <returns>
            The decrypted <paramref name="encryptedData"/> or <see langword="null"/> if <paramref name="encryptedData"/> is <see langword="null"/>.
            </returns>
            <exception cref="T:System.Security.CryptographicException">
            The encryption failed.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.EncryptAsync(System.IO.Stream,System.IO.Stream)">
            <summary>
            Asynchronously reads the clear text from the <paramref name="dataStream"/>, encrypts it and writes the result into the
            <paramref name="encryptedStream"/> stream. This is the reverse method of <see cref="M:DecryptAsync(System.Stream, System.Stream)"/>.
            </summary>
            <param name="dataStream">
            The unencrypted input stream.
            </param>
            <param name="encryptedStream">
            The output stream where to write the crypto package which will contain the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            </param>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object which represents the process of asynchronous encryption.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either <paramref name="dataStream"/> or <paramref name="encryptedStream"/> are <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when either <paramref name="dataStream"/> cannot be read or
            <paramref name="encryptedStream"/> cannot be written to.
            </exception>
            <exception cref="T:System.Security.CryptographicException">
            The encryption failed.
            </exception>
            <exception cref="T:System.IO.IOException">
            An I/O error occurred.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.DecryptAsync(System.IO.Stream,System.IO.Stream)">
            <summary>
            Asynchronously reads and decrypts the <paramref name="encryptedStream"/> stream and writes the clear text into the
            <paramref name="dataStream"/> stream. This is the reverse method of <see cref="M:EncryptAsync(System.Stream, System.Stream)"/>.
            </summary>
            <param name="encryptedStream">
            The input crypto package stream which contains the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            </param>
            <param name="dataStream">
            The output stream where to put the unencrypted data.
            </param>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object which represents the process of asynchronous decryption.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either <paramref name="encryptedStream"/> or <paramref name="dataStream"/> are <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when either <paramref name="dataStream"/> cannot be written to or
            <paramref name="encryptedStream"/> cannot be read from.
            </exception>
            <exception cref="T:System.Security.CryptographicException">
            The decryption failed.
            </exception>
            <exception cref="T:System.IO.IOException">
            An I/O error occurred.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.InitializeAsymmetricKeys(System.Security.Cryptography.X509Certificates.X509Certificate2)">
            <summary>
            Initializes the asymmetric key.
            </summary>
            <param name="certificate">The certificate.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="certificate"/> is <see langword="null"/>
            </exception>.
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.EncryptSymmetricKey">
            <summary>
            Encrypts the symmetric key using the public key.
            </summary>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <returns>System.Byte[].</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.DecryptSymmetricKey(System.Byte[])">
            <summary>
            Decrypts the symmetric key using the private key.
            </summary>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <param name="encryptedKey">The encrypted key.</param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.BeforeWriteEncrypted(System.IO.Stream)">
            <summary>
            Allows the inheritors to write some unencrypted information to the <paramref name="encryptedStream"/>
            before the encrypted text, e.g. here the cipher writes the initialization vector.
            </summary>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="encryptedStream"/> cannot be written to.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.EncryptIV">
            <summary>
            Encrypts the symmetric cipher's initialization vector.
            </summary>
            <returns>The encrypted initialization vector.</returns>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.CreateEncryptingStream(System.IO.Stream)">
            <summary>
            Creates the encrypting stream and gives an opportunity to the inheritors to modify the creation of the crypto-stream,
            e.g. wrap or chain the crypto-stream created here with another crypto-stream that computes a hash of the unencrypted document.
            </summary>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <param name="encryptedStream">The encrypted stream.</param>
            <returns>The created CryptoStream.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="encryptedStream"/> cannot be written.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.DoEncrypt(System.IO.Stream,System.IO.Stream)">
            <summary>
            Performs the actual encryption of the <paramref name="dataStream"/> and writing into the <paramref name="cryptoStream"/>.
            Also gives opportunity to the inheritors to modify the actual encryption process.
            </summary>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <param name="dataStream">The data stream.</param>
            <param name="cryptoStream">The crypto stream.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either <paramref name="cryptoStream"/> or <paramref name="dataStream"/> are <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when either <paramref name="dataStream"/> cannot be read or the <paramref name="cryptoStream"/> cannot be written.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.AfterWriteEncrypted(System.IO.Stream,System.Security.Cryptography.CryptoStream)">
            <summary>
            Gives an opportunity to the inheritors to write more unencrypted information to the <paramref name="encryptedStream"/>, e.g.
            add the signature or the hash to the <paramref name="encryptedStream"/>.
            </summary>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <param name="encryptedStream">The encrypted stream.</param>
            <param name="cryptoStream">The crypto stream.</param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.BeforeReadDecrypted(System.IO.Stream)">
            <summary>
            Allows the inheritors to read some unencrypted information from the <paramref name="encryptedStream"/>,
            e.g. here the cipher reads and sets the initialization vector in the symmetric cipher.
            </summary>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="encryptedStream"/> cannot be read.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.DecryptIV(System.Byte[])">
            <summary>
            Decrypts the symmetric cipher's initialization vector.
            </summary>
            <param name="encryptedIV">The encrypted initialization vector.</param>
            <exception cref="T:System.InvalidOperationException">The certificate did not contain a private key.</exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
            <exception cref="T:System.InvalidOperationException"></exception>
            See also <seealso cref="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.CloneLightCipher"/>.
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.CreateDecryptingStream(System.IO.Stream)">
            <summary>
            Creates the decrypting stream and gives an opportunity to the inheritors to modify the creation of the crypto-stream,
            e.g. wrap or chain the crypto-stream created here with another crypto-stream that computes a hash of the unencrypted text.
            </summary>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <param name="encryptedStream">The encrypted stream.</param>
            <returns>The created CryptoStream.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="encryptedStream"/> cannot be read.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.DoDecrypt(System.IO.Stream,System.IO.Stream)">
            <summary>
            Performs the actual decryption of the crypto-text from the package and writes it into the <paramref name="dataStream"/>.
            Also gives opportunity to the inheritors to modify the actual decryption process.
            </summary>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <param name="cryptoStream">The crypto stream.</param>
            <param name="dataStream">The data stream.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either <paramref name="cryptoStream"/> or <paramref name="dataStream"/> are <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when either <paramref name="dataStream"/> cannot be written or the <paramref name="cryptoStream"/> cannot be read.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.AfterReadDecrypted(System.IO.Stream,System.Security.Cryptography.CryptoStream)">
            <summary>
            Gives an opportunity to the inheritors to read more unencrypted information from the <paramref name="encryptedStream"/> or perform other activities, e.g.
            verify the signature or the hash of the <paramref name="encryptedStream"/>.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <param name="cryptoStream">The crypto stream.</param>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.BeforeWriteEncryptedAsync(System.IO.Stream)">
            <summary>
            Allows the inheritors to write asynchronously some unencrypted information to the <paramref name="encryptedStream"/>
            before the encrypted text, e.g. here the cipher writes the initialization vector.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object representing the process.
            </returns>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="encryptedStream"/> cannot be written to.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.DoEncryptAsync(System.IO.Stream,System.IO.Stream)">
            <summary>
            Performs asynchronously the actual encryption of the <paramref name="dataStream"/> and writing into the <paramref name="cryptoStream"/>.
            Also gives opportunity to the inheritors to modify the actual encryption process.
            </summary>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <param name="dataStream">The data stream.</param>
            <param name="cryptoStream">The crypto stream.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either <paramref name="cryptoStream"/> or <paramref name="dataStream"/> are <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when either <paramref name="dataStream"/> cannot be read or the <paramref name="cryptoStream"/> cannot be written.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.BeforeReadDecryptedAsync(System.IO.Stream)">
            <summary>
            Allows the inheritors to read asynchronously some unencrypted information from the <paramref name="encryptedStream"/>,
            e.g. here the cipher reads and sets the initialization vector in the symmetric cipher.
            </summary>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> object.</returns>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="encryptedStream"/> cannot be read.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.DoDecryptAsync(System.IO.Stream,System.IO.Stream)">
            <summary>
            Performs asynchronously the actual decryption of the crypto-text from the package and writes it into the <paramref name="dataStream"/>.
            Also gives opportunity to the inheritors to modify the actual decryption process.
            </summary>
            <remarks>
            The method is called by the GoF template-methods.
            </remarks>
            <param name="cryptoStream">The crypto stream.</param>
            <param name="dataStream">The data stream.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either <paramref name="cryptoStream"/> or <paramref name="dataStream"/> are <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when either <paramref name="dataStream"/> cannot be written or the <paramref name="cryptoStream"/> cannot be read.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.Dispose(System.Boolean)">
            <summary>
            Performs the actual job of disposing the object.
            </summary>
            <param name="disposing">
            Passes the information whether this method is called by <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.Dispose(System.Boolean)"/> (explicitly or
            implicitly at the end of a <c>using</c> statement), or by the <see cref="M:~SymmetricCipher"/>.
            </param>
            <remarks>
            If the method is called with <paramref name="disposing"/><c>==true</c>, i.e. from <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.Dispose(System.Boolean)"/>, it will try to release all managed resources
            (usually aggregated objects which implement <see cref="T:System.IDisposable"/> as well) and then it will release all unmanaged resources if any.
            If the parameter is <c>false</c> then the method will only try to release the unmanaged resources.
            </remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.ReleaseCertificate">
            <summary>
            Releases the asymmetric keys. By doing so the instance looses its <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement" /> behavior but the memory footprint becomes much lighter.
            The asymmetric keys can be dropped only if the underlying symmetric algorithm instance is already initialized and
            the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ShouldEncryptIV" /> is <see langword="false" />.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            If the underlying symmetric algorithm instance is not initialized yet or the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ShouldEncryptIV" /> is <see langword="false" />.
            </exception>
            See also <seealso cref="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.CloneLightCipher"/>.
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher.CloneLightCipher">
            <summary>
            Creates a new, lightweight <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher"/> instance and copies certain characteristics of this instance to it.
            A duplicate can be created only if the underlying symmetric algorithm instance is already initialized and the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ShouldEncryptIV"/> is <see langword="false"/>.
            The duplicate can be used only for encryption and decryption of data (the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.ICipher"/> and <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.ICipherTasks"/> behavior). The <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement"/> behavior is disabled and
            calling any of its members would throw <see cref="T:System.InvalidOperationException"/>.
            </summary>
            <returns>The duplicate.</returns>
            <exception cref="T:System.InvalidOperationException">
            If the underlying symmetric algorithm instance is not initialized yet or the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ShouldEncryptIV" /> is <see langword="false" />.
            </exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher">
            <summary>
            Class <c>EncryptedNewKeyCipher</c> is a symmetric cipher. A symmetric key is generated for each document and saved encrypted inside the crypto-package.
            </summary>
            <remarks>
            <para>
            By default the cipher uses the <see cref="T:System.Security.Cryptography.AesCryptoServiceProvider"/> with default parameters.
            </para><para>
            The cipher can be used for protecting data in motion where the sender has access to the public key and
            the receiver owns the private key. It can be used also to encrypt data at rest, e.g. stored in a database, file, etc.
            </para><para>
            The asymmetric key can be stored in a:
            <list type="bullet">
                <item>key container, in which case the class will locate the key container using an implementation of <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyLocationStrategy"/></item>
                <item>or the sender of the crypto-package can use a public key stored in a public certificate which corresponds to
                      a private certificate owned by the receiver. The private certificate stores the private key too.</item>
            </list>
            </para><para>
            The encrypted symmetric key is stored inside the crypto-package.
            </para><para>
            Note that this cipher generates a new symmetric key for each package and performs slower than the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher"/>.
            Which cipher to use is a matter of compromise. <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher"/>
            encrypts and stores or retrieves and decrypts a single symmetric key once per the life time of the cipher and uses it for each protected document.
            However the file containing the encrypted symmetric key needs to be managed separately and if compromised - all encrypted documents will be compromised too.
            </para><para>
            Since the key does not need management - the key is stored encrypted in the crypto package - it disables the inherited members of <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement"/> by returning
            constant trivial values (<see langword="null"/> or <see langword="false"/>).
            </para><para>
            Crypto package contents:
                <list type="number">
                    <item><description>Length of the encrypted symmetric key (serialized Int32) - 4 bytes.</description></item>
                    <item><description>The bytes of the encrypted symmetric key.</description></item>
                    <item><description>Length of the encrypted symmetric initialization vector (serialized Int32) - 4 bytes.</description></item>
                    <item><description>The bytes of the encrypted initialization vector.</description></item>
                    <item><description>The bytes of the encrypted text.</description></item>
                </list>
            </para><para>
            The cipher can also be used to encrypt elements of or entire XML documents.
            </para>
            </remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.#ctor(System.Security.Cryptography.X509Certificates.X509Certificate2,System.String,vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher" /> class.
            </summary>
            <param name="certificate">
            The certificate containing the public and optionally the private encryption keys. Cannot be <see langword="null"/>.
            </param>
            <param name="symmetricAlgorithmName">
            The name of the symmetric algorithm implementation. You can use any of the constants from <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric" /> or even
            <see langword="null" />, empty or whitespace characters only - these will default to <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Default" />.
            </param>
            <param name="symmetricAlgorithmFactory">
            The symmetric algorithm factory. If <see langword="null" /> the constructor will create an instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.SymmetricAlgorithmFactory" />,
            which uses the <see cref="M:System.Security.Cryptography.SymmetricAlgorithm.Create(System.String)" /> method from the .NET library.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when the <paramref name="certificate"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.KeyLocation">
            <summary>
            Gets the determined store location name (e.g. path and filename).
            </summary>
            <exception cref="T:System.NotImplementedException">Always thrown.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.ImportSymmetricKey(System.Byte[])">
            <summary>
            Imports the clear text of a symmetric key.
            </summary>
            <param name="key">The key.</param>
            <exception cref="T:System.NotImplementedException">Always thrown.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.ExportSymmetricKey">
            <summary>
            Exports the clear text of the symmetric key.
            </summary>
            <exception cref="T:System.NotImplementedException">Always thrown.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.ImportSymmetricKeyAsync(System.Byte[])">
            <summary>
            Asynchronously imports the symmetric key as a clear text.
            </summary>
            <param name="key">The key.</param>
            <exception cref="T:System.NotImplementedException">Always thrown.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.ExportSymmetricKeyAsync">
            <summary>
            Asynchronously exports the symmetric key as a clear text.
            </summary>
            <exception cref="T:System.NotImplementedException">Always thrown.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.InitializeSymmetricKey">
            <summary>
            Initializes the symmetric key by either reading it from the storage with the specified key location name or by
            generating a new key and saving it in it.
            </summary>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.InitializeSymmetricKeyAsync">
            <summary>
            Initializes asynchronously the symmetric key by either reading it from the storage with the specified key location name or by
            generating a new key and saving it in it.
            </summary>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.BeforeWriteEncrypted(System.IO.Stream)">
            <summary>
            Allows the inheritors to write some unencrypted information to the
            <paramref name="encryptedStream" />
            before the encrypted text, e.g. here the cipher writes encrypted key's length and the encrypted key itself.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream" /> is <see langword="null" />.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="encryptedStream" /> cannot be written to.</exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.BeforeReadDecrypted(System.IO.Stream)">
            <summary>
            Allows the inheritors to read some unencrypted information from the
            <paramref name="encryptedStream" />,
            e.g. here the cipher reads, decrypts and sets the the symmetric key.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="encryptedStream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when
            <list type="bullet">
                <item>The input stream <paramref name="encryptedStream"/> cannot be read; or</item>
                <item>The input stream <paramref name="encryptedStream"/> does not represent valid encrypted data; or</item>
            </list>
            </exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.BeforeWriteEncryptedAsync(System.IO.Stream)">
            <summary>
            Allows the inheritors to write asynchronously some unencrypted information to the
            <paramref name="encryptedStream" />
            before the encrypted text, e.g. here the cipher writes encrypted key's length and the encrypted key itself.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object representing the process.
            </returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream" /> is <see langword="null" />.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="encryptedStream" /> cannot be written to.</exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.BeforeReadDecryptedAsync(System.IO.Stream)">
            <summary>
            Allows the inheritors to read asynchronously some unencrypted information from the
            <paramref name="encryptedStream" />,
            e.g. here the cipher reads, decrypts and sets the the symmetric key.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="encryptedStream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when
            <list type="bullet">
                <item>The input stream <paramref name="encryptedStream"/> cannot be read; or</item>
                <item>The input stream <paramref name="encryptedStream"/> does not represent valid encrypted data; or</item>
            </list>
            </exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.CloneLightCipher">
            <summary>
            Throws <see cref="T:System.NotSupportedException"/>.
            </summary>
            <returns></returns>
            <exception cref="T:System.NotSupportedException">Always.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher.ReleaseCertificate">
            <summary>
            Throws <see cref="T:System.NotSupportedException"/>.
            </summary>
            <returns></returns>
            <exception cref="T:System.NotSupportedException">Always.</exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher">
            <summary>
            Class <c>EncryptedNewKeyHashedCipher</c> adds a cryptographic hash to the crypto package.
            <remarks>
            <para>
            The asymmetric key is stored in a key container with a name specified by the caller or by a certificate containing the public
            and possibly the private key.
            </para><para>
            By default the cipher uses the <see cref="T:System.Security.Cryptography.SHA256Cng"/> algorithm implementation for hashing.
            </para><para>
            By default the cipher uses the <see cref="T:System.Security.Cryptography.AesCryptoServiceProvider"/> with default parameters.
            This can be changed by reconfiguring the Unity container and injecting any of the other symmetric ciphers.
            Reconfiguration of the container allows also to change the parameters of the symmetric cipher in use.
            </para><para>
            Crypto package contents:
                <list type="number">
                    <item><description>Length of the encrypted hash (serialized Int32) - 4 bytes. Must be equal to the hash algorithm's hash size divided by 8.</description></item>
                    <item><description>The bytes of the encrypted hash.</description></item>
                    <item><description>Length of the encrypted symmetric key (serialized Int32) - 4 bytes.</description></item>
                    <item><description>The bytes of the encrypted symmetric key.</description></item>
                    <item><description>Length of the symmetric initialization vector (serialized Int32) - 4 bytes. Must be equal to the symmetric block size divided by 8.</description></item>
                    <item><description>The bytes of the initialization vector.</description></item>
                    <item><description>The bytes of the encrypted text.</description></item>
                </list>
            </para><para>
            The cipher can also be used to encrypt elements of or entire XML documents, however it does not add hash to the encrypted XML document.
            There is no XML standard for hashing. Or in other words with regards to XML documents this cipher is equivalent to <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher"/>.
            If integrity of the XML document is a requirement, please use <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeySignedCipher"/>.
            </para>
            </remarks>
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher._hashAlgorithmFactory">
            <summary>
            Caches the hash algorithm factory
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher._hasher">
            <summary>
            The hasher responsible for generating the hash - temporary, created before and disposed after each crypto-operation.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher._hash">
            <summary>
            Temporarily stores the hash to validate.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher._shouldEncryptHash">
            <summary>
            Indicates whether the cipher should encrypt the hash too.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.#ctor(System.Security.Cryptography.X509Certificates.X509Certificate2,System.String,System.String,vm.Aspects.Security.Cryptography.Ciphers.IHashAlgorithmFactory,vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher" /> class.
            </summary>
            <param name="certificate">
            The certificate containing the public and optionally the private encryption keys. Cannot be <see langword="null" />.
            </param>
            <param name="symmetricAlgorithmName">
            The name of the symmetric algorithm implementation. You can use any of the constants from <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric" /> or
            <see langword="null" />, empty or whitespace characters only - these will default to <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Default" />.
            </param>
            <param name="hashAlgorithmName">
            The name of the hash algorithm. By default the cipher will pick the algorithm from the <paramref name="certificate"/> but the caller
            may choose to use lower length signature key, e.g. the certificate may be for SHA256 but the caller may override that to SHA1.
            </param>
            <param name="hashAlgorithmFactory">
            The hash algorithm factory.
            If <see langword="null" /> the constructor will create an instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.HashAlgorithmFactory" />,
            which uses the <see cref="M:System.Security.Cryptography.HashAlgorithm.Create(System.String)" /> method from the .NET library.
            </param>
            <param name="symmetricAlgorithmFactory">
            The symmetric algorithm factory.
            If <see langword="null" /> the constructor will create an instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.SymmetricAlgorithmFactory" />,
            which uses the <see cref="M:System.Security.Cryptography.SymmetricAlgorithm.Create(System.String)" /> method from the .NET library.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when the <paramref name="certificate" /> is <see langword="null" />.
            </exception>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.HashAlgorithmName">
            <summary>
            Gets the name of the hash algorithm.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.Hasher">
            <summary>
            Gets the hasher.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.ShouldEncryptHash">
            <summary>
            Gets a value indicating whether the cipher should encrypt the hash too.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.Base64Encoded">
            <summary>
            Gets or sets a value indicating whether the encrypted texts are or should be Base64 encoded.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            If you try to set the property to <see langword="true"/> it will always throw the exception.
            This cipher does not support Base64 transformation as it requires the encrypted stream to be seek-able.
            You can perform Base64 encoding on the output/input outside of the cipher.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.Encrypt(System.IO.Stream,System.IO.Stream)">
            <summary>
            Reads the clear text from the <paramref name="dataStream" /> encrypts it and writes the result into the <paramref name="encryptedStream" />
            stream. This is the reverse method of <see cref="M:Decrypt(System.Stream, System.Stream)" />.
            </summary>
            <param name="dataStream">The unencrypted input stream.</param>
            <param name="encryptedStream">The output stream where to write the crypto package which will contain the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector. This cipher requires that the encrypted stream is seek-able.</param>
            <exception cref="T:System.ArgumentException">The encrypted stream must be seek-able.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.Decrypt(System.IO.Stream,System.IO.Stream)">
            <summary>
            Reads and decrypts the <paramref name="encryptedStream" /> stream and writes the clear text into the <paramref name="dataStream" /> stream.
            This is the reverse method of <see cref="M:Encrypt(System.Stream, System.Stream)" />.
            </summary>
            <param name="encryptedStream">The input crypto package stream which contains the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc. This cipher requires that the encrypted stream is seek-able.</param>
            <param name="dataStream">The output stream where to put the unencrypted data.</param>
            <exception cref="T:System.ArgumentException">The encrypted stream must be seek-able.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.InitializeHasher(System.String,vm.Aspects.Security.Cryptography.Ciphers.IHashAlgorithmFactory)">
            <summary>
            Initializes the hasher.
            </summary>
            <param name="hashAlgorithmName">The hash algorithm.</param>
            <param name="hashAlgorithmFactory">The hash algorithm factory.</param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.BeforeWriteEncrypted(System.IO.Stream)">
            <summary>
            Allows the inheritors to write some unencrypted information to the
            <paramref name="encryptedStream" />
            before the encrypted text, e.g. here the cipher reserves space in the beginning of the package for the hash.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the encrypted stream <paramref name="encryptedStream"/> cannot be written to.</exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.ReserveSpaceForHash(System.IO.Stream)">
            <summary>
            Reserves the space for hash.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">encryptedStream</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.CreateEncryptingStream(System.IO.Stream)">
            <summary>
            Creates the encrypting stream and gives an opportunity to the inheritors to modify the creation of the crypto-stream,
            e.g. here it wraps the crypto-stream created by the base class with another crypto-stream that computes the hash of the unencrypted document.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <returns>The created CryptoStream.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream" /> is <see langword="null" />.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="encryptedStream" /> cannot be written to.</exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.AfterWriteEncrypted(System.IO.Stream,System.Security.Cryptography.CryptoStream)">
            <summary>
            Gives an opportunity to the inheritors to write more unencrypted information to the
            <paramref name="encryptedStream" />, e.g. here it adds the hash to the <paramref name="encryptedStream" />.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <param name="cryptoStream">The crypto stream.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream" /> or <paramref name="cryptoStream" /> are <see langword="null" />.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="encryptedStream" /> cannot be written to.</exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.WriteHashInReservedSpace(System.IO.Stream,System.Byte[])">
            <summary>
            Writes the hash in the reserved space.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <param name="hash">The hash.</param>
            <exception cref="T:System.ArgumentNullException">encryptedStream</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.CreateDecryptingStream(System.IO.Stream)">
            <summary>
            Creates the decrypting stream and gives an opportunity to the inheritors to modify the creation of the crypto-stream,
            e.g. here it wraps the crypto-stream created in the base class with another crypto-stream that computes the hash of the unencrypted text.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <returns>The created CryptoStream.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream" /> is <see langword="null" />.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="encryptedStream" /> cannot be written to.</exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.BeforeReadDecrypted(System.IO.Stream)">
            <summary>
            Allows the inheritors to read some unencrypted information from the
            <paramref name="encryptedStream" />,
            e.g. here the cipher reads, and stores temporarily the hash.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream" /> is <see langword="null" />.</exception>
            <exception cref="T:System.ArgumentException">
            The input data does not represent a valid crypto package.
            </exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.LoadHashToValidate(System.IO.Stream)">
            <summary>
            Loads the hash to validate.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">encryptedStream</exception>
            <exception cref="T:System.ArgumentException">
            The input data does not represent a valid crypto package: could not read the length of the hash.
            or
            The input data does not represent a valid crypto package: could not read the hash.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.AfterReadDecrypted(System.IO.Stream,System.Security.Cryptography.CryptoStream)">
            <summary>
            Gives an opportunity to the inheritors to read more unencrypted information from the
            <paramref name="encryptedStream" /> or perform other activities, e.g. here it verifies the signature or the hash of the
            <paramref name="encryptedStream" />.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <param name="cryptoStream">The crypto stream.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream" /> or <paramref name="cryptoStream" /> are <see langword="null" />.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the <paramref name="encryptedStream" /> cannot be read.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the original and the computed hashes do not match.</exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.FinalizeHashAfterWrite(System.IO.Stream,System.Security.Cryptography.CryptoStream)">
            <summary>
            Finalizes the hash after write.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <param name="cryptoStream">The crypto stream.</param>
            <returns>System.Byte[].</returns>
            <exception cref="T:System.ArgumentNullException">
            encryptedStream
            or
            cryptoStream
            </exception>
            <exception cref="T:System.ArgumentException">The encrypted stream cannot be written.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.FinalizeHashAfterRead(System.IO.Stream,System.Security.Cryptography.CryptoStream)">
            <summary>
            Finalizes the hash after read.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <param name="cryptoStream">The crypto stream.</param>
            <returns>System.Byte[].</returns>
            <exception cref="T:System.ArgumentNullException">
            encryptedStream
            or
            cryptoStream
            </exception>
            <exception cref="T:System.ArgumentException">The encrypted stream cannot be read.;encryptedStream</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.EncryptAsync(System.IO.Stream,System.IO.Stream)">
            <summary>
            Asynchronously reads the clear text from the <paramref name="dataStream" />, encrypts it and writes the result into the
            <paramref name="encryptedStream" /> stream. This is the reverse method of <see cref="M:DecryptAsync(System.Stream, System.Stream)" />.
            </summary>
            <param name="dataStream">The unencrypted input stream.</param>
            <param name="encryptedStream">The output stream where to write the crypto package which will contain the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc. This cipher requires that the encrypted stream is seek-able.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task" /> object which represents the process of asynchronous encryption.</returns>
            <exception cref="T:System.ArgumentException">The encrypted stream must be seek-able.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.DecryptAsync(System.IO.Stream,System.IO.Stream)">
            <summary>
            Asynchronously reads and decrypts the <paramref name="encryptedStream" /> stream and writes the clear text into the
            <paramref name="dataStream" /> stream. This is the reverse method of <see cref="M:EncryptAsync(System.Stream, System.Stream)" />.
            </summary>
            <param name="encryptedStream">The input crypto package stream which contains the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc. This cipher requires that the encrypted stream is seek-able.</param>
            <param name="dataStream">The output stream where to put the unencrypted data.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task" /> object which represents the process of asynchronous decryption.</returns>
            <exception cref="T:System.ArgumentException">The encrypted stream must be seek-able.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.BeforeWriteEncryptedAsync(System.IO.Stream)">
            <summary>
            Allows the inheritors to write asynchronously some unencrypted information to the
            <paramref name="encryptedStream" />
            before the encrypted text, e.g. here the cipher reserves space in the beginning of the package for the hash.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object representing the process.
            </returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the encrypted stream <paramref name="encryptedStream"/> cannot be written to.</exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.BeforeReadDecryptedAsync(System.IO.Stream)">
            <summary>
            Allows the inheritors to read asynchronously some unencrypted information from the
            <paramref name="encryptedStream" />,
            e.g. here the cipher reads, and stores temporarily the hash.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="encryptedStream" /> is <see langword="null" />.</exception>
            <exception cref="T:System.ArgumentException">
            The input data does not represent a valid crypto package.
            </exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.LoadHashToValidateAsync(System.IO.Stream)">
            <summary>
            Loads asynchronously the hash to validate.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">encryptedStream</exception>
            <exception cref="T:System.ArgumentException">
            The input data does not represent a valid crypto package: could not read the length of the hash.
            or
            The input data does not represent a valid crypto package: could not read the hash.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher.Dispose(System.Boolean)">
            <summary>
            Releases unmanaged and - optionally - managed resources.
            </summary>
            <param name="disposing">
            <see langword="true"/> to release both managed and unmanaged resources; <see langword="false"/> to release only unmanaged resources.
            </param>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeySignedCipher">
            <summary>
            Class <c>EncryptedNewKeySignedCipher</c> is similar to <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyHashedCipher"/>.
            For document integrity it adds a cryptographic signature to the crypto package.
            <remarks>
            <para>
            The asymmetric key is stored in a key container with a name specified by the caller or by a certificate containing the public
            and possibly the private key.
            </para><para>
            By default the cipher uses the <see cref="T:System.Security.Cryptography.SHA256Cng"/> algorithm implementation for hashing.
            </para><para>
            By default the cipher uses the <see cref="T:System.Security.Cryptography.AesCryptoServiceProvider"/> with default parameters.
            This can be changed by reconfiguring the Unity container and injecting any of the other symmetric ciphers.
            Reconfiguration of the container allows also to change the parameters of the symmetric cipher in use.
            </para><para>
            Crypto package contents:
                <list type="number">
                    <item><description>Length of the signature (serialized Int32) - 4 bytes.</description></item>
                    <item><description>The bytes of the signature.</description></item>
                    <item><description>Length of the encrypted symmetric key (serialized Int32) - 4 bytes.</description></item>
                    <item><description>The bytes of the encrypted symmetric key.</description></item>
                    <item><description>Length of the symmetric initialization vector (serialized Int32) - 4 bytes. Must be equal to the symmetric block size divided by 8.</description></item>
                    <item><description>The bytes of the initialization vector.</description></item>
                    <item><description>The bytes of the encrypted text.</description></item>
                </list>
            </para>
            </remarks>
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeySignedCipher._asymmetric">
            <summary>
            The signer which implements the asymmetric algorithm for encrypting the hash.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeySignedCipher._signature">
            <summary>
            Temporary stores the read signature from the crypto-package before verifying it.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeySignedCipher.Asymmetric">
            <summary>
            Gets the signer which implements the asymmetric algorithm for encrypting the hash.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeySignedCipher.#ctor(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Certificate2,System.String,System.String,vm.Aspects.Security.Cryptography.Ciphers.IHashAlgorithmFactory,vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher" /> class.
            </summary>
            <param name="exchangeCertificate">
            The certificate containing the public and optionally the private keys for encrypting the symmetric key. Cannot be <see langword="null"/>.
            </param>
            <param name="signCertificate">
            The certificate containing the public and optionally the private keys for encrypting the hash - signing. Cannot be <see langword="null"/>.
            </param>
            <param name="symmetricAlgorithmName">
            The name of the symmetric algorithm implementation. You can use any of the constants from <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric" /> or
            <see langword="null" />, empty or whitespace characters only - these will default to <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Default" />.
            </param>
            <param name="hashAlgorithmName">
            The name of the hash algorithm. By default the cipher will pick the algorithm from the <paramref name="signCertificate"/> but the caller
            may choose to use lower length signature key, e.g. the certificate may be for SHA256 but the caller may override that to SHA1.
            </param>
            <param name="hashAlgorithmFactory">
            The hash algorithm factory.
            If <see langword="null" /> the constructor will create an instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.HashAlgorithmFactory" />,
            which uses the <see cref="M:System.Security.Cryptography.HashAlgorithm.Create(System.String)" /> method from the .NET library.
            </param>
            <param name="symmetricAlgorithmFactory">
            The symmetric algorithm factory.
            If <see langword="null" /> the constructor will create an instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.SymmetricAlgorithmFactory" />,
            which uses the <see cref="M:System.Security.Cryptography.SymmetricAlgorithm.Create(System.String)" /> method from the .NET library.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either the <paramref name="exchangeCertificate" /> or the <paramref name="signCertificate" /> is <see langword="null" />.
            </exception>
            <remarks>
            Note that for XML signing the cipher supports only SHA1 and SHA256.
            </remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeySignedCipher.ReserveSpaceForHash(System.IO.Stream)">
            <summary>
            Reserves the space for the hash (the signature here).
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">encryptedStream</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeySignedCipher.WriteHashInReservedSpace(System.IO.Stream,System.Byte[])">
            <summary>
            Writes the signature in the reserved space.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <param name="hash">The hash.</param>
            <exception cref="T:System.ArgumentNullException">encryptedStream</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeySignedCipher.LoadHashToValidate(System.IO.Stream)">
            <summary>
            Loads the signature to validate.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">encryptedStream</exception>
            <exception cref="T:System.ArgumentException">
            The input data does not represent a valid crypto package: could not read the length of the signature.
            or
            The input data does not represent a valid crypto package: could not read the signature.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeySignedCipher.AfterReadDecrypted(System.IO.Stream,System.Security.Cryptography.CryptoStream)">
            <summary>
            Gives an opportunity to the inheritors to read more unencrypted information from the
            <paramref name="encryptedStream" /> or perform other activities, e.g. here it verifies the signature or the hash of the
            <paramref name="encryptedStream" />.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <param name="cryptoStream">The crypto stream.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Invalid signature.</exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeySignedCipher.LoadHashToValidateAsync(System.IO.Stream)">
            <summary>
            Loads asynchronously the signature to validate.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">encryptedStream</exception>
            <exception cref="T:System.ArgumentException">
            The input data does not represent a valid crypto package: could not read the length of the signature.
            or
            The input data does not represent a valid crypto package: could not read the signature.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeySignedCipher.Dispose(System.Boolean)">
            <summary>
            Releases unmanaged and - optionally - managed resources.
            </summary>
            <param name="disposing"><see langword="true" /> to release both managed and unmanaged resources; <see langword="false" /> to release only unmanaged resources.</param>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.FromByteArray">
            <summary>
            Class FromByteArray contains a number of functions which convert byte arrays to various data types.
            Utility class that can be used in the IHasher and ICipher extension methods.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.FromByteArray.ToTypedData">
            <summary>
            Dictionary of types and the corresponding methods that can decrypt those types.
            </summary>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.Hasher">
            <summary>
            The class <c>Hasher</c> computes and verifies the cryptographic hash of data for maintaining its integrity.
            </summary>
            <remarks>
            <para>
            Crypto package contents:
                <list type="number">
                    <item><description>If the salt length is greater than 0, the bytes of the salt.</description></item>
                    <item><description>The bytes of the hash.</description></item>
                </list>
            </para>
            </remarks>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Hasher.MinSaltLength">
            <summary>
            The minimum salt length if not 0 - 8.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Hasher.DefaultSaltLength">
            <summary>
            The default salt length - 8.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Hasher._hashAlgorithm">
            <summary>
            The underlying hash algorithm.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Hasher._saltLength">
            <summary>
            The salt length.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.#ctor(System.Int32,System.String,vm.Aspects.Security.Cryptography.Ciphers.IHashAlgorithmFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Hasher" /> class.
            </summary>
            <param name="saltLength">
            The length of the salt. The default length is <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Hasher.DefaultSaltLength" /> bytes.
            Can be 0 or greater than or equal to <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Hasher.DefaultSaltLength" />.
            </param>
            <param name="hashAlgorithmName">
            The hash algorithm name. You can use any of the constants from <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash" /> or
            <see langword="null" />, empty or whitespace characters only - it will default to <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash.Default" />.
            </param>
            <param name="hashAlgorithmFactory">
            The hash algorithm factory.
            </param>
            <exception cref="T:System.ArgumentException">
            The salt length should be either 0 or not less than 8 bytes. - saltLength
            </exception>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Hasher.HashAlgorithmName">
            <summary>
            Gets the name of the hash algorithm.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Hasher.ShouldSalt">
            <summary>
            Gets a value indicating whether the hash should be salted.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Hasher.SaltLength">
            <summary>
            Gets or sets the length of the salt in bytes. If set to 0 salt will not be applied to the hash; otherwise the length must be equal or greater than <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Hasher.DefaultSaltLength"/>.
            </summary>
            <value>The length of the salt.</value>
            <exception cref="T:System.ArgumentException">The <paramref name="value"/> must be either 0 or at least <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Hasher.DefaultSaltLength"/> bytes.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.Hash(System.IO.Stream)">
            <summary>
            Computes the hash of a <paramref name="dataStream" /> stream.
            </summary>
            <param name="dataStream">The data stream.</param>
            <returns>
            The hash of the stream optionally prepended with the generated salt or <see langword="null"/> if <paramref name="dataStream"/> is <see langword="null"/>.
            </returns>
            <exception cref="T:System.ArgumentException">The data stream cannot be read.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.TryVerifyHash(System.IO.Stream,System.Byte[])">
            <summary>
            Verifies that the <paramref name="hash" /> of a <paramref name="dataStream" /> is correct.
            </summary>
            <param name="dataStream">The data stream.</param>
            <param name="hash">The hash to verify, optionally prepended with salt.</param>
            <returns>
            <see langword="true" /> if <paramref name="hash" /> is correct or <paramref name="hash" /> and <paramref name="dataStream"/> are both <see langword="null"/>,
            otherwise <see langword="false" />.
            </returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hash"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the hash has an invalid size.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.Hash(System.Byte[])">
            <summary>
            Computes the hash of a specified <paramref name="data" />.
            </summary>
            <param name="data">The data to be hashed.</param>
            <returns>The hash of the <paramref name="data" /> optionally prepended with the generated salt or <see langword="null" /> if <paramref name="data" /> is <see langword="null" />.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.TryVerifyHash(System.Byte[],System.Byte[])">
            <summary>
            Verifies the hash of the specified <paramref name="data" />.
            </summary>
            <param name="data">The data which hash needs to be verified.</param>
            <param name="hash">The hash with optionally prepended salt to be verified.</param>
            <returns>
            <see langword="true" /> if the hash is correct or <paramref name="hash" /> and <paramref name="data"/> are both <see langword="null"/>, otherwise <see langword="false" />.
            </returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hash"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the hash is invalid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.HashAsync(System.IO.Stream)">
            <summary>
            Computes the hash of a <paramref name="dataStream" /> stream.
            </summary>
            <param name="dataStream">The data stream.</param>
            <returns>
            The hash of the stream optionally prepended with the generated salt or <see langword="null"/> if <paramref name="dataStream"/> is <see langword="null"/>.
            </returns>
            <exception cref="T:System.ArgumentException">The data stream cannot be read.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.TryVerifyHashAsync(System.IO.Stream,System.Byte[])">
            <summary>
            Verifies that the <paramref name="hash" /> of a <paramref name="dataStream" /> is correct.
            </summary>
            <param name="dataStream">The data stream.</param>
            <param name="hash">The hash to verify, optionally prepended with salt.</param>
            <returns>
            <see langword="true" /> if <paramref name="hash" /> is correct or <paramref name="hash" /> and <paramref name="dataStream"/> are both <see langword="null"/>,
            otherwise <see langword="false" />.
            </returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hash"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the hash has an invalid size.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.CreateHashStream">
            <summary>
            Creates the crypto stream.
            </summary>
            <returns>CryptoStream.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.WriteSalt(System.Security.Cryptography.CryptoStream,System.Byte[])">
            <summary>
            Writes the salt (if any) into the crypto stream.
            </summary>
            <param name="hashStream">The hash stream.</param>
            <param name="salt">The salt.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hashStream"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.FinalizeHashing(System.Security.Cryptography.CryptoStream,System.Byte[])">
            <summary>
            Finalizes the hashing.
            </summary>
            <param name="hashStream">The hash stream.</param>
            <param name="salt">The salt.</param>
            <returns>The hash.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hashStream" /> is <see langword="null" />.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.WriteSaltAsync(System.Security.Cryptography.CryptoStream,System.Byte[])">
            <summary>
            Writes the salt (if any) into the crypto stream.
            </summary>
            <param name="hashStream">The hash stream.</param>
            <param name="salt">The salt.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hashStream"/> is <see langword="null"/>.</exception>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.Hasher._disposed">
            <summary>
            The flag will be set just before the object is disposed.
            </summary>
            <value>0 - if the object is not disposed yet, any other value - the object is already disposed.</value>
            <remarks>
            Do not test or manipulate this flag outside of the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.Hasher.IsDisposed"/> or the method <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.Dispose"/>.
            The type of this field is Int32 so that it can be easily passed to the members of the class <see cref="T:System.Threading.Interlocked"/>.
            </remarks>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Hasher.IsDisposed">
            <summary>
            Returns <c>true</c> if the object has already been disposed, otherwise <c>false</c>.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
            <remarks>Invokes the protected virtual <see cref="M:Dispose(true)"/>.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.Dispose(System.Boolean)">
            <summary>
            Performs the actual job of disposing the object.
            </summary>
            <param name="disposing">
            Passes the information whether this method is called by <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.Dispose"/> (explicitly or
            implicitly at the end of a <c>using</c> statement), or by the <see cref="M:~Hasher"/>.
            </param>
            <remarks>
            If the method is called with <paramref name="disposing"/><c>==true</c>, i.e. from <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.Hasher.Dispose"/>,
            it will try to release all managed resources (usually aggregated objects which implement <see cref="T:System.IDisposable"/> as well)
            and then it will release all unmanaged resources if any. If the parameter is <c>false</c> then
            the method will only try to release the unmanaged resources.
            </remarks>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.ICipher">
            <summary>
            The interface <c>ICipher</c> defines the behavior of objects which are configured according to some cryptographic scheme and
            have the responsibility to protect data for confidentiality; and optionally integrity and authentication with encryption,
            crypto-hashing and signing.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.ICipher.Base64Encoded">
            <summary>
            Gets or sets a value indicating whether the encrypted texts are or should be Base64 encoded.
            The encrypted outputs or expected inputs are series of bytes - 1 byte ASCII characters.
            Note that the ciphers, which include a hash or a signature, do not support Base64 encoding and will
            throw <see cref="T:System.InvalidOperationException"/> if you try to set the property.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipher.Encrypt(System.IO.Stream,System.IO.Stream)">
            <summary>
            Reads the clear text from the <paramref name="dataStream"/> encrypts it and writes the result into the <paramref name="encryptedStream"/>
            stream. This is the reverse method of <see cref="M:ICipherAsync.Decrypt(System.Stream, System.Stream)"/>.
            </summary>
            <param name="dataStream">
            The unencrypted input stream.
            </param>
            <param name="encryptedStream">
            The output stream where to write the crypto package which will contain the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either <paramref name="dataStream"/> or <paramref name="encryptedStream"/> are <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when either <paramref name="dataStream"/> cannot be read or
            <paramref name="encryptedStream"/> cannot be written to.
            </exception>
            <exception cref="T:System.Security.CryptographicException">
            The encryption failed.
            </exception>
            <exception cref="T:System.IO.IOException">
            An I/O error occurred.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipher.Decrypt(System.IO.Stream,System.IO.Stream)">
            <summary>
            Reads and decrypts the <paramref name="encryptedStream"/> stream and writes the clear text into the <paramref name="dataStream"/> stream.
            This is the reverse method of <see cref="M:ICipherAsync.Encrypt(System.Stream, System.Stream)"/>.
            </summary>
            <param name="encryptedStream">
            The input crypto package stream which contains the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            </param>
            <param name="dataStream">
            The output stream where to put the unencrypted data.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either <paramref name="encryptedStream"/> or <paramref name="dataStream"/> are <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when either <paramref name="dataStream"/> cannot be written to or
            <paramref name="encryptedStream"/> cannot be read from.
            </exception>
            <exception cref="T:System.Security.CryptographicException">
            The decryption failed.
            </exception>
            <exception cref="T:System.IO.IOException">
            An I/O error occurred.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipher.Encrypt(System.Byte[])">
            <summary>
            Encrypts the specified <paramref name="data"/>. This is the reverse method of <see cref="M:ICipherAsync.Decrypt(byte[])"/>.
            </summary>
            <param name="data">
            The data to be encrypted.
            </param>
            <returns>
            The bytes of the crypto package which contains the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            Or returns <see langword="null"/> if <paramref name="data"/> is <see langword="null"/>.
            </returns>
            <exception cref="T:System.Security.CryptographicException">
            The encryption failed.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipher.Decrypt(System.Byte[])">
            <summary>
            Decrypts the specified <paramref name="encryptedData"/>.
            This is the reverse method of <see cref="M:ICipherAsync.Encrypt(byte[])"/>.
            </summary>
            <param name="encryptedData">
            The bytes of the crypto package which contains the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            If <paramref name="encryptedData"/> is <see langword="null"/> the method returns <see langword="null"/>.
            </param>
            <returns>
            The decrypted <paramref name="encryptedData"/> or <see langword="null"/> if <paramref name="encryptedData"/> is <see langword="null"/>.
            </returns>
            <exception cref="T:System.Security.CryptographicException">
            The encryption failed.
            </exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions">
            <summary>
            Class ICipherExtensions contains extension methods for <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.ICipherTasks"/> objects.
            </summary>
            <summary>
            Class ICipherExtensions contains extension methods for <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.ICipherTasks"/> objects.
            </summary>
            <summary>
            Class ICipherExtensions contains extension methods for <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.ICipherTasks"/> objects.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Boolean)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptBoolean(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.Boolean"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Boolean[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptBooleanArray(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.Boolean"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Char)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptChar(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.Char"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Char[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptCharArray(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.Char"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.SByte)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptSByte(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.SByte"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">If <paramref name="encrypted"/> does not represent a valid encrypted <see cref="T:System.SByte"/> value.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.SByte[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptSByteArray(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.SByte"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptByte(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.Byte"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">If <paramref name="encrypted"/> does not represent a valid encrypted <see cref="T:System.Byte"/> value.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Int16)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptInt16(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.Int16"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Int16[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptInt16Array(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.Int16"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.UInt16)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptUInt16(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.UInt16"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.UInt16[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptUInt16Array(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.UInt16"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.DateTime)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptDateTime(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.DateTime"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.DateTime[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptDateTimeArray(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.DateTime"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Decimal)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptDecimal(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.Decimal"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Decimal[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptDecimalArray(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.Decimal"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.String)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptString(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encryptedText"/> to a string, provided the original string was encoded with <see cref="T:System.Text.Encoding.UTF8"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encryptedText">The crypto text.</param>
            <returns>The decrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.EncryptText64(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.String)">
            <summary>
            Encrypts the <paramref name="text"/> and encodes the result with Base64.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="text">The text.</param>
            <returns>The encrypted text encoded Base64.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptText64(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.String)">
            <summary>
            Decrypts the <paramref name="encryptedText64"/> to a string, provided the crypto text was encoded with Base64.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encryptedText64">The crypto text encoded Base64.</param>
            <returns>The decrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.EncryptText(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.String)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The text.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptText(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encryptedText"/> to a string, provided the original string was encoded with <see cref="T:System.Text.Encoding.UTF8"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encryptedText">The crypto text.</param>
            <returns>The decrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Guid)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptGuid(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.Decimal"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Guid[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptGuidArray(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.Guid"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.EncryptNullable``1(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Nullable{``0})">
            <summary>
            Encrypts the <paramref name="data"/> with the specified <paramref name="cipher"/>.
            </summary>
            <typeparam name="T">The type of the data to be encrypted.</typeparam>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted data.</returns>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.EncryptTypedData">
            <summary>
            Dictionary of types and the corresponding methods that can decrypt those types.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Object,System.Type)">
            <summary>
            Encrypts the <paramref name="data"/> with the <paramref name="cipher"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data.</param>
            <param name="dataType">Type of the data.</param>
            <returns>The encrypted data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt``1(vm.Aspects.Security.Cryptography.Ciphers.ICipher,``0)">
            <summary>
            Encrypts the <paramref name="data"/> with the <paramref name="cipher"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data.</param>
            <returns>The encrypted data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptNullable``1(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> data with the <paramref name="cipher"/>.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted.</param>
            <returns>T.</returns>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptTypedData">
            <summary>
            Dictionary of types and the corresponding methods that can decrypt those types.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Decrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[],System.Type)">
            <summary>
            Decrypts the <paramref name="encrypted" /> data with the <paramref name="cipher" />.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted data.</param>
            <param name="dataType">Type of the encrypted data.</param>
            <returns>T.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Decrypt``1(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> data with the <paramref name="cipher"/>.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted.</param>
            <returns>T.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.EncryptData64(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Encrypts the array of bytes <paramref name="data"/> and encodes the result with Base64.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text encoded Base64.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptData64(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.String)">
            <summary>
            Decrypts the string <paramref name="encryptedData64"/> to an array of bytes, provided the crypto text was encoded with Byte64.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encryptedData64">The crypto text encoded Base64.</param>
            <returns>The decrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Int32)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptInt32(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.Int32"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Int32[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptInt32Array(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.Int32"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.UInt32)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptUInt32(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.UInt32"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.UInt32[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptUInt32Array(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.UInt32"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Int64)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptInt64(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.Int64"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Int64[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptInt64Array(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.Int64"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.UInt64)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptUInt64(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.UInt64"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.UInt64[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptUInt64Array(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.UInt64"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Single)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptSingle(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.Single"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Single[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptSingleArray(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.Single"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Double)">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptDouble(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> text to a <see cref="T:System.Double"/> value.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The encrypted text.</param>
            <returns>The decrypted value.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> or <paramref name="encrypted"/> are <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.Encrypt(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Double[])">
            <summary>
            Encrypts the <paramref name="data"/>.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="data">The data to be encrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherExtensions.DecryptDoubleArray(vm.Aspects.Security.Cryptography.Ciphers.ICipher,System.Byte[])">
            <summary>
            Decrypts the <paramref name="encrypted"/> to an array of <see cref="T:System.Double"/> values.
            </summary>
            <param name="cipher">The cipher.</param>
            <param name="encrypted">The data to be decrypted.</param>
            <returns>The encrypted text.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="cipher"/> is <see langword="null"/>.</exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.ICipherTasks">
            <summary>
            The interface <c>ICipherAsync</c> extends the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.ICipherTasks"/> interface with asynchronous versions of
            its <see cref="T:System.IO.Stream"/> related methods.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherTasks.EncryptAsync(System.IO.Stream,System.IO.Stream)">
            <summary>
            Asynchronously reads the clear text from the <paramref name="dataStream"/>, encrypts it and writes the result into the
            <paramref name="encryptedStream"/> stream. This is the reverse method of <see cref="M:ICipherAsync.DecryptAsync(System.Stream, System.Stream)"/>.
            </summary>
            <param name="dataStream">
            The unencrypted input stream.
            </param>
            <param name="encryptedStream">
            The output stream where to write the crypto package which will contain the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            </param>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object which represents the process of asynchronous encryption.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either <paramref name="dataStream"/> or <paramref name="encryptedStream"/> are <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when either <paramref name="dataStream"/> cannot be read or
            <paramref name="encryptedStream"/> cannot be written to.
            </exception>
            <exception cref="T:System.Security.CryptographicException">
            The encryption failed.
            </exception>
            <exception cref="T:System.IO.IOException">
            An I/O error occurred.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ICipherTasks.DecryptAsync(System.IO.Stream,System.IO.Stream)">
            <summary>
            Asynchronously reads and decrypts the <paramref name="encryptedStream"/> stream and writes the clear text into the
            <paramref name="dataStream"/> stream. This is the reverse method of <see cref="M:ICipherAsync.EncryptAsync(System.Stream, System.Stream)"/>.
            </summary>
            <param name="encryptedStream">
            The input crypto package stream which contains the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            </param>
            <param name="dataStream">
            The output stream where to put the unencrypted data.
            </param>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object which represents the process of asynchronous decryption.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown when either <paramref name="encryptedStream"/> or <paramref name="dataStream"/> are <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when either <paramref name="dataStream"/> cannot be written to or
            <paramref name="encryptedStream"/> cannot be read from.
            </exception>
            <exception cref="T:System.Security.CryptographicException">
            The decryption failed.
            </exception>
            <exception cref="T:System.IO.IOException">
            An I/O error occurred.
            </exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.IHashAlgorithmFactory">
            <summary>
            Interface <c>IHashAlgorithmFactory</c> defines the behavior of an object factory which creates
            the underlying <see cref="T:System.Security.Cryptography.HashAlgorithm"/> objects. The factory must implement a strategy for picking the
            hash algorithm given choices like, parameters, default values, etc.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHashAlgorithmFactory.Initialize(System.String)">
            <summary>
            Initializes the factory with an optional hash algorithm name.
            Possibly implements the resolution strategy and initializes the factory with the appropriate values.
            </summary>
            <param name="hashAlgorithmName">Name of the hash algorithm.</param>
            <returns>IHashAlgorithmFactory - usually the current instance. Appropriate for method chaining.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHashAlgorithmFactory.Create">
            <summary>
            Creates a <see cref="T:System.Security.Cryptography.HashAlgorithm"/> instance.
            </summary>
            <returns><see cref="T:System.Security.Cryptography.HashAlgorithm"/> instance.</returns>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.IHashAlgorithmFactory.HashAlgorithmName">
            <summary>
            Gets the name of the hash algorithm.
            </summary>
            <value>The name of the hash algorithm.</value>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.IHasher">
            <summary>
            The interface <c>IHasher</c> defines the behavior of objects which are configured according to some cryptographic scheme and
            have the responsibility to protect data for integrity, and possibly authentication by generating cryptographically strong hashes and signatures.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.IHasher.SaltLength">
            <summary>
            Gets or sets the length of the salt in bytes. If set to 0 salt will not be applied to the hash.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasher.Hash(System.IO.Stream)">
            <summary>
            Computes the hash of the <paramref name="dataStream" />.
            </summary>
            <param name="dataStream">
            The data stream to compute the hash of.
            </param>
            <returns>
            The hash of the stream, optionally prepended with the generated salt.
            If <paramref name="dataStream" /> is <see langword="null" /> returns <see langword="null" />.
            </returns>
            <exception cref="T:System.ArgumentException">
            Thrown when <paramref name="dataStream"/> cannot be read.
            </exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">
            The hash or the encryption failed.
            </exception>
            <exception cref="T:System.IO.IOException">
            An I/O error occurred.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasher.TryVerifyHash(System.IO.Stream,System.Byte[])">
            <summary>
            Verifies that the <paramref name="hash"/> of a <paramref name="dataStream" /> is correct.
            </summary>
            <param name="dataStream">The data stream.</param>
            <param name="hash">The hash to verify, optionally prepended with the salt.</param>
            <returns>
            <see langword="true"/> if <paramref name="hash"/> is correct or if both <paramref name="dataStream" /> and <paramref name="hash"/> are <see langword="null" />,
            otherwise <see langword="false"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="dataStream" /> is not <see langword="null" /> and <paramref name="hash"/> is <see langword="null" />.
            </exception>
            <exception cref="T:System.ArgumentException">Thrown if <paramref name="hash"/> has invalid length.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">The hash or the encryption failed.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasher.Hash(System.Byte[])">
            <summary>
            Computes the hash of a specified <paramref name="data"/>.
            </summary>
            <param name="data">The data to be hashed.</param>
            <returns>
            The hash of the <paramref name="data"/>, optionally prepended with the generated salt.
            If <paramref name="data" /> is <see langword="null" /> returns <see langword="null" />.
            </returns>
            <exception cref="T:System.Security.Cryptography.CryptographicException">The hash or the encryption failed.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasher.TryVerifyHash(System.Byte[],System.Byte[])">
            <summary>
            Verifies the hash of the specified <paramref name="data" />.
            </summary>
            <param name="data">The data which hash needs to be verified.</param>
            <param name="hash">The hash to be verified, optionally prepended with the salt.</param>
            <returns>
            <see langword="true" /> if the hash is correct or if both <paramref name="data" /> and <paramref name="hash"/> are <see langword="null" />, otherwise <see langword="false" />.
            </returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hash"/> is <see langword="null" /> and <paramref name="data" /> is not.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">The hash or the encryption failed.</exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions">
            <summary>
            Class IHasherExtensions contains extension methods for <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IHasher"/> objects.
            </summary>
            <summary>
            Class IHasherExtensions contains extension methods for <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IHasher"/> objects.
            </summary>
            <summary>
            Class IHasherExtensions contains extension methods for <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IHasher"/> objects.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Boolean)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Boolean,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Boolean,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Boolean[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Boolean[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Boolean[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Char)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Char,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Char,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Char[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Char[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Char[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Byte)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Byte,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Byte,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.SByte)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.SByte,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.SByte,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.SByte[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.SByte[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.SByte[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int16)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int16,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int16,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int16[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int16[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int16[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt16)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt16,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt16,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt16[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt16[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt16[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Byte[],System.Byte[])">
            <summary>
            Verifies that the <paramref name="hash" /> of a <paramref name="data" /> is correct.
            If it is not, the method throws <see cref="T:System.Security.Cryptography.CryptographicException" />.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <param name="hash">The hash to verify with (optionally) appended the generated salt.</param>
            <exception cref="T:System.ArgumentNullException">Thrown if <paramref name="hasher"/> is <see langword="null" />.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.IO.Stream,System.Byte[])">
            <summary>
            Verifies that the <paramref name="hash" /> of a <paramref name="dataStream" /> is correct.
            If it is not, the method throws <see cref="T:System.Security.Cryptography.CryptographicException" />.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="dataStream">The data stream.</param>
            <param name="hash">The hash to verify with (optionally) appended the generated salt.</param>
            <exception cref="T:System.ArgumentNullException">Thrown if <paramref name="hasher"/> is <see langword="null" />.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.HashText(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.String)">
            <summary>
            Generates hash of the specified text.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="text">The text.</param>
            <returns>The generated hash.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hasher"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">The hash or the encryption failed.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHashText(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.String,System.Byte[])">
            <summary>
            Verifies that the <paramref name="hash" /> of a <paramref name="text" /> is correct.
            If it is not, the method throws <see cref="T:System.Security.Cryptography.CryptographicException" />.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="text">The text.</param>
            <param name="hash">The hash to verify with (optionally) appended the generated salt.</param>
            <exception cref="T:System.ArgumentNullException">Thrown if <paramref name="hasher"/> is <see langword="null" />.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyTextHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.String,System.Byte[])">
            <summary>
            Verifies that the <paramref name="hash" /> of a <paramref name="text" /> is correct.
            If it is not, the method throws <see cref="T:System.Security.Cryptography.CryptographicException" />.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="text">The text.</param>
            <param name="hash">The hash to verify with (optionally) appended the generated salt.</param>
            <exception cref="T:System.ArgumentNullException">Thrown if <paramref name="hasher"/> is <see langword="null" />.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.HashDataBase64(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Byte[])">
            <summary>
            Generates hash of the specified data and encode is in Base64.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The generated Base64 encoded hash.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hasher" /> is <see langword="null" />.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">The hash or the encryption failed.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHashBase64(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Byte[],System.String)">
            <summary>
            Verifies that the Base64 encoded <paramref name="hash64" /> of a <paramref name="data" /> is correct.
            If it is not, the method throws <see cref="T:System.Security.Cryptography.CryptographicException" />.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <param name="hash64">The Base64 encoded hash to verify with (optionally) appended the generated salt.</param>
            <exception cref="T:System.ArgumentNullException">Thrown if <paramref name="hasher"/> is <see langword="null" />.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyTextHashBase64(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.String,System.String)">
            <summary>
            Verifies that the Base64 encoded <paramref name="hash64" /> of a <paramref name="text" /> is correct.
            If it is not, the method throws <see cref="T:System.Security.Cryptography.CryptographicException" />.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="text">The text.</param>
            <param name="hash64">The Base64 encoded hash to verify with (optionally) appended the generated salt.</param>
            <exception cref="T:System.ArgumentNullException">Thrown if <paramref name="hasher"/> is <see langword="null" />.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHashBase64(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.IO.Stream,System.String)">
            <summary>
            Verifies that the Base64 encoded <paramref name="hash64" /> of a <paramref name="dataStream" /> is correct.
            If it is not, the method throws <see cref="T:System.Security.Cryptography.CryptographicException" />.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="dataStream">The data stream.</param>
            <param name="hash64">The hash to verify with (optionally) appended the generated salt.</param>
            <exception cref="T:System.ArgumentNullException">Thrown if <paramref name="hasher"/> is <see langword="null" />.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.String)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.String,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.String,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.DateTime)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.DateTime,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.DateTime,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.DateTime[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.DateTime[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.DateTime[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Guid)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Guid,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Guid,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Guid[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Guid[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Guid[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int32)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int32,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int32,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int32[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int32[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int32[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt32)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt32,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt32,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt32[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt32[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt32[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int64)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int64,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int64,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int64[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int64[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Int64[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt64)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt64,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt64,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt64[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt64[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.UInt64[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Single)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Single,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Single,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Single[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Single[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Single[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Double)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Double,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Double,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Double[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Double[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Double[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Decimal)">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Decimal,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Decimal,System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.Hash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Decimal[])">
            <summary>
            Hashes the specified <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data.</param>
            <returns>The hash value as a byte array.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.TryVerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Decimal[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <returns><c>true</c> if the hash has a value that was produced rom the <paramref name="data"/>; <c>false</c> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherExtensions.VerifyHash(vm.Aspects.Security.Cryptography.Ciphers.IHasher,System.Decimal[],System.Byte[])">
            <summary>
            Verifies that the passed <paramref name="hash"/> was produced from the same <paramref name="data"/>.
            </summary>
            <param name="hasher">The hasher.</param>
            <param name="data">The data, which hash must be verified.</param>
            <param name="hash">The hash to be tested.</param>
            <exception cref="T:System.Security.Cryptography.CryptographicException">Thrown when the hash is not valid.</exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.IHasherTasks">
            <summary>
            Interface <c>IHasherAsync</c> extends <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IHasher"/> with
            asynchronous versions of its <see cref="T:System.IO.Stream"/> related methods.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherTasks.HashAsync(System.IO.Stream)">
            <summary>
            Computes the hash of the <paramref name="dataStream" /> asynchronously.
            </summary>
            <param name="dataStream">
            The data stream to compute the hash of.
            </param>
            <returns>
            A <see cref="T:Task{byte[]}"/> object representing the hashing process and the end result -
            a hash of the stream, optionally prepended with the generated salt.
            If <paramref name="dataStream" /> is <see langword="null" /> returns <see langword="null" />.
            </returns>
            <exception cref="T:System.ArgumentException">
            Thrown when <paramref name="dataStream"/> cannot be read.
            </exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">
            The hash or the encryption failed.
            </exception>
            <exception cref="T:System.IO.IOException">
            An I/O error occurred.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IHasherTasks.TryVerifyHashAsync(System.IO.Stream,System.Byte[])">
            <summary>
            Asynchronously verifies that the <paramref name="hash"/> of a <paramref name="dataStream" /> is correct.
            </summary>
            <param name="dataStream">The data stream.</param>
            <param name="hash">The hash to verify, optionally prepended with the salt.</param>
            <returns>
            A <see cref="T:Task{bool}"/> object representing the process and the verification result:
            <see langword="true"/>
            if <paramref name="hash"/> is correct or if both <paramref name="dataStream" /> and <paramref name="hash"/> are <see langword="null" />,
            otherwise <see langword="false"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="dataStream" /> is not <see langword="null" /> and <paramref name="hash"/> is <see langword="null" />.
            </exception>
            <exception cref="T:System.ArgumentException">Thrown if <paramref name="hash"/> has invalid length.</exception>
            <exception cref="T:System.Security.Cryptography.CryptographicException">The hash or the encryption failed.</exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyLocationStrategy">
            <summary>
            The objects implementing this interface provide a strategy for determining the encryption key location name
            (e.g. paths and filenames) from a logical name (e.g. key name stored by a configuration provider).
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyLocationStrategy.GetKeyLocation(System.String)">
            <summary>
            Executes the key location strategy and returns the key's location name
            as it would be understood by an associated <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorage"/> instance.
            </summary>
            <param name="keyLocation">
            The logical key location.
            </param>
            <returns>
            The key's location name, as it would be understood by an associated <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorage"/> instance.
            </returns>
            <remarks>
            Possible strategies might be:
                <list type="bullet">
                    <item>
                    simply the <paramref name="keyLocation"/>, if it is not <see langword="null"/>, empty or string consisting of whitespace characters only; or
                    </item><item>
                    the value specified in the <c>appSettings</c> section of the application's configuration file with key <c>symmetricKeyLocation</c>, if it exists; or
                    </item><item>
                    the path and name of the entry assembly with appended suffix ".KEY", e.g. "MyApp.exe.KEY" or
                    </item><item>
                    the key access name in an HSM; etc.
                    </item>
                </list>
            </remarks>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement">
            <summary>
            The interface IKeyManagement defines the behavior of managing the encryption key(s) used by the ciphers.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement.KeyLocation">
            <summary>
            Gets the physical storage location name of a symmetric key as it would be understood by the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorageTasks"/>,
            e.g. the path and filename of a file.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement.ExportSymmetricKey">
            <summary>
            Exports the symmetric key as a clear text from the implementing instance.
            If the key is not loaded yet by the implementing instance, the method may access an associated <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorage"/> to retrieve it.
            </summary>
            <returns>Array of bytes of the symmetric key or <see langword="null"/> if the cipher does not have a symmetric key.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement.ImportSymmetricKey(System.Byte[])">
            <summary>
            Imports the symmetric key as a clear text into the implementing instance.
            The method may access an associated <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorage"/> to store the key.
            </summary>
            <param name="key">The key.</param>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagementTasks">
            <summary>
            The interface IKeyManagement defines the behavior of managing the encryption key(s) used by the ciphers.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagementTasks.KeyLocation">
            <summary>
            Gets the physical storage location name of a symmetric key as it would be understood by the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorageTasks"/>,
            e.g. the path and filename of a file.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagementTasks.ExportSymmetricKeyAsync">
            <summary>
            Asynchronously exports the symmetric key as a clear text.
            </summary>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object representing the process of asynchronously exporting the symmetric key including the result -
            array of bytes of the symmetric key or <see langword="null"/> if the cipher does not have a symmetric key.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagementTasks.ImportSymmetricKeyAsync(System.Byte[])">
            <summary>
            Asynchronously imports the symmetric key as a clear text.
            </summary>
            <param name="key">The key.</param>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object representing the process of asynchronously importing the symmetric key.
            </returns>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorage">
            <summary>
            The interface <c>IKeyStorage</c> defines the operations for storing or retrieving the encrypted symmetric keys
            to and from a storage with the given key location name, e.g. from a file with the given path and filename.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorage.KeyLocationExists(System.String)">
            <summary>
            Tests whether the key's storage location name exists.
            </summary>
            <param name="keyLocation">The key location.</param>
            <returns><see langword="true"/> if the location exists, otherwise <see langword="false"/>.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorage.PutKey(System.Byte[],System.String)">
            <summary>
            Puts the key to the storage with the specified location name.
            </summary>
            <param name="key">The key.</param>
            <param name="keyLocation">The key location.</param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorage.GetKey(System.String)">
            <summary>
            Gets the key from the storage with the specified location name.
            </summary>
            <param name="keyLocation">The key location name.</param>
            <returns>The encrypted symmetric key.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorage.DeleteKeyLocation(System.String)">
            <summary>
            Deletes the storage with the specified location name.
            </summary>
            <param name="keyLocation">The key location name to be deleted.</param>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorageTasks">
            <summary>
            The interface <c>IKeyStorageTasks</c> extends <c>IKeyStorage</c> with asynchronous versions of the methods
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorageTasks.KeyLocationExistsAsync(System.String)">
            <summary>
            Tests whether the key's storage location name exists.
            </summary>
            <param name="keyLocation">The key location.</param>
            <returns><see langword="true"/> if the location exists, otherwise <see langword="false"/>.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorageTasks.PutKeyAsync(System.Byte[],System.String)">
            <summary>
            Asynchronously puts the key to the storage with the specified location name.
            </summary>
            <param name="key">The key.</param>
            <param name="keyLocation">The key location.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> object representing the process of putting the encrypted symmetric key in the storage.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorageTasks.GetKeyAsync(System.String)">
            <summary>
            Asynchronously gets the key from the storage with the specified location name.
            </summary>
            <param name="keyLocation">The key location name.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> object representing the process of getting the encrypted symmetric key from the storage.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IKeyStorageTasks.DeleteKeyLocationAsync(System.String)">
            <summary>
            Deletes the storage with the specified location name.
            </summary>
            <param name="keyLocation">The key location name to be deleted.</param>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.ILightCipher">
            <summary>
            Interface ILightCipher defines a behavior where the implementing cipher drops certain composed data (e.g. public/private keys) and some associated functionality (e.g. IKeyManagement)
            and remains a pure cipher that is used for encryption/decryption only. This is useful when many ciphers need to be cached in memory for a long time.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ILightCipher.ReleaseCertificate">
            <summary>
            Releases the associated asymmetric keys. By doing so the instance looses its <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement" /> behavior but the memory footprint becomes much lighter.
            The certificate can be dropped only if the underlying symmetric algorithm instance is already initialized.
            </summary>
            <returns>The cipher.</returns>
            <exception cref="T:System.InvalidOperationException">
            If the underlying symmetric algorithm instance is not initialized yet or if the encryption/decryption functionality requires asymmetric encryption as well,
            e.g. encryption of the IV.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ILightCipher.CloneLightCipher">
            <summary>
            Creates a new, lightweight clone off of the current cipher and copies certain characteristics, e.g. the symmetric key of this instance to it.
            </summary>
            <returns>The clone.</returns>
            <exception cref="T:System.InvalidOperationException">
            If the underlying symmetric algorithm instance is not initialized yet or if the encryption/decryption functionality requires asymmetric encryption as well,
            e.g. encryption of the IV.
            </exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.ILightHasher">
            <summary>
            Interface ILightHasher defines a behavior where the implementing hasher drops certain composed data (e.g. public/private keys) and some associated functionality (e.g. IKeyManagement)
            and remains a pure hasher that is used for hashing/hash verification only. This is useful when many ciphers need to be cached in memory for a long time.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ILightHasher.ReleaseCertificate">
            <summary>
            Releases the associated asymmetric keys. By doing so the instance looses its <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement" /> behavior but the memory footprint becomes much lighter.
            The certificate can be dropped only if the underlying symmetric algorithm instance is already initialized.
            </summary>
            <returns>The hasher.</returns>
            <exception cref="T:System.InvalidOperationException">
            If the underlying hash instance is not initialized yet or if the hashing/hash verification functionality requires asymmetric encryption as well, e.g. signing.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ILightHasher.CloneLightHasher">
            <summary>
            Creates a new, lightweight clone off of the current hasher and copies certain characteristics, e.g. the hashing key of this instance to it.
            </summary>
            <returns>The clone.</returns>
            <exception cref="T:System.InvalidOperationException">
            If the underlying hashing algorithm instance is not initialized yet or if the hashing/hash verification functionality requires asymmetric encryption, e.g. signing.
            </exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.IRandom">
            <summary>
            Represents cryptographically strong random number generators behavior.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.IRandom.GetBytes(System.Byte[])">
            <summary>
            Fills an array of bytes with a cryptographically strong sequence of random values.
            </summary>
            <param name="data">The array to fills with a cryptographically strong sequence of random bytes.</param>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory">
            <summary>
            Interface <c>ISymmetricAlgorithmFactory</c> defines the behavior of an object factory which creates
            the underlying <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric"/> objects. The factory must implement a strategy for picking the
            symmetric algorithm given choices like, parameters, default values, etc.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory.Initialize(System.String)">
            <summary>
            Initializes the factory with an optional symmetric algorithm name.
            Possibly implements the resolution strategy and initializes the factory with the appropriate values.
            </summary>
            <param name="symmetricAlgorithmName">Name of the symmetric algorithm.</param>
            <returns>The initialized instance implementing <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory"/>.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory.Create">
            <summary>
            Creates a <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric"/> instance.
            </summary>
            <returns><see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric"/> instance.</returns>
            <exception cref="T:System.Exception">
            If the factory could not resolve the symmetric algorithm.
            </exception>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory.SymmetricAlgorithmName">
            <summary>
            Gets the name of the symmetric algorithm.
            </summary>
            <value>The name of the symmetric algorithm.</value>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher">
            <summary>
            The class <c>KeyedHasher</c> computes and verifies the cryptographic hash of data for maintaining its integrity.
            </summary>
            <remarks>
            <para>
            Crypto package contents:
                <list type="number">
                    <item><description>The bytes of the hash.</description></item>
                </list>
            </para>
            </remarks>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher._publicKey">
            <summary>
            The public key used for encrypting the hash key.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher._privateKey">
            <summary>
            The private key used for decrypting the hash key.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher._hashAlgorithm">
            <summary>
            The underlying hash algorithm.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.KeyStorage">
            <summary>
            The object which is responsible for storing and retrieving the encrypted hash key
            to and from the store with the determined store location name (e.g file I/O).
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.#ctor(System.Security.Cryptography.X509Certificates.X509Certificate2,System.String,vm.Aspects.Security.Cryptography.Ciphers.IKeyLocationStrategy,vm.Aspects.Security.Cryptography.Ciphers.IKeyStorageTasks,System.String,vm.Aspects.Security.Cryptography.Ciphers.IHashAlgorithmFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher" /> class.
            </summary>
            <param name="certificate">
            The certificate containing the public and optionally the private key for encryption and decryption of the hash key.
            </param>
            <param name="keyLocation">
            Seeding name of store location name of the encrypted symmetric key (e.g. relative or absolute path).
            Can be <see langword="null" />, empty or whitespace characters only.
            The parameter will be passed to the <paramref name="keyLocationStrategy" /> to determine the final store location name path (e.g. relative or absolute path).
            </param>
            <param name="keyLocationStrategy">
            Object which implements the strategy for determining the store location name (e.g. path and filename) of the encrypted symmetric key.
            If <see langword="null" /> it defaults to a new instance of the class <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileLocationStrategy" />.
            </param>
            <param name="keyStorage">
            Object which implements the storing and retrieving of the the encrypted symmetric key to and from the store with the determined location name.
            If <see langword="null" /> it defaults to a new instance of the class <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.KeyFileStorage" />.
            </param>
            <param name="hashAlgorithmName">
            The keyed hash algorithm name. You can use any of the constants from <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyedHash" /> or
            <see langword="null" />, empty or whitespace characters only - it will default to <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.KeyedHash.Default" />.</param>
            <param name="hashAlgorithmFactory">The hash algorithm factory.</param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.#ctor(System.String,vm.Aspects.Security.Cryptography.Ciphers.IHashAlgorithmFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher"/> class.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.SaltLength">
            <summary>
            Gets or sets the length of the salt in bytes. Here it is not used and always returns 0.
            </summary>
            <value>0</value>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.Hash(System.IO.Stream)">
            <summary>
            Computes the hash of a <paramref name="dataStream" /> stream.
            </summary>
            <param name="dataStream">The data stream.</param>
            <returns>
            The hash of the stream optionally prepended with the generated salt or <see langword="null"/> if <paramref name="dataStream"/> is <see langword="null"/>.
            </returns>
            <exception cref="T:System.ArgumentException">The data stream cannot be read.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.TryVerifyHash(System.IO.Stream,System.Byte[])">
            <summary>
            Verifies that the <paramref name="hash" /> of a <paramref name="dataStream" /> is correct.
            </summary>
            <param name="dataStream">The data stream.</param>
            <param name="hash">The hash to verify, optionally prepended with salt.</param>
            <returns>
            <see langword="true" /> if <paramref name="hash" /> is correct or <paramref name="hash" /> and <paramref name="dataStream"/> are both <see langword="null"/>,
            otherwise <see langword="false" />.
            </returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hash"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the hash has an invalid size.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.Hash(System.Byte[])">
            <summary>
            Computes the hash of a specified <paramref name="data" />.
            </summary>
            <param name="data">The data to be hashed.</param>
            <returns>The hash of the <paramref name="data" /> optionally prepended with the generated salt or <see langword="null" /> if <paramref name="data" /> is <see langword="null" />.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.TryVerifyHash(System.Byte[],System.Byte[])">
            <summary>
            Verifies the hash of the specified <paramref name="data" />.
            </summary>
            <param name="data">The data which hash needs to be verified.</param>
            <param name="hash">The hash with optionally prepended salt to be verified.</param>
            <returns>
            <see langword="true" /> if the hash is correct or <paramref name="hash" /> and <paramref name="data"/> are both <see langword="null"/>, otherwise <see langword="false" />.
            </returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hash"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the hash is invalid.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.HashAsync(System.IO.Stream)">
            <summary>
            Computes the hash of a <paramref name="dataStream" /> stream.
            </summary>
            <param name="dataStream">The data stream.</param>
            <returns>
            The hash of the stream optionally prepended with the generated salt or <see langword="null"/> if <paramref name="dataStream"/> is <see langword="null"/>.
            </returns>
            <exception cref="T:System.ArgumentException">The data stream cannot be read.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.TryVerifyHashAsync(System.IO.Stream,System.Byte[])">
            <summary>
            Verifies that the <paramref name="hash" /> of a <paramref name="dataStream" /> is correct.
            </summary>
            <param name="dataStream">The data stream.</param>
            <param name="hash">The hash to verify, optionally prepended with salt.</param>
            <returns>
            <see langword="true" /> if <paramref name="hash" /> is correct or <paramref name="hash" /> and <paramref name="dataStream"/> are both <see langword="null"/>,
            otherwise <see langword="false" />.
            </returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hash"/> is <see langword="null"/>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the hash has an invalid size.</exception>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.KeyLocation">
            <summary>
            Gets the physical storage location name of a symmetric key, e.g. the path and filename of a file.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.ImportSymmetricKey(System.Byte[])">
            <summary>
            Imports the symmetric key as a clear text.
            </summary>
            <param name="key">The key.</param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.ExportSymmetricKey">
            <summary>
            Exports the symmetric key as a clear text.
            </summary>
            <returns>Array of bytes of the symmetric key or <see langword="null"/> if the cipher does not have a symmetric key.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.ImportSymmetricKeyAsync(System.Byte[])">
            <summary>
            Asynchronously imports the symmetric key as a clear text.
            </summary>
            <param name="key">The key.</param>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object representing the process of asynchronously importing the symmetric key.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.ExportSymmetricKeyAsync">
            <summary>
            Asynchronously exports the symmetric key as a clear text.
            </summary>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object representing the process of asynchronously exporting the symmetric key including the result -
            array of bytes of the symmetric key or <see langword="null"/> if the cipher does not have a symmetric key.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.ResolveKeyStorage(System.String,vm.Aspects.Security.Cryptography.Ciphers.IKeyLocationStrategy,vm.Aspects.Security.Cryptography.Ciphers.IKeyStorageTasks)">
            <summary>
            Initializes the hash key storage by executing the key location strategy.
            </summary>
            <param name="keyLocation">The name of the hash key location.</param>
            <param name="keyLocationStrategy">The hash key location strategy.</param>
            <param name="keyStorage">The hash key storage.</param>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.KeyedHash">
            <summary>
            Gets the keyed hash algorithm implementation.
            </summary>
            <value>The keyed hash.</value>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.InitializeHashKey">
            <summary>
            Initializes the asymmetric key.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.InitializeHashKeyAsync">
            <summary>
            Asynchronously initializes the asymmetric key.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.EncryptHashKey">
            <summary>
            Encrypts the hash key using the public key.
            </summary>
            <returns>The key bytes.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.DecryptHashKey(System.Byte[])">
            <summary>
            Decrypts the hash key using the private key.
            </summary>
            <param name="encryptedKey">The encrypted key.</param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.CreateHashStream(System.Security.Cryptography.HashAlgorithm)">
            <summary>
            Creates the crypto stream.
            </summary>
            <returns>CryptoStream.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.FinalizeHashing(System.Security.Cryptography.CryptoStream)">
            <summary>
            Finalizes the hashing.
            </summary>
            <param name="hashStream">The hash stream.</param>
            <returns>The hash.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="hashStream" /> is <see langword="null" />.</exception>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher._disposed">
            <summary>
            The flag will be set just before the object is disposed.
            </summary>
            <value>0 - if the object is not disposed yet, any other value - the object is already disposed.</value>
            <remarks>
            Do not test or manipulate this flag outside of the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.IsDisposed"/> or the method <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.Dispose"/>.
            The type of this field is Int32 so that it can be easily passed to the members of the class <see cref="T:System.Threading.Interlocked"/>.
            </remarks>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.IsDisposed">
            <summary>
            Returns <c>true</c> if the object has already been disposed, otherwise <c>false</c>.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
            <remarks>Invokes the protected virtual <see cref="M:Dispose(true)"/>.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.Dispose(System.Boolean)">
            <summary>
            Performs the actual job of disposing the object.
            </summary>
            <param name="disposing">
            Passes the information whether this method is called by <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.Dispose"/> (explicitly or
            implicitly at the end of a <c>using</c> statement), or by the <see cref="M:~Hasher"/>.
            </param>
            <remarks>
            If the method is called with <paramref name="disposing"/><c>==true</c>, i.e. from <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.Dispose"/>,
            it will try to release all managed resources (usually aggregated objects which implement <see cref="T:System.IDisposable"/> as well)
            and then it will release all unmanaged resources if any. If the parameter is <c>false</c> then
            the method will only try to release the unmanaged resources.
            </remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.ReleaseCertificate">
            <summary>
            Releases the associated asymmetric keys. By doing so the instance looses its <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement" /> behavior but the memory footprint becomes much lighter.
            The certificate can be dropped only if the underlying symmetric algorithm instance is already initialized.
            </summary>
            <returns>The hasher.</returns>
            <exception cref="T:System.InvalidOperationException">
            If the underlying hash instance is not initialized yet or if the hashing/hash verification functionality requires asymmetric encryption as well, e.g. signing.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.KeyedHasher.CloneLightHasher">
            <summary>
            Creates a new, lightweight clone off of the current hasher and copies certain characteristics, e.g. the hashing key of this instance to it.
            </summary>
            <returns>The clone.</returns>
            <exception cref="T:System.InvalidOperationException">
            If the underlying hashing algorithm instance is not initialized yet or if the hashing/hash verification functionality requires asymmetric encryption, e.g. signing.
            </exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.NullCipher">
            <summary>
            The class <c>NullCipher</c> is a development- and test-friendly convenience class which implements trivially the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.ICipherTasks"/> interface:
            copies the source data blindly into the output target.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.NullCipher.Base64Encoded">
            <summary>
            Gets or sets a value indicating whether the encrypted texts are or should be Base64 encoded.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullCipher.Encrypt(System.IO.Stream,System.IO.Stream)">
            <summary>
            Encrypts (here it just copies) the <paramref name="dataStream" /> stream into the <paramref name="encryptedStream" /> stream.
            This is the reverse method of <see cref="M:ICipherAsync.Decrypt(System.Stream, System.Stream)" />.
            </summary>
            <param name="dataStream">The unencrypted input stream.</param>
            <param name="encryptedStream">
            The output stream where to put the crypto package which will contain the encrypted data as well as some other crypto artifacts,
            e.g. initialization vector, hash, etc.
            </param>
            <exception cref="T:System.ArgumentNullException">
            dataStream
            or
            encryptedStream
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullCipher.Decrypt(System.IO.Stream,System.IO.Stream)">
            <summary>
            Decrypts (here it just copies) the <paramref name="encryptedStream" /> stream into the <paramref name="dataStream" /> stream.
            This is the reverse method of <see cref="M:ICipherAsync.Encrypt(System.Stream, System.Stream)" />.
            </summary>
            <param name="encryptedStream">
            The input crypto package stream which contains the encrypted data as well as some other crypto artifacts,
            e.g. initialization vector, hash, etc.
            </param>
            <param name="dataStream">The output stream where to put the unencrypted data.</param>
            <exception cref="T:System.ArgumentNullException">
            dataStream
            or
            encryptedStream
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullCipher.Encrypt(System.Byte[])">
            <summary>
            Encrypts (here it just copies) the specified <paramref name="data" />.
            This is the reverse method of <see cref="M:ICipherAsync.Decrypt(byte[])" />.
            </summary>
            <param name="data">The data to be encrypted.</param>
            <returns>The bytes of the crypto package which contains the encrypted data as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            Or returns <see langword="null" /> if <paramref name="data" /> is <see langword="null" />.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullCipher.Decrypt(System.Byte[])">
            <summary>
            Decrypts (here it just copies) the specified <paramref name="encryptedData" />.
            This is the reverse method of <see cref="M:ICipherAsync.Encrypt(byte[])" />.
            </summary>
            <param name="encryptedData">The bytes of the crypto package which contains the encrypted data as well as some other crypto artifacts, e.g. initialization vector, hash, etc.
            If <paramref name="encryptedData" /> is <see langword="null" /> the method returns <see langword="null" />.</param>
            <returns>The decrypted <paramref name="encryptedData" /> or <see langword="null" /> if <paramref name="encryptedData" /> is <see langword="null" />.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullCipher.EncryptAsync(System.IO.Stream,System.IO.Stream)">
            <summary>
            encrypt as an asynchronous operation.
            </summary>
            <param name="dataStream">The unencrypted input stream.</param>
            <param name="encryptedStream">The output stream where to write the crypto package which will contain the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task" /> object which represents the process of asynchronous encryption.</returns>
            <exception cref="T:System.ArgumentNullException">
            dataStream
            or
            encryptedStream
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullCipher.DecryptAsync(System.IO.Stream,System.IO.Stream)">
            <summary>
            decrypt as an asynchronous operation.
            </summary>
            <param name="encryptedStream">The input crypto package stream which contains the encrypted data
            as well as some other crypto artifacts, e.g. initialization vector, hash, etc.</param>
            <param name="dataStream">The output stream where to put the unencrypted data.</param>
            <returns>A <see cref="T:System.Threading.Tasks.Task" /> object which represents the process of asynchronous decryption.</returns>
            <exception cref="T:System.ArgumentNullException">
            dataStream
            or
            encryptedStream
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullCipher.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.NullHasher">
            <summary>
            The class NullHasher is a development and test-friendly convenience class which implements trivially the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IHasherTasks"/> interface:
            generates an empty array for hash and always verifies the hash to be correct.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullHasher.Hash(System.Byte[])">
            <summary>
            Computes the hash of a specified <paramref name="data" />.
            </summary>
            <param name="data">The data to be hashed.</param>
            <returns>
            If <paramref name="data" /> is <see langword="null" /> returns <see langword="null" />;
            otherwise always returns a 0-length byte array.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullHasher.Hash(System.IO.Stream)">
            <summary>
            Computes the hash of a <paramref name="dataStream" /> stream.
            </summary>
            <param name="dataStream">The data stream.</param>
            <returns>
            If <paramref name="dataStream" /> is <see langword="null" /> returns <see langword="null" />;
            otherwise always returns a 0-length byte array.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullHasher.TryVerifyHash(System.Byte[],System.Byte[])">
            <summary>
            Verifies the hash of the <paramref name="data" />.
            </summary>
            <param name="data">The data which hash needs to be verified.</param>
            <param name="hash">The hash to be verified optionally prepended with salt.</param>
            <returns>Always <see langword="true" />.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullHasher.TryVerifyHash(System.IO.Stream,System.Byte[])">
            <summary>
            Verifies the hash of the <paramref name="dataStream" />.
            </summary>
            <param name="dataStream">The data which hash needs to be verified.</param>
            <param name="hash">The hash to be verified optionally prepended with salt.</param>
            <returns>Always <see langword="true" />.</returns>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.NullHasher.SaltLength">
            <summary>
            Gets or sets the length of the salt in bytes. If set to 0 salt will not be applied to the hash.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullHasher.HashAsync(System.IO.Stream)">
            <summary>
            hash as an asynchronous operation.
            </summary>
            <param name="dataStream">The data stream to compute the hash of.</param>
            <returns>A <see cref="T:Task{byte[]}" /> object representing the hashing process and the end result -
            a hash of the stream, optionally prepended with the generated salt.
            If <paramref name="dataStream" /> is <see langword="null" /> returns <see langword="null" />.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullHasher.TryVerifyHashAsync(System.IO.Stream,System.Byte[])">
            <summary>
            try verify hash as an asynchronous operation.
            </summary>
            <param name="dataStream">The data stream.</param>
            <param name="hash">The hash to verify, optionally prepended with the salt.</param>
            <returns>A <see cref="T:Task{bool}" /> object representing the process and the verification result:
            <see langword="true" />
            if <paramref name="hash" /> is correct or if both <paramref name="dataStream" /> and <paramref name="hash" /> are <see langword="null" />,
            otherwise <see langword="false" />.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullHasher.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.NullStream">
            <summary>
            Class NullStream is exactly what you'd expect from a null stream: you read nothing and you write nothing but is useful to wrap in
            CryptoStream-s, e.g. for hashing.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.NullStream.CanRead">
            <summary>
            When overridden in a derived class, gets a value indicating whether the current stream supports reading.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.NullStream.CanWrite">
            <summary>
            When overridden in a derived class, gets a value indicating whether the current stream supports writing.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.NullStream.CanSeek">
            <summary>
            When overridden in a derived class, gets a value indicating whether the current stream supports seeking.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullStream.Flush">
            <summary>
            When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.NullStream.Length">
            <summary>
            When overridden in a derived class, gets the length in bytes of the stream.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.NullStream.Position">
            <summary>
            When overridden in a derived class, gets or sets the position within the current stream.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullStream.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
            </summary>
            <param name="buffer">An array of bytes. When this method returns, the buffer contains the specified byte array with the values between <paramref name="offset" /> and (<paramref name="offset" /> + <paramref name="count" /> - 1) replaced by the bytes read from the current source.</param>
            <param name="offset">The zero-based byte offset in <paramref name="buffer" /> at which to begin storing the data read from the current stream.</param>
            <param name="count">The maximum number of bytes to be read from the current stream.</param>
            <returns>The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullStream.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
            </summary>
            <param name="buffer">An array of bytes. This method copies <paramref name="count" /> bytes from <paramref name="buffer" /> to the current stream.</param>
            <param name="offset">The zero-based byte offset in <paramref name="buffer" /> at which to begin copying bytes to the current stream.</param>
            <param name="count">The number of bytes to be written to the current stream.</param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullStream.ReadAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)">
            <summary>
            Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.
            </summary>
            <param name="buffer">The buffer to write the data into.</param>
            <param name="offset">The byte offset in <paramref name="buffer" /> at which to begin writing data from the stream.</param>
            <param name="count">The maximum number of bytes to read.</param>
            <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
            <returns>A task that represents the asynchronous read operation. The value contains the total number of bytes read into the buffer. The result value can be less than the number of bytes requested if the number of bytes currently available is less than the requested number, or it can be 0 (zero) if the end of the stream has been reached.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullStream.WriteAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)">
            <summary>
            Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.
            </summary>
            <param name="buffer">The buffer to write data from.</param>
            <param name="offset">The zero-based byte offset in <paramref name="buffer" /> from which to begin copying bytes to the stream.</param>
            <param name="count">The maximum number of bytes to write.</param>
            <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
            <returns>A task that represents the asynchronous write operation.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullStream.CopyToAsync(System.IO.Stream,System.Int32,System.Threading.CancellationToken)">
            <summary>
            Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.
            </summary>
            <param name="destination">The stream to which the contents of the current stream will be copied.</param>
            <param name="bufferSize">The size, in bytes, of the buffer. This value must be greater than zero. The default size is 4096.</param>
            <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
            <returns>A task that represents the asynchronous copy operation.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullStream.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
            When overridden in a derived class, sets the position within the current stream.
            </summary>
            <param name="offset">A byte offset relative to the <paramref name="origin" /> parameter.</param>
            <param name="origin">A value of type <see cref="T:System.IO.SeekOrigin" /> indicating the reference point used to obtain the new position.</param>
            <returns>The new position within the current stream.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.NullStream.SetLength(System.Int64)">
            <summary>
            When overridden in a derived class, sets the length of the current stream.
            </summary>
            <param name="value">The desired length of the current stream in bytes.</param>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants">
            <summary>
            Class PasswordDerivationConstants defines several minimal and default constants for deriving byte arrays from (typically) passwords.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.MinNumberOfIterations">
            <summary>
            The minimum number of iterations - 1024.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.DefaultNumberOfIterations">
            <summary>
            The minimum and default number of iterations - 16384.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.MinHashLength">
            <summary>
            The minimum hash length in bytes - 24.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.DefaultHashLength">
            <summary>
            The default hash length in bytes - 64.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.MinSaltLength">
            <summary>
            The minimum salt length in bytes - 8.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.DefaultSaltLength">
            <summary>
            The default salt length in bytes - 24.
            </summary>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher">
            <summary>
            The class PasswordHasher is appropriate for hashing passwords because it is intentionally time consuming operation (with default number of iterations x100ms),
            making it impossible to attack with brute force methods.
            </summary>
            <remarks>
            <para>
            The hasher uses the the PBKDF2/HMAC/SHA1 in accordance to RFC 2898.
            </para>
            Crypto package:
            <list type="number">
                <item>The number of iterations (serialized Int32) - 4 bytes.</item>
                <item>The length of the salt (serialized Int32) - 4 bytes.</item>
                <item>The bytes of the salt.</item>
                <item>The length of the hash (serialized Int32) - 4 bytes.</item>
                <item>The bytes of the hash.</item>
            </list>
            </remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.#ctor(System.Int32,System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher" /> class.
            </summary>
            <param name="numberOfIterations">
            The number of iterations, the default value is <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.DefaultNumberOfIterations" />.
            The greater the iterations the more secure is the hash but is also slower.
            Should not be less than <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.DefaultNumberOfIterations" />.
            </param>
            <param name="hashLength">
            The length of the hash in bytes. The minimum and default length is <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.DefaultHashLength"/>.
            </param>
            <param name="saltLength">
            The length of the salt, the default value is <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.DefaultSaltLength" /> bytes.
            Must be at least <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.MinSaltLength" /> bytes.
            </param>
            <exception cref="T:System.ArgumentException">
            Thrown if
            <list type="bullet">
            <item>the <paramref name="numberOfIterations" /> is less than <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.MinNumberOfIterations" /> bytes; or</item>
            <item>the <paramref name="hashLength" /> is less than <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.DefaultHashLength" /> bytes; or</item>
            <item>the <paramref name="saltLength" /> is less than <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.MinSaltLength" /> bytes.</item>
            </list>
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.Hash(System.IO.Stream)">
            <summary>
            Computes the hash of a <paramref name="dataStream" /> stream.
            </summary>
            <param name="dataStream">The data stream.</param>
            <returns>
            The crypto package containing the hash. If <paramref name="dataStream" /> is <see langword="null" /> returns <see langword="null" />.
            </returns>
            <exception cref="T:System.IO.IOException">Unexpected number of bytes read from the data stream.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.TryVerifyHash(System.IO.Stream,System.Byte[])">
            <summary>
            Verifies that the <paramref name="hash" /> of a <paramref name="dataStream" /> is correct.
            </summary>
            <param name="dataStream">The data stream.</param>
            <param name="hash">The crypto package containing the hash to verify.</param>
            <returns>
            <see langword="true" /> if <paramref name="hash" /> is correct or if both <paramref name="dataStream" /> and <paramref name="hash" /> are <see langword="null" />,
            otherwise <see langword="false" />.
            </returns>
            <exception cref="T:System.IO.IOException">Unexpected number of bytes read from the data stream.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.HashAsync(System.IO.Stream)">
            <summary>
            hash as an asynchronous operation.
            </summary>
            <param name="dataStream">The data stream to compute the hash of.</param>
            <returns>A <see cref="T:Task{byte[]}" /> object representing the hashing process and the end result -
            a hash of the stream, optionally prepended with the generated salt.
            If <paramref name="dataStream" /> is <see langword="null" /> returns <see langword="null" />.</returns>
            <exception cref="T:System.IO.IOException">Unexpected number of bytes read from the data stream.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.TryVerifyHashAsync(System.IO.Stream,System.Byte[])">
            <summary>
            try verify hash as an asynchronous operation.
            </summary>
            <param name="dataStream">The data stream.</param>
            <param name="hash">The hash to verify, optionally prepended with the salt.</param>
            <returns>A <see cref="T:Task{bool}" /> object representing the process and the verification result:
            <see langword="true" />
            if <paramref name="hash" /> is correct or if both <paramref name="dataStream" /> and <paramref name="hash" /> are <see langword="null" />,
            otherwise <see langword="false" />.</returns>
            <exception cref="T:System.IO.IOException">Unexpected number of bytes read from the data stream.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.Hash(System.Byte[])">
            <summary>
            Computes the hash of a specified <paramref name="data" />.
            </summary>
            <param name="data">The data to be hashed.</param>
            <returns>The hash of the <paramref name="data" /> with optionally prepended generated salt or
            <see langword="null" /> if <paramref name="data" /> is <see langword="null" />.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.TryVerifyHash(System.Byte[],System.Byte[])">
            <summary>
            Verifies the hash of the specified <paramref name="data" />.
            </summary>
            <param name="data">The data which hash needs to be verified.</param>
            <param name="hash">The hash to be verified optionally prepended with salt.</param>
            <returns>
            <see langword="true" /> if the hash is correct or if both <paramref name="data" /> and <paramref name="hash" /> are <see langword="null" />,
            otherwise <see langword="false" />.
            </returns>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.SaltLength">
            <summary>
            Gets or sets the length of the salt in bytes.
            </summary>
            <exception cref="T:System.ArgumentException">value</exception>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.ShouldSalt">
            <summary>
            Gets or sets a value indicating whether this instance should "salt" the data before hashing it.
            This hasher ignores this property and always salts the hash.
            </summary>
            <value><c>true</c> if [should salt]; otherwise, <c>false</c>.</value>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher._disposed">
            <summary>
            The flag is being set when the object gets disposed.
            </summary>
            <value>0 - if the object is not disposed yet, any other value - the object is already disposed.</value>
            <remarks>
            Do not test or manipulate this flag outside of the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.IsDisposed"/> or the method <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.Dispose"/>.
            The type of this field is Int32 so that it can be easily passed to the members of the class <see cref="T:System.Threading.Interlocked"/>.
            </remarks>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.IsDisposed">
            <summary>
            Returns <c>true</c> if the object has already been disposed, otherwise <c>false</c>.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
            <remarks>Invokes the protected virtual <see cref="M:Dispose(true)"/>.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.Dispose(System.Boolean)">
            <summary>
            Performs the actual job of disposing the object.
            </summary>
            <param name="disposing">
            Passes the information whether this method is called by <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.Dispose"/> (explicitly or
            implicitly at the end of a <c>using</c> statement), or by the <see cref="M:~PasswordHasher()"/>.
            </param>
            <remarks>
            If the method is called with <paramref name="disposing"/><c>==true</c>, i.e. from <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordHasher.Dispose"/>, it will try to release all managed resources
            (usually aggregated objects which implement <see cref="T:System.IDisposable"/> as well) and then it will release all unmanaged resources if any.
            If the parameter is <c>false</c> then the method will only try to release the unmanaged resources.
            </remarks>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher">
            <summary>
            <para>
            Class <c>PasswordProtectedKeyCipher</c>. This cipher is suitable for encrypting data with symmetric keys derived from passwords.
            Internally the cipher uses the PBKDF2 method based on HMACSHA1 and specified in RFC2898 for deriving artifacts (e.g. keys)
            from passwords.
            </para><para>
            Please, note that the derivation process is intentionally slow in order to thwart brute force, dictionary attacks.
            The key is initialized only once from the password and the randomly generated or read from the first document salt bytes.
            After the initialization, for security reasons the password is discarded and the cipher object keeps using the key until it is
            disposed of or garbage-collected.
            </para><para>
            Crypto package contents:
                <list type="number">
                    <item>Length of the unencrypted salt bytes (serialized Int32) - 4 bytes.</item>
                    <item>The salt bytes.</item>
                    <item>Length of the unencrypted symmetric cipher initialization vector (serialized Int32) - 4 bytes.</item>
                    <item>The bytes of the unencrypted initialization vector.</item>
                    <item>The bytes of the encrypted text.</item>
                </list>
            </para>
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.ShouldEncryptIV">
            <summary>
            Flag indicating whether to encrypt the initialization vector. Always returns <see langword="false"/>
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.#ctor(System.String,System.Int32,System.Int32,System.String,vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher" /> class.
            </summary>
            <param name="password">
            The password to derive the symmetric key off of.
            </param>
            <param name="numberOfIterations">
            The number of iterations, the default value is <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.DefaultNumberOfIterations" />.
            The greater the iterations the more secure is the generated symmetric key but is also slower.
            Should not be less than <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.DefaultNumberOfIterations" />.
            </param>
            <param name="saltLength">
            The length of the salt, the default value is <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.DefaultSaltLength" /> bytes.
            Must be at least <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.MinSaltLength" /> bytes.
            </param>
            <param name="symmetricAlgorithmName">
            The name of the symmetric algorithm implementation. You can use any of the constants from <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric" /> or
            <see langword="null" />, empty or whitespace characters only - these will default to <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Default" />.
            </param>
            <param name="symmetricAlgorithmFactory">
            The symmetric algorithm factory. If <see langword="null" /> the constructor will create an instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.SymmetricAlgorithmFactory" />,
            which uses the <see cref="M:System.Security.Cryptography.SymmetricAlgorithm.Create(System.String)" /> method from the .NET library.
            </param>
            <exception cref="T:System.ArgumentException">
            Thrown if the <paramref name="password" /> is <see langword="null" />, empty or consist of whitespace characters only.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown if <list type="bullet">
            <item>the <paramref name="numberOfIterations" /> is less than <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.MinNumberOfIterations" /> bytes; or </item>
            <item>the <paramref name="saltLength" /> is less than <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordDerivationConstants.MinSaltLength" /> bytes.</item>
            </list>
            </exception>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.KeyLocation">
            <summary>
            Gets the determined store location name (e.g. path and filename).
            </summary>
            <exception cref="T:System.NotImplementedException">Always thrown.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.ImportSymmetricKey(System.Byte[])">
            <summary>
            Imports the clear text of a symmetric key.
            </summary>
            <param name="key">The key.</param>
            <exception cref="T:System.NotImplementedException">Always thrown.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.ExportSymmetricKey">
            <summary>
            Exports the clear text of the symmetric key.
            </summary>
            <exception cref="T:System.NotImplementedException">Always thrown.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.ImportSymmetricKeyAsync(System.Byte[])">
            <summary>
            Asynchronously imports the symmetric key as a clear text.
            </summary>
            <param name="key">The key.</param>
            <exception cref="T:System.NotImplementedException">Always thrown.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.ExportSymmetricKeyAsync">
            <summary>
            Asynchronously exports the symmetric key as a clear text.
            </summary>
            <exception cref="T:System.NotImplementedException">Always thrown.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.InitializeSymmetricKey">
            <summary>
            Here it just sets the flag <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.IsSymmetricKeyInitialized"/> to satisfy the contract.
            The real initialization can occur only when the first crypto operation really starts. If encrypting
            the key and the salt need to be generated. If decrypting the salt needs to read from the crypto package
            and passed-on to the key generation method <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.InitializeSymmetricKeyInternal(System.Boolean)"/>.
            </summary>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.InitializeSymmetricKeyAsync">
            <summary>
            If not yet initialized, the method initializes the symmetric key by deriving it from the password and generating new salt bytes.
            </summary>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.InitializeSymmetricKeyInternal(System.Boolean)">
            <summary>
            If not yet initialized, the method initializes the symmetric key by deriving it from the password and generating new salt bytes.
            </summary>
            <param name="generateSalt">if set to <see langword="true" /> the method will generate salt otherwise will reuse <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher._salt"/>.</param>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.EncryptSymmetricKey">
            <summary>
            Here it does nothing and always returns <see langword="null"/>.
            </summary>
            <returns><see langword="null"/></returns>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.DecryptSymmetricKey(System.Byte[])">
            <summary>
            Here it does nothing.
            </summary>
            <param name="encryptedKey">The encrypted key.</param>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.BeforeWriteEncrypted(System.IO.Stream)">
            <summary>
            Allows the inheritors to write some unencrypted information to the <paramref name="encryptedStream" />
            before the encrypted text, e.g. here the cipher writes the salt and the initialization vector.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">encryptedStream</exception>
            <exception cref="T:System.ArgumentException">The input stream cannot be written to.;encryptedStream</exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.BeforeReadDecrypted(System.IO.Stream)">
            <summary>
            Allows the inheritors to read some unencrypted information from the <paramref name="encryptedStream" />,
            e.g. here the cipher reads and sets the salt and the initialization vector in the symmetric cipher.
            Also if the key is not initialized yet - here it will generate the key from the password and the read salt.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">encryptedStream</exception>
            <exception cref="T:System.ArgumentException">
            The input stream cannot be read.;encryptedStream
            or
            The input data does not represent a valid crypto package: could not read the length of the salt.;encryptedStream
            or
            The input data does not represent a valid crypto package: could not read the salt.;encryptedStream
            </exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.BeforeWriteEncryptedAsync(System.IO.Stream)">
            <summary>
            Allows the inheritors to write asynchronously some unencrypted information to the <paramref name="encryptedStream" />
            before the encrypted text, e.g. here the cipher writes the salt and the initialization vector.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">encryptedStream</exception>
            <exception cref="T:System.ArgumentException">The input stream cannot be written to.;encryptedStream</exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.BeforeReadDecryptedAsync(System.IO.Stream)">
            <summary>
            Allows the inheritors to read some unencrypted information from the <paramref name="encryptedStream" />,
            e.g. here the cipher reads and sets the salt and the initialization vector in the symmetric cipher.
            Also if the key is not initialized yet - here it will generate the key from the password and the read salt.
            </summary>
            <param name="encryptedStream">The encrypted stream.</param>
            <exception cref="T:System.ArgumentNullException">encryptedStream</exception>
            <exception cref="T:System.ArgumentException">
            The input stream cannot be read.;encryptedStream
            or
            The input data does not represent a valid crypto package: could not read the length of the salt.;encryptedStream
            or
            The input data does not represent a valid crypto package: could not read the salt.;encryptedStream
            </exception>
            <remarks>The method is called by the GoF template-methods.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.CopyTo(vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase)">
            <summary>
            Copies certain characteristics of this instance to the <paramref name="cipher" /> parameter.
            The goal is to produce a cipher with the same encryption/decryption behavior but saving the key encryption and decryption ceremony and overhead if possible.
            </summary>
            <param name="cipher">The cipher that gets the identical symmetric algorithm object.</param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.ReleaseCertificate">
            <summary>
            Releases the asymmetric keys. By doing so the instance looses its <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement" /> behavior but the memory footprint becomes much lighter.
            The asymmetric keys can be dropped only if the underlying symmetric algorithm instance is already initialized and
            the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ShouldEncryptIV" /> is <see langword="false" />.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            If the underlying symmetric algorithm instance is not initialized yet or the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ShouldEncryptIV" /> is <see langword="false" />.
            </exception>
            See also <seealso cref="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.CloneLightCipher"/>.
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.PasswordProtectedKeyCipher.CloneLightCipher">
            <summary>
            Creates a new, lightweight <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedKeyCipher"/> instance and copies certain characteristics of this instance to it.
            A duplicate can be created only if the underlying symmetric algorithm instance is already initialized and the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ShouldEncryptIV"/> is <see langword="false"/>.
            The duplicate can be used only for encryption and decryption of data (the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.ICipher"/> and <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.ICipherTasks"/> behavior). The <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement"/> behavior is disabled and
            calling any of its members would throw <see cref="T:System.InvalidOperationException"/>.
            </summary>
            <returns>The duplicate.</returns>
            <exception cref="T:System.InvalidOperationException">
            If the underlying symmetric algorithm instance is not initialized yet or the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ShouldEncryptIV" /> is <see langword="false" />.
            </exception>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources">
            <summary>
              A strongly-typed resource class, for looking up localized strings, etc.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.ResourceManager">
            <summary>
              Returns the cached ResourceManager instance used by this class.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.Culture">
            <summary>
              Overrides the current thread's CurrentUICulture property for all
              resource lookups using this strongly typed resource class.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.InvalidArgument">
            <summary>
              Looks up a localized string similar to Invalid argument..
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.InvalidArgumentLength">
            <summary>
              Looks up a localized string similar to Invalid length of the argument..
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.InvalidEncryptedArray">
            <summary>
              Looks up a localized string similar to The encrypted value is not a valid array..
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.InvalidEncryptedValue">
            <summary>
              Looks up a localized string similar to Invalid encrypted value..
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.InvalidHash">
            <summary>
              Looks up a localized string similar to Invalid hash..
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.InvalidInputData">
            <summary>
              Looks up a localized string similar to The input data does not represent a valid crypto package: could not read the .
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.InvalidNumberOfBytes">
            <summary>
              Looks up a localized string similar to Unexpected number of bytes read from the data stream..
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.NullOrEmptyArgument">
            <summary>
              Looks up a localized string similar to The argument cannot be null, empty string or consist of white space characters only..
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.StreamNotCompatible">
            <summary>
              Looks up a localized string similar to The input stream does not seem to be produced with a compatible cipher..
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.StreamNotReadable">
            <summary>
              Looks up a localized string similar to Cannot read from the stream..
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.StreamNotSeekable">
            <summary>
              Looks up a localized string similar to Cannot seek the stream..
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.StreamNotWritable">
            <summary>
              Looks up a localized string similar to Cannot write to the stream..
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.Properties.Resources.UninitializedSymmetricKey">
            <summary>
              Looks up a localized string similar to The symmetric key is not initialized..
            </summary>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.RsaSigner">
            <summary>
            Class RsaSigner generates an encrypted hash (signature) of the protected data.
            The signer supports only SHA1-RSA and SHA256-RSA.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.RsaSigner._asymmetric">
            <summary>
            The implementation of the asymmetric algorithm.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.RsaSigner.Asymmetric">
            <summary>
            Gets or sets the implementation of the asymmetric algorithm.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.RsaSigner.#ctor(System.Security.Cryptography.X509Certificates.X509Certificate2,System.String,vm.Aspects.Security.Cryptography.Ciphers.IHashAlgorithmFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.EncryptedNewKeyCipher" /> class.
            </summary>
            <param name="signCertificate">
            The certificate containing the public and optionally the private key.
            </param>
            <param name="hashAlgorithmName">
            The hash algorithm name. You can use any of the constants from <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash" /> or
            <see langword="null" />, empty or whitespace characters only - it will default to <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Hash.Default" />.
            </param>
            <param name="hashAlgorithmFactory">
            The hash algorithm factory.
            </param>
            <exception cref="T:System.ArgumentNullException">
            Thrown when the <paramref name="signCertificate"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.RsaSigner.Hash(System.IO.Stream)">
            <summary>
            Computes the hash of a <paramref name="dataStream" /> stream.
            </summary>
            <param name="dataStream">The data stream.</param>
            <returns>The hash of the stream optionally prepended with the generated salt or <see langword="null" /> if <paramref name="dataStream" /> is <see langword="null" />.</returns>
            <exception cref="T:System.InvalidOperationException">The certificate did not contain a private key.</exception>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.RsaSigner.TryVerifyHash(System.IO.Stream,System.Byte[])">
            <summary>
            Tries the verify hash.
            </summary>
            <param name="dataStream">The data stream.</param>
            <param name="signature">The signature.</param>
            <returns><see langword="true" /> if the hash is valid, <see langword="false" /> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.RsaSigner.Hash(System.Byte[])">
            <summary>
            Computes the hash of a specified <paramref name="data" />.
            </summary>
            <param name="data">The data to be hashed.</param>
            <returns>
            The hash of the <paramref name="data" /> optionally prepended with the generated salt or
            <see langword="null" /> if <paramref name="data" /> is <see langword="null" />.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.RsaSigner.TryVerifyHash(System.Byte[],System.Byte[])">
            <summary>
            Tries the verify hash.
            </summary>
            <param name="data">The data.</param>
            <param name="signature">The signature.</param>
            <returns><see langword="true" /> if the hash is valid, <see langword="false" /> otherwise.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.RsaSigner.HashAsync(System.IO.Stream)">
            <summary>
            hash as an asynchronous operation.
            </summary>
            <param name="dataStream">The data stream.</param>
            <returns>The hash of the stream optionally prepended with the generated salt or <see langword="null" /> if <paramref name="dataStream" /> is <see langword="null" />.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.RsaSigner.TryVerifyHashAsync(System.IO.Stream,System.Byte[])">
            <summary>
            try to verify hash as an asynchronous operation.
            </summary>
            <param name="dataStream">The data stream.</param>
            <param name="signature">The signature.</param>
            <returns>Task<System.Boolean>.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.RsaSigner.Dispose(System.Boolean)">
            <summary>
            Performs the actual job of disposing the object.
            </summary>
            <param name="disposing">
            Passes the information whether this method is called by <see cref="M:System.IDisposable.Dispose"/> (explicitly or
            implicitly at the end of a <c>using</c> statement), or by the <see cref="M:~Signer()"/>.
            </param>
            <remarks>
            If the method is called with <paramref name="disposing"/><c>==true</c>, i.e. from <see cref="M:System.IDisposable.Dispose"/>, it will try to release all managed resources
            (usually aggregated objects which implement <see cref="T:System.IDisposable"/> as well) and then it will release all unmanaged resources if any.
            If the parameter is <c>false</c> then the method will only try to release the unmanaged resources.
            </remarks>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase">
            <summary>
            Class SymmetricKeyCipherBase is the base class for most of the ciphers and XML ciphers.
            Internally manages tasks associated with the symmetric key. Also
            implements <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyManagement"/> and the <see cref="T:System.IDisposable"/> pattern.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.#ctor(System.String,vm.Aspects.Security.Cryptography.Ciphers.ISymmetricAlgorithmFactory)">
            <summary>
            Initializes a new instance of the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase" /> class by instantiating a symmetric algorithm provider
            derived from the <paramref name="symmetricAlgorithmName" />.
            </summary>
            <param name="symmetricAlgorithmName">
            If <see langword="null" /> the algorithm will default to <see cref="F:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric.Default"/> (AESManaged).
            Hint: use the constants in the <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.Algorithms.Symmetric" /> static class.
            </param>
            <param name="symmetricAlgorithmFactory">
            The symmetric algorithm factory.
            If <see langword="null"/> the constructor will create an instance of the default <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.DefaultServices.SymmetricAlgorithmFactory"/>,
            which uses the <see cref="M:System.Security.Cryptography.SymmetricAlgorithm.Create(System.String)"/> method from the .NET library.
            </param>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.Symmetric">
            <summary>
            The underlying .NET symmetric cipher.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.KeyStorage">
            <summary>
            The object which is responsible for storing and retrieving the encrypted symmetric key
            to and from the store with the resolved store specific location name (e.g file name for file storages.)
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.IsSymmetricKeyInitialized">
            <summary>
            Gets or sets a value indicating whether this instance's symmetric key is initialized.
            </summary>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ShouldEncryptIV">
            <summary>
            Flag indicating whether to encrypt the initialization vector.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ResolveKeyStorage(System.String,vm.Aspects.Security.Cryptography.Ciphers.IKeyLocationStrategy,vm.Aspects.Security.Cryptography.Ciphers.IKeyStorageTasks)">
            <summary>
            Initializes the key storage by executing the key location strategy.
            </summary>
            <param name="symmetricKeyLocation">
            The name of the symmetric key location which must be relevant to the chosen <see cref="T:vm.Aspects.Security.Cryptography.Ciphers.IKeyLocationStrategy"/>.
            </param>
            <param name="symmetricKeyLocationStrategy">
            Translates the <paramref name="symmetricKeyLocation"/> to the chosen concrete key store relevant specific key location.
            </param>
            <param name="keyStorage">
            The key storage.
            </param>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.KeyLocation">
            <summary>
            Gets the physical storage location name of a symmetric key, e.g. the path and filename of a file.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ImportSymmetricKey(System.Byte[])">
            <summary>
            Imports the symmetric key as a clear text into the current ciphers and stores the new key into the key storage.
            </summary>
            <param name="key">The key.</param>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ExportSymmetricKey">
            <summary>
            Exports the symmetric key as a clear text.
            </summary>
            <returns>Array of bytes of the symmetric key or <see langword="null"/> if the cipher does not have a symmetric key.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ImportSymmetricKeyAsync(System.Byte[])">
            <summary>
            Asynchronously imports the symmetric key as a clear text.
            </summary>
            <param name="key">The key.</param>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object representing the process of asynchronously importing the symmetric key.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.ExportSymmetricKeyAsync">
            <summary>
            Asynchronously exports the symmetric key as a clear text.
            </summary>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object representing the process of asynchronously exporting the symmetric key including the result -
            array of bytes of the symmetric key or <see langword="null"/> if the cipher does not have a symmetric key.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.InitializeSymmetricKey">
            <summary>
            Initializes the symmetric key for encryption.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.InitializeSymmetricKeyAsync">
            <summary>
            Asynchronously initializes the symmetric key for encryption.
            </summary>
            <returns>
            A <see cref="T:System.Threading.Tasks.Task"/> object representing the process of asynchronous initialization.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.EncryptSymmetricKey">
            <summary>
            Encrypts the symmetric key in preparation to put it in the crypto-package.
            </summary>
            <returns>
            The bytes of the encrypted key.
            </returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.DecryptSymmetricKey(System.Byte[])">
            <summary>
            Decrypts the symmetric key after retrieving it from the crypto-package.
            </summary>
            <param name="encryptedKey">
            The encrypted key.
            </param>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase._disposed">
            <summary>
            The flag will be set just before the object is disposed.
            </summary>
            <value>0 - if the object is not disposed yet, any other value - the object is already disposed.</value>
            <remarks>
            Do not test or manipulate this flag outside of the property <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.IsDisposed"/> or the method <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.Dispose"/>.
            The type of this field is Int32 so that it can be easily passed to the members of the class <see cref="T:System.Threading.Interlocked"/>.
            </remarks>
        </member>
        <member name="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.IsDisposed">
            <summary>
            Returns <c>true</c> if the object has already been disposed, otherwise <c>false</c>.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
            <remarks>Invokes the protected virtual <see cref="M:Dispose(true)"/>.</remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.Dispose(System.Boolean)">
            <summary>
            Performs the actual job of disposing the object.
            </summary>
            <param name="disposing">
            Passes the information whether this method is called by <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.Dispose"/> (explicitly or
            implicitly at the end of a <c>using</c> statement), or by the <see cref="M:~SymmetricKeyCipherBase"/>.
            </param>
            <remarks>
            If the method is called with <paramref name="disposing"/><c>==true</c>, i.e. from <see cref="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.Dispose"/>,
            it will try to release all managed resources (usually aggregated objects which implement <see cref="T:System.IDisposable"/> as well)
            and then it will release all unmanaged resources if any. If the parameter is <c>false</c> then
            the method will only try to release the unmanaged resources.
            </remarks>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.CopyTo(vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase)">
            <summary>
            Copies certain characteristics of this instance to the <paramref name="cipher"/> parameter.
            The goal is to produce a cipher with the same encryption/decryption behavior but saving the key encryption and decryption ceremony and overhead if possible.
            Here it creates a <see cref="T:System.Security.Cryptography.SymmetricAlgorithm"/> object identical to the current <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.Symmetric"/> and assigns it to <paramref name="cipher"/>'s <see cref="P:vm.Aspects.Security.Cryptography.Ciphers.SymmetricKeyCipherBase.Symmetric"/>.
            </summary>
            <param name="cipher">The cipher that gets the identical symmetric algorithm object.</param>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray">
            <summary>
            Class ToByteArray contains a number of functions which convert various data types to byte array.
            Utility class that can be used in the IHasher and ICipher extension methods.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Boolean)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Boolean[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Char)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Char[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Byte)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Byte[])">
            <summary>
            Converts the specified data to byte array.
            This method is here only for completeness.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.SByte)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.SByte[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Int16)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Int16[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.UInt16)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.UInt16[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Int32)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Int32[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.UInt32)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.UInt32[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Int64)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Int64[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.UInt64)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.UInt64[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Single)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Single[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Double)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Double[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Decimal)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Decimal[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.String)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.DateTime)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.DateTime[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Guid)">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.Convert(System.Guid[])">
            <summary>
            Converts the specified data to byte array.
            </summary>
            <param name="data">The data.</param>
            <returns>Byte array representing the data.</returns>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.ToByteArray.ConvertTypedData">
            <summary>
            Dictionary of types and the corresponding methods that can decrypt those types.
            </summary>
        </member>
        <member name="T:vm.Aspects.Security.Cryptography.Ciphers.X509Certificate2Extensions">
            <summary>
            Class X509Certificate2Extensions defines one or more extension methods to <see cref="T:System.Security.Cryptography.X509Certificates.X509Certificate2"/>.
            </summary>
        </member>
        <member name="F:vm.Aspects.Security.Cryptography.Ciphers.X509Certificate2Extensions.HashAlgorithms">
            <summary>
            Maps OID-s to algorithm names.
            </summary>
        </member>
        <member name="M:vm.Aspects.Security.Cryptography.Ciphers.X509Certificate2Extensions.HashAlgorithm(System.Security.Cryptography.X509Certificates.X509Certificate2)">
            <summary>
            Extracts the hash algorithm recorded in the <paramref name="certificate"/>.
            </summary>
            <param name="certificate">The certificate.</param>
            <returns>The name of the hash algorithm.</returns>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="certificate"/> is <see langword="null"/>.
            </exception>
            <exception cref="T:System.NotSupportedException">
            The hash algorithm is not MD5, SHA1, SHA256, SHA384, or SHA512.
            </exception>
        </member>
        <member name="T:vm.Aspects.Extensions">
            <summary>
            Class Extensions. Adds extension methods for easy dumping of objects, as well as a few useful reflection methods not available in .NET 4.0.
            </summary>
        </member>
        <member name="M:vm.Aspects.Extensions.IsNullOrWhiteSpace(System.String)">
            <summary>
            Determines whether the specified string is null, or empty or consist of whitespace characters only.
            </summary>
            <param name="value">The string to test.</param>
            <returns><see langword="true" /> if the specified string is not blank; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:vm.Aspects.Extensions.IsNullOrEmpty(System.String)">
            <summary>
            Determines whether the specified string is null, or empty.
            </summary>
            <param name="value">The string to test.</param>
            <returns><see langword="true" /> if the specified string is not blank; otherwise, <see langword="false" />.</returns>
        </member>
    </members>
</doc>