/// <summary>
        /// Called when the message has been received,
        /// after it passes through the channel binding elements.
        /// </summary>
        void IMessageWithEvents.OnReceiving()
        {
            var extraData = ((IMessage)this).ExtraData;

            this.ActualPolicies.Clear();
            string[] actualPolicies = this.actualPoliciesString.Split(' ');
            foreach (string policy in actualPolicies)
            {
                if (policy.Length > 0 && policy != AuthenticationPolicies.None)
                {
                    this.ActualPolicies.Add(policy);
                }
            }

            this.AssuranceLevels.Clear();
            AliasManager authLevelAliases = PapeUtilities.FindIncomingAliases(extraData);

            foreach (string authLevelAlias in authLevelAliases.Aliases)
            {
                string authValue;
                if (extraData.TryGetValue(AuthLevelAliasPrefix + authLevelAlias, out authValue))
                {
                    string authLevelType = authLevelAliases.ResolveAlias(authLevelAlias);
                    this.AssuranceLevels[authLevelType] = authValue;
                }
            }
        }
        /// <summary>
        /// Called when the message has been received,
        /// after it passes through the channel binding elements.
        /// </summary>
        void IMessageWithEvents.OnReceiving()
        {
            var extraData = ((IMessage)this).ExtraData;

            this.PreferredPolicies.Clear();
            string[] preferredPolicies = this.preferredPoliciesString.Split(' ');
            foreach (string policy in preferredPolicies)
            {
                if (policy.Length > 0)
                {
                    this.PreferredPolicies.Add(policy);
                }
            }

            this.PreferredAuthLevelTypes.Clear();
            AliasManager authLevelAliases = PapeUtilities.FindIncomingAliases(extraData);
            string       preferredAuthLevelAliases;

            if (extraData.TryGetValue(Constants.RequestParameters.PreferredAuthLevelTypes, out preferredAuthLevelAliases))
            {
                foreach (string authLevelAlias in preferredAuthLevelAliases.Split(' '))
                {
                    if (authLevelAlias.Length == 0)
                    {
                        continue;
                    }
                    this.PreferredAuthLevelTypes.Add(authLevelAliases.ResolveAlias(authLevelAlias));
                }
            }
        }
 /// <summary>
 /// Serializes the applied policies for transmission from the Provider
 /// to the Relying Party.
 /// </summary>
 /// <param name="policies">The applied policies.</param>
 /// <returns>A space-delimited list of applied policies.</returns>
 private static string SerializePolicies(IList <string> policies)
 {
     if (policies.Count == 0)
     {
         return(AuthenticationPolicies.None);
     }
     else
     {
         return(PapeUtilities.ConcatenateListOfElements(policies));
     }
 }
        /// <summary>
        /// Serializes the auth levels to a list of aliases.
        /// </summary>
        /// <param name="preferredAuthLevelTypes">The preferred auth level types.</param>
        /// <param name="aliases">The alias manager.</param>
        /// <returns>A space-delimited list of aliases.</returns>
        private static string SerializeAuthLevels(IList <string> preferredAuthLevelTypes, AliasManager aliases)
        {
            var aliasList = new List <string>();

            foreach (string typeUri in preferredAuthLevelTypes)
            {
                aliasList.Add(aliases.GetAlias(typeUri));
            }

            return(PapeUtilities.ConcatenateListOfElements(aliasList));
        }
 /// <summary>
 /// Serializes the policies as a single string per the PAPE spec..
 /// </summary>
 /// <param name="policies">The policies to include in the list.</param>
 /// <returns>The concatenated string of the given policies.</returns>
 private static string SerializePolicies(IEnumerable <string> policies)
 {
     return(PapeUtilities.ConcatenateListOfElements(policies));
 }