protected void CheckSignatureConfirmation(ReceiveSecurityHeader securityHeader, SecurityProtocolCorrelationState[] correlationStates) { SignatureConfirmations receivedConfirmations = securityHeader.GetSentSignatureConfirmations(); SignatureConfirmations sentSignatures = null; if (correlationStates != null) { for (int i = 0; i < correlationStates.Length; ++i) { if (correlationStates[i].SignatureConfirmations != null) { sentSignatures = correlationStates[i].SignatureConfirmations; break; } } } if (sentSignatures == null) { if (receivedConfirmations != null && receivedConfirmations.Count > 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.FoundUnexpectedSignatureConfirmations))); } return; } bool allSignaturesConfirmed = false; if (receivedConfirmations != null && sentSignatures.Count == receivedConfirmations.Count) { bool[] matchingSigIndexes = new bool[sentSignatures.Count]; for (int i = 0; i < sentSignatures.Count; ++i) { byte[] sentSignature; bool wasSentSigEncrypted; sentSignatures.GetConfirmation(i, out sentSignature, out wasSentSigEncrypted); for (int j = 0; j < receivedConfirmations.Count; ++j) { byte[] receivedSignature; bool wasReceivedSigEncrypted; if (matchingSigIndexes[j]) { continue; } receivedConfirmations.GetConfirmation(j, out receivedSignature, out wasReceivedSigEncrypted); if ((wasReceivedSigEncrypted == wasSentSigEncrypted) && CryptoHelper.IsEqual(receivedSignature, sentSignature)) { matchingSigIndexes[j] = true; break; } } } int k; for (k = 0; k < matchingSigIndexes.Length; ++k) { if (!matchingSigIndexes[k]) { break; } } if (k == matchingSigIndexes.Length) { allSignaturesConfirmed = true; } } if (!allSignaturesConfirmed) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.NotAllSignaturesConfirmed))); } }
protected void CheckSignatureConfirmation(ReceiveSecurityHeader securityHeader, SecurityProtocolCorrelationState[] correlationStates) { SignatureConfirmations sentSignatureConfirmations = securityHeader.GetSentSignatureConfirmations(); SignatureConfirmations signatureConfirmations = null; if (correlationStates != null) { for (int i = 0; i < correlationStates.Length; i++) { if (correlationStates[i].SignatureConfirmations != null) { signatureConfirmations = correlationStates[i].SignatureConfirmations; break; } } } if (signatureConfirmations == null) { if ((sentSignatureConfirmations != null) && (sentSignatureConfirmations.Count > 0)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(System.ServiceModel.SR.GetString("FoundUnexpectedSignatureConfirmations"))); } } else { bool flag = false; if ((sentSignatureConfirmations != null) && (signatureConfirmations.Count == sentSignatureConfirmations.Count)) { bool[] flagArray = new bool[signatureConfirmations.Count]; for (int j = 0; j < signatureConfirmations.Count; j++) { byte[] buffer; bool flag2; signatureConfirmations.GetConfirmation(j, out buffer, out flag2); for (int k = 0; k < sentSignatureConfirmations.Count; k++) { if (!flagArray[k]) { byte[] buffer2; bool flag3; sentSignatureConfirmations.GetConfirmation(k, out buffer2, out flag3); if ((flag3 == flag2) && CryptoHelper.IsEqual(buffer2, buffer)) { flagArray[k] = true; break; } } } } int index = 0; while (index < flagArray.Length) { if (!flagArray[index]) { break; } index++; } if (index == flagArray.Length) { flag = true; } } if (!flag) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(System.ServiceModel.SR.GetString("NotAllSignaturesConfirmed"))); } } }
protected void CheckSignatureConfirmation(ReceiveSecurityHeader securityHeader, SecurityProtocolCorrelationState[] correlationStates) { SignatureConfirmations receivedConfirmations = securityHeader.GetSentSignatureConfirmations(); SignatureConfirmations sentSignatures = null; if (correlationStates != null) { for (int i = 0; i < correlationStates.Length; ++i) { if (correlationStates[i].SignatureConfirmations != null) { sentSignatures = correlationStates[i].SignatureConfirmations; break; } } } if (sentSignatures == null) { if (receivedConfirmations != null && receivedConfirmations.Count > 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.FoundUnexpectedSignatureConfirmations))); } return; } bool allSignaturesConfirmed = false; if (receivedConfirmations != null && sentSignatures.Count == receivedConfirmations.Count) { bool[] matchingSigIndexes = new bool[sentSignatures.Count]; for (int i = 0; i < sentSignatures.Count; ++i) { byte[] sentSignature; bool wasSentSigEncrypted; sentSignatures.GetConfirmation(i, out sentSignature, out wasSentSigEncrypted); for (int j = 0; j < receivedConfirmations.Count; ++j) { byte[] receivedSignature; bool wasReceivedSigEncrypted; if (matchingSigIndexes[j]) { continue; } receivedConfirmations.GetConfirmation(j, out receivedSignature, out wasReceivedSigEncrypted); if ((wasReceivedSigEncrypted == wasSentSigEncrypted) && CryptoHelper.IsEqual(receivedSignature, sentSignature)) { matchingSigIndexes[j] = true; break; } } } int k; for (k = 0; k < matchingSigIndexes.Length; ++k) { if (!matchingSigIndexes[k]) { break; } } if (k == matchingSigIndexes.Length) { allSignaturesConfirmed = true; } } if (!allSignaturesConfirmed) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.NotAllSignaturesConfirmed))); } }
protected void CheckSignatureConfirmation(ReceiveSecurityHeader securityHeader, SecurityProtocolCorrelationState[] correlationStates) { SignatureConfirmations sentSignatureConfirmations = securityHeader.GetSentSignatureConfirmations(); SignatureConfirmations signatureConfirmations = null; if (correlationStates != null) { for (int i = 0; i < correlationStates.Length; i++) { if (correlationStates[i].SignatureConfirmations != null) { signatureConfirmations = correlationStates[i].SignatureConfirmations; break; } } } if (signatureConfirmations == null) { if ((sentSignatureConfirmations != null) && (sentSignatureConfirmations.Count > 0)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(System.ServiceModel.SR.GetString("FoundUnexpectedSignatureConfirmations"))); } } else { bool flag = false; if ((sentSignatureConfirmations != null) && (signatureConfirmations.Count == sentSignatureConfirmations.Count)) { bool[] flagArray = new bool[signatureConfirmations.Count]; for (int j = 0; j < signatureConfirmations.Count; j++) { byte[] buffer; bool flag2; signatureConfirmations.GetConfirmation(j, out buffer, out flag2); for (int k = 0; k < sentSignatureConfirmations.Count; k++) { if (!flagArray[k]) { byte[] buffer2; bool flag3; sentSignatureConfirmations.GetConfirmation(k, out buffer2, out flag3); if ((flag3 == flag2) && CryptoHelper.IsEqual(buffer2, buffer)) { flagArray[k] = true; break; } } } } int index = 0; while (index < flagArray.Length) { if (!flagArray[index]) { break; } index++; } if (index == flagArray.Length) { flag = true; } } if (!flag) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(System.ServiceModel.SR.GetString("NotAllSignaturesConfirmed"))); } } }