public virtual bool TryImportWsspBootstrapPolicyAssertion(MetadataImporter importer, ICollection<XmlElement> assertions, SecureConversationSecurityTokenParameters parameters) { bool result = false; XmlElement assertion; Collection<Collection<XmlElement>> alternatives; if (TryImportWsspAssertion(assertions, BootstrapPolicyName, out assertion) && TryGetNestedPolicyAlternatives(importer, assertion, out alternatives)) { BindingElementCollection bindingElements; importer.State[SecurityBindingElementImporter.InSecureConversationBootstrapBindingImportMode] = SecurityBindingElementImporter.InSecureConversationBootstrapBindingImportMode; try { bindingElements = importer.ImportPolicy(NullServiceEndpoint, alternatives); if (importer.State.ContainsKey(SecurityBindingElementImporter.SecureConversationBootstrapEncryptionRequirements)) { MessagePartSpecification encryption = (MessagePartSpecification)importer.State[SecurityBindingElementImporter.SecureConversationBootstrapEncryptionRequirements]; if (encryption.IsBodyIncluded != true) { importer.Errors.Add(new MetadataConversionError(SR.GetString(SR.UnsupportedSecureConversationBootstrapProtectionRequirements), false)); bindingElements = null; } } if (importer.State.ContainsKey(SecurityBindingElementImporter.SecureConversationBootstrapSignatureRequirements)) { MessagePartSpecification signature = (MessagePartSpecification)importer.State[SecurityBindingElementImporter.SecureConversationBootstrapSignatureRequirements]; if (signature.IsBodyIncluded != true) { importer.Errors.Add(new MetadataConversionError(SR.GetString(SR.UnsupportedSecureConversationBootstrapProtectionRequirements), false)); bindingElements = null; } } } finally { importer.State.Remove(SecurityBindingElementImporter.InSecureConversationBootstrapBindingImportMode); if (importer.State.ContainsKey(SecurityBindingElementImporter.SecureConversationBootstrapEncryptionRequirements)) importer.State.Remove(SecurityBindingElementImporter.SecureConversationBootstrapEncryptionRequirements); if (importer.State.ContainsKey(SecurityBindingElementImporter.SecureConversationBootstrapSignatureRequirements)) importer.State.Remove(SecurityBindingElementImporter.SecureConversationBootstrapSignatureRequirements); } if (bindingElements != null) { parameters.BootstrapSecurityBindingElement = bindingElements.Find<SecurityBindingElement>(); return true; } else { parameters.BootstrapSecurityBindingElement = null; return true; // Consider returning false here. } } return result; }
public virtual bool TryImportWsspBootstrapPolicyAssertion(MetadataImporter importer, ICollection<XmlElement> assertions, SecureConversationSecurityTokenParameters parameters) { XmlElement element; Collection<Collection<XmlElement>> collection; BindingElementCollection elements; bool flag = false; if (!this.TryImportWsspAssertion(assertions, "BootstrapPolicy", out element) || !this.TryGetNestedPolicyAlternatives(importer, element, out collection)) { return flag; } importer.State["InSecureConversationBootstrapBindingImportMode"] = "InSecureConversationBootstrapBindingImportMode"; try { elements = importer.ImportPolicy(NullServiceEndpoint, collection); if (importer.State.ContainsKey("SecureConversationBootstrapEncryptionRequirements")) { MessagePartSpecification specification = (MessagePartSpecification) importer.State["SecureConversationBootstrapEncryptionRequirements"]; if (!specification.IsBodyIncluded) { importer.Errors.Add(new MetadataConversionError(System.ServiceModel.SR.GetString("UnsupportedSecureConversationBootstrapProtectionRequirements"), false)); elements = null; } } if (importer.State.ContainsKey("SecureConversationBootstrapSignatureRequirements")) { MessagePartSpecification specification2 = (MessagePartSpecification) importer.State["SecureConversationBootstrapSignatureRequirements"]; if (!specification2.IsBodyIncluded) { importer.Errors.Add(new MetadataConversionError(System.ServiceModel.SR.GetString("UnsupportedSecureConversationBootstrapProtectionRequirements"), false)); elements = null; } } } finally { importer.State.Remove("InSecureConversationBootstrapBindingImportMode"); if (importer.State.ContainsKey("SecureConversationBootstrapEncryptionRequirements")) { importer.State.Remove("SecureConversationBootstrapEncryptionRequirements"); } if (importer.State.ContainsKey("SecureConversationBootstrapSignatureRequirements")) { importer.State.Remove("SecureConversationBootstrapSignatureRequirements"); } } if (elements != null) { parameters.BootstrapSecurityBindingElement = elements.Find<SecurityBindingElement>(); return true; } parameters.BootstrapSecurityBindingElement = null; return true; }