static bool AreTokenParametersMatching(SecurityTokenParameters p1, SecurityTokenParameters p2, bool skipRequireDerivedKeysComparison, bool exactMessageSecurityVersion) { if (p1 == null || p2 == null) return false; if (p1.GetType() != p2.GetType()) return false; if (p1.InclusionMode != p2.InclusionMode) return false; if (skipRequireDerivedKeysComparison == false && p1.RequireDerivedKeys != p2.RequireDerivedKeys) return false; if (p1.ReferenceStyle != p2.ReferenceStyle) return false; // mutual ssl and anonymous ssl differ in the client cert requirement if (p1 is SslSecurityTokenParameters) { if (((SslSecurityTokenParameters)p1).RequireClientCertificate != ((SslSecurityTokenParameters)p2).RequireClientCertificate) return false; } else if (p1 is SecureConversationSecurityTokenParameters) { SecureConversationSecurityTokenParameters sc1 = (SecureConversationSecurityTokenParameters)p1; SecureConversationSecurityTokenParameters sc2 = (SecureConversationSecurityTokenParameters)p2; if (sc1.RequireCancellation != sc2.RequireCancellation) return false; if (sc1.CanRenewSession != sc2.CanRenewSession) return false; if (!AreBindingsMatching(sc1.BootstrapSecurityBindingElement, sc2.BootstrapSecurityBindingElement, exactMessageSecurityVersion)) return false; } else if (p1 is IssuedSecurityTokenParameters) { if (((IssuedSecurityTokenParameters)p1).KeyType != ((IssuedSecurityTokenParameters)p2).KeyType) return false; } return true; }
private static bool AreTokenParametersMatching(SecurityTokenParameters p1, SecurityTokenParameters p2, bool skipRequireDerivedKeysComparison, bool exactMessageSecurityVersion) { if ((p1 == null) || (p2 == null)) { return false; } if (p1.GetType() != p2.GetType()) { return false; } if (p1.InclusionMode != p2.InclusionMode) { return false; } if (!skipRequireDerivedKeysComparison && (p1.RequireDerivedKeys != p2.RequireDerivedKeys)) { return false; } if (p1.ReferenceStyle != p2.ReferenceStyle) { return false; } if (p1 is SslSecurityTokenParameters) { if (((SslSecurityTokenParameters) p1).RequireClientCertificate != ((SslSecurityTokenParameters) p2).RequireClientCertificate) { return false; } } else if (p1 is SecureConversationSecurityTokenParameters) { SecureConversationSecurityTokenParameters parameters = (SecureConversationSecurityTokenParameters) p1; SecureConversationSecurityTokenParameters parameters2 = (SecureConversationSecurityTokenParameters) p2; if (parameters.RequireCancellation != parameters2.RequireCancellation) { return false; } if (parameters.CanRenewSession != parameters2.CanRenewSession) { return false; } if (!AreBindingsMatching(parameters.BootstrapSecurityBindingElement, parameters2.BootstrapSecurityBindingElement, exactMessageSecurityVersion)) { return false; } } else if ((p1 is IssuedSecurityTokenParameters) && (((IssuedSecurityTokenParameters) p1).KeyType != ((IssuedSecurityTokenParameters) p2).KeyType)) { return false; } return true; }