Exemple #1
0
        protected virtual void WriteTo(BinaryWriter writer, byte[] userData)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            int num = 1;

            Claim.SerializationMask serializationMask = Claim.SerializationMask.None;
            if (string.Equals(this.m_type, "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"))
            {
                serializationMask |= Claim.SerializationMask.NameClaimType;
            }
            else if (string.Equals(this.m_type, "http://schemas.microsoft.com/ws/2008/06/identity/claims/role"))
            {
                serializationMask |= Claim.SerializationMask.RoleClaimType;
            }
            else
            {
                ++num;
            }
            if (!string.Equals(this.m_valueType, "http://www.w3.org/2001/XMLSchema#string", StringComparison.Ordinal))
            {
                ++num;
                serializationMask |= Claim.SerializationMask.StringType;
            }
            if (!string.Equals(this.m_issuer, "LOCAL AUTHORITY", StringComparison.Ordinal))
            {
                ++num;
                serializationMask |= Claim.SerializationMask.Issuer;
            }
            if (string.Equals(this.m_originalIssuer, this.m_issuer, StringComparison.Ordinal))
            {
                serializationMask |= Claim.SerializationMask.OriginalIssuerEqualsIssuer;
            }
            else if (!string.Equals(this.m_originalIssuer, "LOCAL AUTHORITY", StringComparison.Ordinal))
            {
                ++num;
                serializationMask |= Claim.SerializationMask.OriginalIssuer;
            }
            if (this.Properties.Count > 0)
            {
                ++num;
                serializationMask |= Claim.SerializationMask.HasProperties;
            }
            if (userData != null && userData.Length != 0)
            {
                ++num;
                serializationMask |= Claim.SerializationMask.UserData;
            }
            writer.Write((int)serializationMask);
            writer.Write(num);
            writer.Write(this.m_value);
            if ((serializationMask & Claim.SerializationMask.NameClaimType) != Claim.SerializationMask.NameClaimType && (serializationMask & Claim.SerializationMask.RoleClaimType) != Claim.SerializationMask.RoleClaimType)
            {
                writer.Write(this.m_type);
            }
            if ((serializationMask & Claim.SerializationMask.StringType) == Claim.SerializationMask.StringType)
            {
                writer.Write(this.m_valueType);
            }
            if ((serializationMask & Claim.SerializationMask.Issuer) == Claim.SerializationMask.Issuer)
            {
                writer.Write(this.m_issuer);
            }
            if ((serializationMask & Claim.SerializationMask.OriginalIssuer) == Claim.SerializationMask.OriginalIssuer)
            {
                writer.Write(this.m_originalIssuer);
            }
            if ((serializationMask & Claim.SerializationMask.HasProperties) == Claim.SerializationMask.HasProperties)
            {
                writer.Write(this.Properties.Count);
                foreach (string key in (IEnumerable <string>) this.Properties.Keys)
                {
                    writer.Write(key);
                    writer.Write(this.Properties[key]);
                }
            }
            if ((serializationMask & Claim.SerializationMask.UserData) == Claim.SerializationMask.UserData)
            {
                writer.Write(userData.Length);
                writer.Write(userData);
            }
            writer.Flush();
        }
Exemple #2
0
        private void Initialize(BinaryReader reader, ClaimsIdentity subject)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }
            this.m_subject = subject;
            Claim.SerializationMask serializationMask = (Claim.SerializationMask)reader.ReadInt32();
            int num1 = 1;
            int num2 = reader.ReadInt32();

            this.m_value = reader.ReadString();
            if ((serializationMask & Claim.SerializationMask.NameClaimType) == Claim.SerializationMask.NameClaimType)
            {
                this.m_type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name";
            }
            else if ((serializationMask & Claim.SerializationMask.RoleClaimType) == Claim.SerializationMask.RoleClaimType)
            {
                this.m_type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role";
            }
            else
            {
                this.m_type = reader.ReadString();
                ++num1;
            }
            if ((serializationMask & Claim.SerializationMask.StringType) == Claim.SerializationMask.StringType)
            {
                this.m_valueType = reader.ReadString();
                ++num1;
            }
            else
            {
                this.m_valueType = "http://www.w3.org/2001/XMLSchema#string";
            }
            if ((serializationMask & Claim.SerializationMask.Issuer) == Claim.SerializationMask.Issuer)
            {
                this.m_issuer = reader.ReadString();
                ++num1;
            }
            else
            {
                this.m_issuer = "LOCAL AUTHORITY";
            }
            if ((serializationMask & Claim.SerializationMask.OriginalIssuerEqualsIssuer) == Claim.SerializationMask.OriginalIssuerEqualsIssuer)
            {
                this.m_originalIssuer = this.m_issuer;
            }
            else if ((serializationMask & Claim.SerializationMask.OriginalIssuer) == Claim.SerializationMask.OriginalIssuer)
            {
                this.m_originalIssuer = reader.ReadString();
                ++num1;
            }
            else
            {
                this.m_originalIssuer = "LOCAL AUTHORITY";
            }
            if ((serializationMask & Claim.SerializationMask.HasProperties) == Claim.SerializationMask.HasProperties)
            {
                int num3 = reader.ReadInt32();
                for (int index = 0; index < num3; ++index)
                {
                    this.Properties.Add(reader.ReadString(), reader.ReadString());
                }
            }
            if ((serializationMask & Claim.SerializationMask.UserData) == Claim.SerializationMask.UserData)
            {
                int count = reader.ReadInt32();
                this.m_userSerializationData = reader.ReadBytes(count);
                ++num1;
            }
            for (int index = num1; index < num2; ++index)
            {
                reader.ReadString();
            }
        }