/// <summary>
        /// SerializeCredentials method implementation
        /// </summary>
        public string SerializeCredentials(MFAUserCredential creds, string username)
        {
            MemoryStream stream = new MemoryStream();
            BinaryWriter writer = new BinaryWriter(stream);

            writer.Write(creds.Descriptor.Id.Length);
            writer.Write(creds.Descriptor.Id, 0, creds.Descriptor.Id.Length);
            writer.Write(creds.UserId.Length);
            writer.Write(creds.UserId, 0, creds.UserId.Length);
            writer.Write(creds.PublicKey.Length);
            writer.Write(creds.PublicKey, 0, creds.PublicKey.Length);
            writer.Write(creds.UserHandle.Length);
            writer.Write(creds.UserHandle, 0, creds.UserHandle.Length);
            writer.Write(creds.SignatureCounter);
            writer.Write(creds.CredType);
            writer.Write(creds.RegDate.ToBinary());
            writer.Write(creds.AaGuid.ToByteArray());

            writer.Write((byte)creds.Descriptor.Type.Value);
            if (creds.Descriptor.Transports != null)
            {
                writer.Write(creds.Descriptor.Transports.Length);
                foreach (MFAAuthenticatorTransport tr in creds.Descriptor.Transports)
                {
                    writer.Write((byte)tr);
                }
            }
            else
            {
                writer.Write(0);
            }
            string Descriptor = HexaEncoding.GetHexStringFromByteArray(stream.ToArray());

            string distinguishedName = string.Empty;

            if (_host != null)
            {
                distinguishedName = GetMFAdistinguishedName(username);
            }
            else
            {
                distinguishedName = username;
            }
            distinguishedName = CheckSumEncoding.CheckSumAsString(distinguishedName);

            if (string.IsNullOrEmpty(creds.NickName))
            {
                creds.NickName = "None";
            }
            return(string.Format("B:{0}:{1}:{2}:{3}", (Descriptor.Length).ToString(), Descriptor, distinguishedName, creds.NickName));
        }
        /// <summary>
        /// CheckUserName method implementation
        /// </summary>
        private bool CheckUserName(string value, string userName)
        {
            bool validated = false;

            if (userName.ToLower().Equals(value.ToString().ToLower()))
            {
                validated = true;
            }
            else if (value.Equals(CheckSumEncoding.CheckSumAsString(userName)))
            {
                validated = true;
            }
            return(validated);
        }