public override void MarkElements(ReceiveSecurityHeaderElementManager elementManager, bool messageSecurityMode) { bool primarySignatureFound = false; for (int position = 0; position < elementManager.Count; position++) { ReceiveSecurityHeaderEntry entry; elementManager.GetElementEntry(position, out entry); if (entry.elementCategory == ReceiveSecurityHeaderElementCategory.Signature) { if (!messageSecurityMode) { elementManager.SetBindingMode(position, ReceiveSecurityHeaderBindingModes.Endorsing); continue; } SignedXml signedXml = (SignedXml)entry.element; StandardSignedInfo signedInfo = (StandardSignedInfo)signedXml.Signature.SignedInfo; bool targetsSignature = false; if (signedInfo.ReferenceCount == 1) { string uri = signedInfo[0].Uri; string id; if (uri != null && uri.Length > 1 && uri[0] == '#') { id = uri.Substring(1); } else { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new MessageSecurityException(SR.GetString(SR.UnableToResolveReferenceUriForSignature, uri))); } for (int j = 0; j < elementManager.Count; j++) { ReceiveSecurityHeaderEntry inner; elementManager.GetElementEntry(j, out inner); if (j != position && inner.elementCategory == ReceiveSecurityHeaderElementCategory.Signature && inner.id == id) { targetsSignature = true; break; } } } if (targetsSignature) { elementManager.SetBindingMode(position, ReceiveSecurityHeaderBindingModes.Endorsing); continue; } else { if (primarySignatureFound) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.AtMostOnePrimarySignatureInReceiveSecurityHeader))); } primarySignatureFound = true; elementManager.SetBindingMode(position, ReceiveSecurityHeaderBindingModes.Primary); continue; } } } }
public override void MarkElements(ReceiveSecurityHeaderElementManager elementManager, bool messageSecurityMode) { for (int position = 1; position < elementManager.Count; position++) { if (elementManager.GetElementCategory(position) == ReceiveSecurityHeaderElementCategory.Timestamp) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.TimestampMustOccurFirstInSecurityHeaderLayout))); } } base.MarkElements(elementManager, messageSecurityMode); }
public override void MarkElements(ReceiveSecurityHeaderElementManager elementManager, bool messageSecurityMode) { for (int position = 0; position < elementManager.Count - 1; position++) { if (elementManager.GetElementCategory(position) == ReceiveSecurityHeaderElementCategory.Timestamp) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.TimestampMustOccurLastInSecurityHeaderLayout))); } } base.MarkElements(elementManager, messageSecurityMode); }
public override void MarkElements(ReceiveSecurityHeaderElementManager elementManager, bool messageSecurityMode) { for (int i = 1; i < elementManager.Count; i++) { if (elementManager.GetElementCategory(i) == ReceiveSecurityHeaderElementCategory.Timestamp) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(System.ServiceModel.SR.GetString("TimestampMustOccurFirstInSecurityHeaderLayout"))); } } base.MarkElements(elementManager, messageSecurityMode); }
public override void MarkElements(ReceiveSecurityHeaderElementManager elementManager, bool messageSecurityMode) { bool flag = false; for (int i = 0; i < elementManager.Count; i++) { ReceiveSecurityHeaderEntry entry; elementManager.GetElementEntry(i, out entry); if (entry.elementCategory == ReceiveSecurityHeaderElementCategory.Signature) { if (!messageSecurityMode) { elementManager.SetBindingMode(i, ReceiveSecurityHeaderBindingModes.Endorsing); continue; } SignedXml element = (SignedXml) entry.element; StandardSignedInfo signedInfo = (StandardSignedInfo) element.Signature.SignedInfo; bool flag2 = false; if (signedInfo.ReferenceCount == 1) { string uri = signedInfo[0].Uri; if (((uri == null) || (uri.Length <= 1)) || (uri[0] != '#')) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(System.ServiceModel.SR.GetString("UnableToResolveReferenceUriForSignature", new object[] { uri }))); } string str2 = uri.Substring(1); for (int j = 0; j < elementManager.Count; j++) { ReceiveSecurityHeaderEntry entry2; elementManager.GetElementEntry(j, out entry2); if (((j != i) && (entry2.elementCategory == ReceiveSecurityHeaderElementCategory.Signature)) && (entry2.id == str2)) { flag2 = true; break; } } } if (flag2) { elementManager.SetBindingMode(i, ReceiveSecurityHeaderBindingModes.Endorsing); } else { if (flag) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(System.ServiceModel.SR.GetString("AtMostOnePrimarySignatureInReceiveSecurityHeader"))); } flag = true; elementManager.SetBindingMode(i, ReceiveSecurityHeaderBindingModes.Primary); } } } }
public override void MarkElements(ReceiveSecurityHeaderElementManager elementManager, bool messageSecurityMode) { bool primarySignatureFound = false; for (int position = 0; position < elementManager.Count; position++) { ReceiveSecurityHeaderEntry entry; elementManager.GetElementEntry(position, out entry); if (entry.elementCategory == ReceiveSecurityHeaderElementCategory.Signature) { if (!messageSecurityMode || primarySignatureFound) { elementManager.SetBindingMode(position, ReceiveSecurityHeaderBindingModes.Endorsing); } else { elementManager.SetBindingMode(position, ReceiveSecurityHeaderBindingModes.Primary); primarySignatureFound = true; } } } }
public override void MarkElements(ReceiveSecurityHeaderElementManager elementManager, bool messageSecurityMode) { bool flag = false; for (int i = 0; i < elementManager.Count; i++) { ReceiveSecurityHeaderEntry entry; elementManager.GetElementEntry(i, out entry); if (entry.elementCategory == ReceiveSecurityHeaderElementCategory.Signature) { if (!messageSecurityMode || flag) { elementManager.SetBindingMode(i, ReceiveSecurityHeaderBindingModes.Endorsing); } else { elementManager.SetBindingMode(i, ReceiveSecurityHeaderBindingModes.Primary); flag = true; } } } }
public abstract void MarkElements(ReceiveSecurityHeaderElementManager elementManager, bool messageSecurityMode);