/// <summary>
        /// Searches for Stone encryption DUKPT:TDES key, on pinpad index 16.
        /// </summary>
        /// <returns>GDU response.</returns>
        private GduResponse GetGdu()
        {
            // Creates GDU request:
            GduRequest request = new GduRequest();

            // Sets GDU to search for Stone encryption index (16):
            request.GDU_IDX.Value = (int)StoneIndexCode.EncryptionKey;

            // Sets GDU to search for a DUKPT:TDES key:
            request.GDU_METHOD.Value = new CryptographyMethod(KeyManagementMode.DerivedUniqueKeyPerTransaction, CryptographyMode.TripleDataEncryptionStandard);

            // Sends the request to pinpad, gets and returns it's response:
            return(this.communication.SendRequestAndReceiveResponse <GduResponse>(request));
        }
        // Public Methods
        /// <summary>
        /// Obtains the current KSN (Key Serial Number) of an index in the table.
        /// </summary>
        /// <param name="indexToSearch">KSN index.</param>
        /// <param name="cryptographyMode">Cryptography method.</param>
        /// <returns>The obtained KSN, or null if the KSN was not found.</returns>
        public string GetDukptSerialNumber(int indexToSearch, CryptographyMode cryptographyMode)
        {
            // Setup request:
            GduRequest request = new GduRequest();

            request.GDU_IDX.Value    = indexToSearch;
            request.GDU_METHOD.Value = new CryptographyMethod(KeyManagementMode.DerivedUniqueKeyPerTransaction,
                                                              cryptographyMode);

            // Send request to the pinpad:
            GduResponse response = this.communication
                                   .SendRequestAndReceiveResponse <GduResponse>(request);

            // Verify if the command was successful:
            if (response != null && response.RSP_STAT.Value == AbecsResponseStatus.ST_OK)
            {
                // Return KSN (if any):
                return(response.GDU_KSN.Value);
            }

            // Failure:
            return(null);
        }