Share via


Reference Class

NOTE: This Class is now obsolete.

Specifies a digest algorithm and digest value, and optionally an identifier of the object being signed, the type of the object, and/or a list of transforms to be applied prior to digesting.

Namespace: Microsoft.Web.Services2.Security
Assembly: Microsoft.Web.Services2 (in microsoft.web.services2.dll)

Usage

'Usage
Dim reference1 As New Reference()

Syntax

'Declaration
Public Class Reference
    Inherits SignatureReference
public class Reference : SignatureReference
public ref class Reference : public SignatureReference
public class Reference extends SignatureReference
public class Reference extends SignatureReference

Example

The following code example shows how to identify a portion of a SOAP message, which is a SOAP header named OrderTimeHeader in the following example, and specify that portion of the SOAP message be signed.

private void button1_Click(object sender, System.EventArgs e)
{
   HeaderID.Service1Wse proxy = new Service1Wse();
   HeaderID.OrderTimeHeader header = new OrderTimeHeader();

   // Populate the contents of the SOAP header.
   header.Created = DateTime.Now;
   header.Expires = header.Created.AddMinutes(5);

   // Specify the unique identifier for reference.
   header.Id = "Id:05d2518d-d6db-481f-846d-2e8872b6e56d";

   // Assign the SOAP header to the member variable of the proxy class.
   proxy.TimeHeaderValue = header;

   // Get the X.509 certificate.
   X509SecurityToken token = GetSecurityToken(true);

   // Add the X.509 certificate to the WS-Security SOAP header.
   proxy.RequestSoapContext.Security.Tokens.Add(token);

   // Create a Signature.
   Signature sig = new Signature(token);

   // Note the addition of a # sign that prcecedes the value of the Id property
   // of the SOAP header.
   Reference soapRef = new Reference("#Id:05d2518d-d6db-481f-846d-2e8872b6e56d");

   // Add the reference to the signature.
   sig.AddReference(soapRef);

   // Add the digital signature to the SOAP message.
   proxy.RequestSoapContext.Security.Elements.Add(sig);

   // Call the XML Web service.
   Return.Text = proxy.EchoString(Send.Text);
   foreach (ISecurityElement secElm in proxy.ResponseSoapContext.Security.Elements)
   {
     if ( secElm is EncryptedData)
     {
        EncryptedData enc = secElm as EncryptedData;
        String[] encryptionDetails = new String[]{enc.TargetElement.Name,enc.Type};
        ListViewItem lvItem = new ListViewItem(encryptionDetails);
        encryptedElements.Items.Add(lvItem);
     }
   }
}

Remarks

Each Reference includes the digest method and resulting digest value calculated over the identified data object. It also may include transformations that produced the input to the digest operation. A data object is signed by computing its digest value and a signature over that value.

Inheritance Hierarchy

System.Object
   Microsoft.Web.Services2.Security.SignatureReference
    Microsoft.Web.Services2.Security.Reference

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Platforms

Development Platforms

Windows XP Home Edition, Windows XP Professional, Windows Server 2003, Windows Longhorn, and Windows 2000

Target Platforms

Windows 2000, Windows 2000 Server, Windows 2000 Advanced Server, Windows XP Home Edition, Windows XP Professional, Windows Server 2003, Windows Longhorn, Pocket PC, Windows CE, Smart Phone

See Also

Reference

Microsoft.Web.Services2.Security Namespace

Other Resources

Reference Members