| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- //----------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //------------------------------------------------------------
- namespace System.ServiceModel.Security
- {
- using System.Collections.Generic;
- using System.ServiceModel.Channels;
- using System.ServiceModel;
- using System.ServiceModel.Description;
- using System.Diagnostics;
- using System.IO;
- using System.IdentityModel.Tokens;
- using System.Security.Cryptography;
- using System.ServiceModel.Security.Tokens;
- using System.Xml;
- using System.ServiceModel.Diagnostics;
- using ISignatureValueSecurityElement = System.IdentityModel.ISignatureValueSecurityElement;
- sealed class WSSecurityOneDotOneSendSecurityHeader : WSSecurityOneDotZeroSendSecurityHeader
- {
- public WSSecurityOneDotOneSendSecurityHeader(Message message, string actor, bool mustUnderstand, bool relay,
- SecurityStandardsManager standardsManager,
- SecurityAlgorithmSuite algorithmSuite,
- MessageDirection direction)
- : base(message, actor, mustUnderstand, relay, standardsManager, algorithmSuite, direction)
- {
- }
- protected override ISignatureValueSecurityElement[] CreateSignatureConfirmationElements(SignatureConfirmations signatureConfirmations)
- {
- if (signatureConfirmations == null || signatureConfirmations.Count == 0)
- {
- return null;
- }
- ISignatureValueSecurityElement[] result = new ISignatureValueSecurityElement[signatureConfirmations.Count];
- for (int i = 0; i < signatureConfirmations.Count; ++i)
- {
- byte[] sigValue;
- bool isEncrypted;
- signatureConfirmations.GetConfirmation(i, out sigValue, out isEncrypted);
- result[i] = new SignatureConfirmationElement(this.GenerateId(), sigValue, this.StandardsManager.SecurityVersion);
- }
- return result;
- }
- protected override EncryptedHeader EncryptHeader(MessageHeader plainTextHeader, SymmetricAlgorithm algorithm,
- SecurityKeyIdentifier keyIdentifier, MessageVersion version, string id, MemoryStream stream)
- {
- // We are not reading EncryptedData from the wire here, hence pass false.
- EncryptedHeaderXml encryptedHeaderXml = new EncryptedHeaderXml(version, false);
- encryptedHeaderXml.SecurityTokenSerializer = this.StandardsManager.SecurityTokenSerializer;
- encryptedHeaderXml.EncryptionMethod = this.EncryptionAlgorithm;
- encryptedHeaderXml.EncryptionMethodDictionaryString = this.EncryptionAlgorithmDictionaryString;
- encryptedHeaderXml.KeyIdentifier = keyIdentifier;
- encryptedHeaderXml.Id = id;
- // The Encrypted Headers MustUnderstand, Relay and Actor attributes will always match the
- // Security Headers value. The values for these on the Encrypted Header and its decrypted
- // form can be different.
- encryptedHeaderXml.MustUnderstand = this.MustUnderstand;
- encryptedHeaderXml.Relay = this.Relay;
- encryptedHeaderXml.Actor = this.Actor;
- encryptedHeaderXml.SetUpEncryption(algorithm, stream);
- return new EncryptedHeader(plainTextHeader, encryptedHeaderXml, EncryptedHeaderXml.ElementName.Value, EncryptedHeaderXml.NamespaceUri.Value, version);
- }
- }
- }
-
|