private void ReadTimestamp(XmlDictionaryReader reader) { if (_timestamp != null) { throw TraceUtility.ThrowHelperError(new MessageSecurityException(SR.DuplicateTimestampInSecurityHeader), Message); } bool expectTimestampToBeSigned = RequireMessageProtection || _hasEndorsingOrSignedEndorsingSupportingTokens; string expectedDigestAlgorithm = expectTimestampToBeSigned ? AlgorithmSuite.DefaultDigestAlgorithm : null; SignatureResourcePool resourcePool = expectTimestampToBeSigned ? ResourcePool : null; _timestamp = StandardsManager.WSUtilitySpecificationVersion.ReadTimestamp(reader, expectedDigestAlgorithm, resourcePool); _timestamp.ValidateRangeAndFreshness(_replayWindow, _clockSkew); ElementManager.AppendTimestamp(_timestamp); }