internal override SecurityTimestamp ReadTimestamp(XmlDictionaryReader reader, string digestAlgorithm, SignatureResourcePool resourcePool) { bool canonicalize = digestAlgorithm != null && reader.CanCanonicalize; HashStream hashStream = null; reader.MoveToStartElement(XD.UtilityDictionary.Timestamp, XD.UtilityDictionary.Namespace); if (canonicalize) { hashStream = resourcePool.TakeHashStream(digestAlgorithm); reader.StartCanonicalization(hashStream, false, null); } string id = reader.GetAttribute(XD.UtilityDictionary.IdAttribute, XD.UtilityDictionary.Namespace); reader.ReadStartElement(); reader.ReadStartElement(XD.UtilityDictionary.CreatedElement, XD.UtilityDictionary.Namespace); DateTime creationTimeUtc = reader.ReadContentAsDateTime().ToUniversalTime(); reader.ReadEndElement(); DateTime expiryTimeUtc; if (reader.IsStartElement(XD.UtilityDictionary.ExpiresElement, XD.UtilityDictionary.Namespace)) { reader.ReadStartElement(); expiryTimeUtc = reader.ReadContentAsDateTime().ToUniversalTime(); reader.ReadEndElement(); } else { expiryTimeUtc = SecurityUtils.MaxUtcDateTime; } reader.ReadEndElement(); byte[] digest; if (canonicalize) { reader.EndCanonicalization(); digest = hashStream.FlushHashAndGetValue(); } else { digest = null; } return(new SecurityTimestamp(creationTimeUtc, expiryTimeUtc, id, digestAlgorithm, digest)); }
internal override SecurityTimestamp ReadTimestamp(XmlDictionaryReader reader, string digestAlgorithm, SignatureResourcePool resourcePool) { DateTime maxUtcDateTime; byte[] buffer; bool flag = (digestAlgorithm != null) && reader.CanCanonicalize; HashStream stream = null; reader.MoveToStartElement(System.ServiceModel.XD.UtilityDictionary.Timestamp, System.ServiceModel.XD.UtilityDictionary.Namespace); if (flag) { stream = resourcePool.TakeHashStream(digestAlgorithm); reader.StartCanonicalization(stream, false, null); } string attribute = reader.GetAttribute(System.ServiceModel.XD.UtilityDictionary.IdAttribute, System.ServiceModel.XD.UtilityDictionary.Namespace); reader.ReadStartElement(); reader.ReadStartElement(System.ServiceModel.XD.UtilityDictionary.CreatedElement, System.ServiceModel.XD.UtilityDictionary.Namespace); DateTime creationTimeUtc = reader.ReadContentAsDateTime().ToUniversalTime(); reader.ReadEndElement(); if (reader.IsStartElement(System.ServiceModel.XD.UtilityDictionary.ExpiresElement, System.ServiceModel.XD.UtilityDictionary.Namespace)) { reader.ReadStartElement(); maxUtcDateTime = reader.ReadContentAsDateTime().ToUniversalTime(); reader.ReadEndElement(); } else { maxUtcDateTime = System.ServiceModel.Security.SecurityUtils.MaxUtcDateTime; } reader.ReadEndElement(); if (flag) { reader.EndCanonicalization(); buffer = stream.FlushHashAndGetValue(); } else { buffer = null; } return(new SecurityTimestamp(creationTimeUtc, maxUtcDateTime, attribute, digestAlgorithm, buffer)); }
public static LinkItem ReadLinkItem(XmlDictionaryReader reader) { LinkItem linkItem = new LinkItem(); if (reader.IsStartElement("Id", ns)) { reader.MoveToContent(); linkItem.Id = int.Parse(reader.ReadString()); reader.MoveToContent(); reader.ReadEndElement(); } else { throw new XmlException("ExpectedElementMissing: Id element was expected."); } if (reader.IsStartElement("Title", ns)) { reader.MoveToContent(); linkItem.Title = reader.ReadString(); reader.MoveToContent(); reader.ReadEndElement(); } else { throw new XmlException("ExpectedElementMissing: Title element was expected."); } if (reader.IsStartElement("Description", ns)) { reader.MoveToContent(); linkItem.Description = reader.ReadString(); reader.MoveToContent(); reader.ReadEndElement(); } else { throw new XmlException("ExpectedElementMissing: Description element was expected."); } if (reader.IsStartElement("DateStart", ns)) { reader.MoveToContent(); reader.Read(); linkItem.DateStart = reader.ReadContentAsDateTime(); reader.MoveToContent(); reader.ReadEndElement(); } else { throw new XmlException("ExpectedElementMissing: DateStart element was expected."); } if (reader.IsStartElement("DateEnd", ns)) { reader.MoveToContent(); reader.Read(); linkItem.DateEnd = reader.ReadContentAsDateTime(); reader.MoveToContent(); reader.ReadEndElement(); } // optional if (reader.IsStartElement("Url", ns)) { reader.MoveToContent(); linkItem.Url = reader.ReadString(); reader.MoveToContent(); reader.ReadEndElement(); } else { throw new XmlException("ExpectedElementMissing: Url element was expected."); } return(linkItem); }