public EncryptedTypeElement(SecurityTokenSerializer keyInfoSerializer) { _cipherData = new CipherDataElement(); _encryptionMethod = new EncryptionMethodElement(); _keyInfo = new KeyInfo(keyInfoSerializer); _properties = new List<string>(); _keyInfoSerializer = keyInfoSerializer; }
/// <summary> /// Reads an SecurityKeyIdentifier from a XML stream. /// </summary> /// <param name="reader">An XML reader positioned at an SecurityKeyIdentifier (ds: KeyInfo) as defined in 'http://www.w3.org/TR/xmldsig-core'.</param> /// <returns>SecurityKeyIdentifier.</returns> /// <exception cref="ArgumentNullException">The <paramref name="reader"/> is null.</exception> /// <exception cref="InvalidOperationException">If the <paramref name="reader"/> is not positioned at KeyInfo element.</exception> protected override SecurityKeyIdentifier ReadKeyIdentifierCore(XmlReader reader) { if (reader == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("reader"); } if (reader.IsStartElement(XmlSignatureConstants.Elements.KeyInfo, XmlSignatureConstants.Namespace)) { KeyInfo keyInfo = new KeyInfo(this); keyInfo.ReadXml(XmlDictionaryReader.CreateDictionaryReader(reader)); return keyInfo.KeyIdentifier; } else { throw DiagnosticUtility.ExceptionUtility.ThrowHelperXml(reader, SR.GetString(SR.ID4192)); } }
/// <summary> /// Reads an "EncryptedType" xmlfragment /// </summary> /// <remarks>Assumes that the reader is positioned on an "EncryptedData" or "EncryptedKey" element. /// Both of these elements extend EncryptedType</remarks> public virtual void ReadXml(XmlDictionaryReader reader) { if (reader == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("reader"); } reader.MoveToContent(); _id = reader.GetAttribute(XmlEncryptionConstants.Attributes.Id, null); _type = reader.GetAttribute(XmlEncryptionConstants.Attributes.Type, null); _mimeType = reader.GetAttribute(XmlEncryptionConstants.Attributes.MimeType, null); _encoding = reader.GetAttribute(XmlEncryptionConstants.Attributes.Encoding, null); reader.ReadStartElement(); reader.MoveToContent(); // <EncryptedMethod>? 0 - 1 if (reader.IsStartElement(XmlEncryptionConstants.Elements.EncryptionMethod, XmlEncryptionConstants.Namespace)) { _encryptionMethod.ReadXml(reader); } // <KeyInfo>? 0 - 1 reader.MoveToContent(); if (reader.IsStartElement(XD.XmlSignatureDictionary.KeyInfo.Value, XD.XmlSignatureDictionary.Namespace.Value)) { _keyInfo = new KeyInfo(_keyInfoSerializer); // if there is a keyInfo, we need to reset the default which is // contains a single EmptyKeyInfoClause if (_keyInfoSerializer.CanReadKeyIdentifier(reader)) { _keyInfo.KeyIdentifier = _keyInfoSerializer.ReadKeyIdentifier(reader); } else { _keyInfo.ReadXml(reader); } } // <CipherData> 1 reader.MoveToContent(); _cipherData.ReadXml(reader); ReadExtensions(reader); // should be on EndElement for the extended type. reader.MoveToContent(); reader.ReadEndElement(); }