File: System\Security\RightsManagement\PublishLicenseTests.cs
Web Access
Project: src\src\Microsoft.DotNet.Wpf\tests\UnitTests\WindowsBase.Tests\WindowsBase.Tests.csproj (WindowsBase.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace System.Security.RightsManagement.Tests;
 
public class PublishLicenseTests
{
    // Taken from https://github.com/dotnet/dotnet-api-docs/blob/main/snippets/csharp/System.Security.RightsManagement/CryptoProvider/BlockSize/Content/Truffle.png.PublishLicense.xml.
    private const string PublishLicenseTemplate = """
<XrML version="1.2" xmlns="">
  <BODY type="Microsoft Rights Label" version="3.0">
    <ISSUEDTIME>2006-04-19T03:14</ISSUEDTIME>
    <ISSUER>
      <OBJECT type="Group-Identity">
        <ID type="Windows">S-1-5-21-2127521184-1604012920-1887927527-1723404</ID>
        <NAME>jack.davis@microsoft.com</NAME>
      </OBJECT>
      <PUBLICKEY>
        <ALGORITHM>RSA</ALGORITHM>
        <PARAMETER name="public-exponent">
          <VALUE encoding="integer32">65537</VALUE>
        </PARAMETER>
        <PARAMETER name="modulus">
          <VALUE encoding="base64" size="1024">r1rbEmgQhskJ29p8xpX00ZlROS13kHMzv0DrOQOn+4mijO3Eanelw1F+mYdSdrByU9MbamWHalUqku6wESZY2DCpRU2C3xw2lCvPtrYqtJkxSt835Ez4quDYVNQq+15DzA6qyl5gc07XuoQi1AC0Nfb5tMy0R85SocFE195VUq4=</VALUE>
        </PARAMETER>
      </PUBLICKEY>
      <SECURITYLEVEL name="SDK" value="5.2.3790.134" />
    </ISSUER>
    <DISTRIBUTIONPOINT>
      <OBJECT type="License-Acquisition-URL">
        <ID type="MS-GUID">{0F45FD50-383B-43EE-90A4-ED013CD0CFE5}</ID>
        <NAME>DRM Server Cluster</NAME>
        <ADDRESS type="URL">http://ed-drm-red3/_wmcs/licensing</ADDRESS>
      </OBJECT>
    </DISTRIBUTIONPOINT>
    <ISSUEDPRINCIPALS>
      <PRINCIPAL internal-id="1">
        <OBJECT type="MS-DRM-Server">
          <ID type="MS-GUID">{1d59a4ae-e6ae-4151-b458-afc5251fe0c3}</ID>
          <ADDRESS type="URL">http://ed-drm-red3/_wmcs</ADDRESS>
        </OBJECT>
        <PUBLICKEY>
          <ALGORITHM>RSA</ALGORITHM>
          <PARAMETER name="public-exponent">
            <VALUE encoding="integer32">65537</VALUE>
          </PARAMETER>
          <PARAMETER name="modulus">
            <VALUE encoding="base64" size="1024">43b8U8yG5ifu38tkAa8K/2DnMOZqgVdj8OZCY+V0332efhaocT7EGV8JE3Htolc2mqTDdLlHQQoJ9jrG36efYYqo4aivo7ddx5w9NlMo9O4mXb+s70LD1VPaM6TywWYYfho+6vTGI1SwPJVgmwS2Qgha/AXOJrK0t5gEX8CZPMo=</VALUE>
          </PARAMETER>
        </PUBLICKEY>
        <SECURITYLEVEL name="Server-Version" value="5.2.3790.134" />
        <SECURITYLEVEL name="Server-SKU" value="RMS 1.0" />
        <ENABLINGBITS type="sealed-key">
          <VALUE encoding="base64" size="1536">OmZReXce7iXuQZ+ySktmUyK0sApe4IxmBTIpzsPaIcYK/ll4SxzxwUO5BLUAV9SY41nPYX+zFMKKOkVC2GdKuKlERXYgR8LvyDIifKm8/OUL2q5XKsW4pRXMfm4ccGokq1lv0pCMS0qIreAmSURdK+FIVjWwPeFQu2N1iKwHigDjHKbva9ICtkxXfZtgEwgakypbFV/T7WqrpWxS8l4bBsIAKcYzuUbLgQOYCc/lJBUWDJqMMPsyV1J65ZHlO3Nd</VALUE>
        </ENABLINGBITS>
      </PRINCIPAL>
    </ISSUEDPRINCIPALS>
    <WORK>
      <OBJECT>
        <ID type="MS-GUID">{9257669d-2753-4f8f-94c6-028987c0434b}</ID>
      </OBJECT>
      <METADATA>
        <OWNER>
          <OBJECT>
            <ID type="Windows" />
            <NAME>jack.davis@microsoft.com</NAME>
          </OBJECT>
        </OWNER>
      </METADATA>
    </WORK>
    <AUTHENTICATEDDATA id="Encrypted-Rights-Data">Wy6PnRT6uGKHJ/b3uRktcgNL2bBMEXsSneudY49Oy2tZy44QG5WWIhjGHbRH5CNHC3zAE4H4KIc7MvYde/GvbHb6reWTfFDsw7P7DfERz5ArqKr6+wpxXVrX3CmA+wA0kh5KmPF142/NRrFpno1dF9Wv/+J8nBwvNFaj+T6LayF5kWG9GIl1bimAUaXZQpyJmxnRXP8T78Q2udn66osD2cm0rx0cl8r7d7m2gXR8VxQMSIc76wQ/nveDgGRlKrCXFKXhj8VqLx5j6OFkpSqxwGYBhqkJMd4wVUkb2Jhw4M8kPivGg1JlK2yBLN3hgXYxq0ASeNloUZteReOK9OE7UyKFGhE9Z5T0sDJiVrzeko/a/GcU/LnlfIko12ImlYaKsyYJmY4FM5Pi6QoMyZQ/18NTRTdiPl0JVYA0tRYDa+J5fBadoyCY5WSDXuePmawI0OEcnhxOfLnB1CgUD+c0+AZpCwVlMocmYTpX90xX6yEOTf/aaNCcotIF+YndxZUvqkVT3HqHnRKrr10ZS6YwDS6YgvJX9w0UaDwMvH3UMEBxC8SKZfKQ0hgg8loZ38dhODT/Bpkf3YnBQ2Zo7bGTESKFGhE9Z5T0sDJiVrzeko/a/GcU/LnlfIko12ImlYaKt70q5TxZhcVjJqTQzap0aD9a9wzYi6mMAVBZE3jDLxNMg8ysSrrFTKezKljLb9Yql5sD00pRZOAVmZL88z1JGLNw/zT42yJzqfchXuMNG/XuPETOsndlGBIRbmGfi4WKqaBsZ3Ac+JULrNIqBk2rupkE0HqSHYtTLxmeamFVZWAYK96yps+gtqPHGLNC36f93l/km1Z5cIg+jOXFhuutXPlu/tg/JqkAshwoAJYe6Fk72qRLXFBQtjtJSoAjlfHLODFKwNkX4Ggc0gGw+8VTxN0rnYnGC2ZKlLIpb3M2WEqpSqnG0Voh0tKruAmcTgXWSKwNlUjWTJ7A95tBUUw9g4pXGX5EXHqCSvw6dqt99eW1dUfrCIXupmR+YVIydID7z/vAMvoO5luQnatPZJrM9ETzyPS/OAcUCR7VpSnVqPFntz3Tb9Hzh+4hZ4dex8EEL34kyxOHoI2JYVJzSd73b7N7TahserIAlyaK0S6IUDmmPrituN5Mc9z2osevePbJsVpgRhiAglqIoJ5J2ReYPkaP3tJYlBWvPvaGsGqxVDDSxqxRCotZTlweB+/Prf2tqK8YTXxxTEsBtXD3xCvsWjiA67BMSduPTnKpbvlZDYEUbf8MFSA9UWVc0Xe3urRqtXVH6wiF7qZkfmFSMnSA+5rebPPxn+BLaMZCpbiOp/EKOZG5qTyHxdkvT8dfytZK0Oqu+1nlcTzlEf7zDve5dMPzF0MhNoT0/4vlOEKqx8gEcA9SNo+bY81mh/Vw0R3FqK8YTXxxTEsBtXD3xCvsWmgJGKbpKm7VZP49gYKGfQruR25tBiNopkPeiAK4UjDiQ7lzfsEN9xWy6g6B8Dp/6fEkKTxHlK5EUwPpszCZDhSwaRYhz6j+W7JeO9LC/LJfZ4dS3+iMTdxtodC2Rrm3Da1ZSPRGQiwTGElOAhc5XJYkdIrv3h+G3ObViRXevP0iLpiC8lf3DRRoPAy8fdQwQCU7ezn9Mdsj9MeezTYyEwp3mCXWx9ZrHfBl8Tpuj0enllQIjpcGWHaZZ0Pce31sRoi8vaoQCRu3pbm4cKKwU/sYlQNBX0D1DE2ZQB6C2NvtwdIU2AZcYvGjXDGaZ5YRh1+Kq/vvRISvQFSbl5uUPMpfgTqhDPYwjIfsEoVv9Rki9dFh4xLuk3n8Mo6lWm+BcQUNPG2fz+8MH3Hd2QfCNNynHEJAbT2KFh5VIKwzoughUBZR9r7VmSoYg2l3YXb5hg==</AUTHENTICATEDDATA>
  </BODY>
  <SIGNATURE>
    <ALGORITHM>RSA PKCS#1-V1.5</ALGORITHM>
    <DIGEST>
      <ALGORITHM>SHA1</ALGORITHM>
      <PARAMETER name="codingtype">
        <VALUE encoding="string">surface-coding</VALUE>
      </PARAMETER>
      <VALUE encoding="base64" size="160">0zkJi3NJke+OehTek7lsFT675JU=</VALUE>
    </DIGEST>
    <VALUE encoding="base64" size="1024">VObVcSvMdfw4pE7S2Q1o/oeE3d72yhuu42hZz5vpcg8elVfRPFrpxECWR1f9cNxSX6j32JJ9W1+vD2YNOeykWg9iIcbq0e82d/WTvkOs5eIFIWtqjGidOvnG7UCUYBktBiKJ5IDeo68P6GfsEtby8o54MlIztvWXeB5T21nhz2I=</VALUE>
  </SIGNATURE>
</XrML>
""";
 
    [Fact]
    public void Ctor_TruffleExample()
    {
        var license = new PublishLicense(PublishLicenseTemplate);
        Assert.Equal(new Guid("9257669d-2753-4f8f-94c6-028987c0434b"), license.ContentId);
        Assert.Null(license.ReferralInfoName);
        Assert.Null(license.ReferralInfoUri);
        Assert.Equal(new Uri("http://ed-drm-red3/_wmcs/licensing"), license.UseLicenseAcquisitionUrl);
    }
 
    [Fact]
    public void Ctor_NullSignedPublishLicense_ThrowsArgumentNullException()
    {
        Assert.Throws<ArgumentNullException>("signedPublishLicense", () => new PublishLicense(null!));
    }
 
    [Theory]
    [InlineData("")]
    [InlineData(" ")]
    [InlineData("<manifest></manifest>")]
    public void Ctor_InvalidSignedPublishLicense_ThrowsRightsManagementException(string signedPublishLicense)
    {
        Assert.Throws<RightsManagementException>(() => new PublishLicense(signedPublishLicense));
    }
 
    [Fact]
    public void Ctor_EmptyUseLicenseAcquisitionUrl_ThrowsArgumentNullException()
    {
        const string PublishLicenseTemplate = """
<XrML version="1.2" xmlns="">
</XrML>
""";
        Assert.Throws<ArgumentNullException>("uriString", () => new PublishLicense(PublishLicenseTemplate));
    }
 
    [Fact]
    public void Ctor_InvalidUseLicenseAcquisitionUrl_ThrowsUriFormatException()
    {
        const string PublishLicenseTemplate = """
<XrML version="1.2" xmlns="">
    <BODY type="Microsoft Rights Label" version="3.0">
        <DISTRIBUTIONPOINT>
            <OBJECT type="License-Acquisition-URL">
                <ID type="MS-GUID">{0F45FD50-383B-43EE-90A4-ED013CD0CFE5}</ID>
                <NAME>DRM Server Cluster</NAME>
                <ADDRESS type="URL">invalid</ADDRESS>
            </OBJECT>
        </DISTRIBUTIONPOINT>
    </BODY>
</XrML>
""";
        Assert.Throws<UriFormatException>(() => new PublishLicense(PublishLicenseTemplate));
    }
 
    [Fact]
    public void Ctor_NoQueries_ThrowsRightsManagementException()
    {
        const string PublishLicenseTemplate = """
<XrML version="1.2" xmlns="">
    <BODY type="Microsoft Rights Label" version="3.0">
        <DISTRIBUTIONPOINT>
            <OBJECT type="License-Acquisition-URL">
                <ID type="MS-GUID">{0F45FD50-383B-43EE-90A4-ED013CD0CFE5}</ID>
                <NAME>DRM Server Cluster</NAME>
                <ADDRESS type="URL">https://google.com</ADDRESS>
            </OBJECT>
        </DISTRIBUTIONPOINT>
    </BODY>
</XrML>
""";
        Assert.Throws<RightsManagementException>(() => new PublishLicense(PublishLicenseTemplate));
    }
 
    [Fact]
    public void Ctor_InvalidContentId_ThrowsFormatException()
    {
        const string PublishLicenseTemplate = """
<XrML version="1.2" xmlns="">
  <BODY type="Microsoft Rights Label" version="3.0">
    <ISSUEDTIME>2006-04-19T03:14</ISSUEDTIME>
    <ISSUER>
      <OBJECT type="Group-Identity">
        <ID type="Windows">S-1-5-21-2127521184-1604012920-1887927527-1723404</ID>
        <NAME>jack.davis@microsoft.com</NAME>
      </OBJECT>
      <PUBLICKEY>
        <ALGORITHM>RSA</ALGORITHM>
        <PARAMETER name="public-exponent">
          <VALUE encoding="integer32">65537</VALUE>
        </PARAMETER>
        <PARAMETER name="modulus">
          <VALUE encoding="base64" size="1024">r1rbEmgQhskJ29p8xpX00ZlROS13kHMzv0DrOQOn+4mijO3Eanelw1F+mYdSdrByU9MbamWHalUqku6wESZY2DCpRU2C3xw2lCvPtrYqtJkxSt835Ez4quDYVNQq+15DzA6qyl5gc07XuoQi1AC0Nfb5tMy0R85SocFE195VUq4=</VALUE>
        </PARAMETER>
      </PUBLICKEY>
      <SECURITYLEVEL name="SDK" value="5.2.3790.134" />
    </ISSUER>
    <DISTRIBUTIONPOINT>
      <OBJECT type="License-Acquisition-URL">
        <ID type="MS-GUID">{0F45FD50-383B-43EE-90A4-ED013CD0CFE5}</ID>
        <NAME>DRM Server Cluster</NAME>
        <ADDRESS type="URL">http://ed-drm-red3/_wmcs/licensing</ADDRESS>
      </OBJECT>
    </DISTRIBUTIONPOINT>
    <ISSUEDPRINCIPALS>
      <PRINCIPAL internal-id="1">
        <OBJECT type="MS-DRM-Server">
          <ID type="MS-GUID">{1d59a4ae-e6ae-4151-b458-afc5251fe0c3}</ID>
          <ADDRESS type="URL">http://ed-drm-red3/_wmcs</ADDRESS>
        </OBJECT>
        <PUBLICKEY>
          <ALGORITHM>RSA</ALGORITHM>
          <PARAMETER name="public-exponent">
            <VALUE encoding="integer32">65537</VALUE>
          </PARAMETER>
          <PARAMETER name="modulus">
            <VALUE encoding="base64" size="1024">43b8U8yG5ifu38tkAa8K/2DnMOZqgVdj8OZCY+V0332efhaocT7EGV8JE3Htolc2mqTDdLlHQQoJ9jrG36efYYqo4aivo7ddx5w9NlMo9O4mXb+s70LD1VPaM6TywWYYfho+6vTGI1SwPJVgmwS2Qgha/AXOJrK0t5gEX8CZPMo=</VALUE>
          </PARAMETER>
        </PUBLICKEY>
        <SECURITYLEVEL name="Server-Version" value="5.2.3790.134" />
        <SECURITYLEVEL name="Server-SKU" value="RMS 1.0" />
        <ENABLINGBITS type="sealed-key">
          <VALUE encoding="base64" size="1536">OmZReXce7iXuQZ+ySktmUyK0sApe4IxmBTIpzsPaIcYK/ll4SxzxwUO5BLUAV9SY41nPYX+zFMKKOkVC2GdKuKlERXYgR8LvyDIifKm8/OUL2q5XKsW4pRXMfm4ccGokq1lv0pCMS0qIreAmSURdK+FIVjWwPeFQu2N1iKwHigDjHKbva9ICtkxXfZtgEwgakypbFV/T7WqrpWxS8l4bBsIAKcYzuUbLgQOYCc/lJBUWDJqMMPsyV1J65ZHlO3Nd</VALUE>
        </ENABLINGBITS>
      </PRINCIPAL>
    </ISSUEDPRINCIPALS>
    <WORK>
      <OBJECT>
        <ID type="MS-GUID">invalid</ID>
      </OBJECT>
      <METADATA>
        <OWNER>
          <OBJECT>
            <ID type="Windows" />
            <NAME>jack.davis@microsoft.com</NAME>
          </OBJECT>
        </OWNER>
      </METADATA>
    </WORK>
    <AUTHENTICATEDDATA id="Encrypted-Rights-Data">Wy6PnRT6uGKHJ/b3uRktcgNL2bBMEXsSneudY49Oy2tZy44QG5WWIhjGHbRH5CNHC3zAE4H4KIc7MvYde/GvbHb6reWTfFDsw7P7DfERz5ArqKr6+wpxXVrX3CmA+wA0kh5KmPF142/NRrFpno1dF9Wv/+J8nBwvNFaj+T6LayF5kWG9GIl1bimAUaXZQpyJmxnRXP8T78Q2udn66osD2cm0rx0cl8r7d7m2gXR8VxQMSIc76wQ/nveDgGRlKrCXFKXhj8VqLx5j6OFkpSqxwGYBhqkJMd4wVUkb2Jhw4M8kPivGg1JlK2yBLN3hgXYxq0ASeNloUZteReOK9OE7UyKFGhE9Z5T0sDJiVrzeko/a/GcU/LnlfIko12ImlYaKsyYJmY4FM5Pi6QoMyZQ/18NTRTdiPl0JVYA0tRYDa+J5fBadoyCY5WSDXuePmawI0OEcnhxOfLnB1CgUD+c0+AZpCwVlMocmYTpX90xX6yEOTf/aaNCcotIF+YndxZUvqkVT3HqHnRKrr10ZS6YwDS6YgvJX9w0UaDwMvH3UMEBxC8SKZfKQ0hgg8loZ38dhODT/Bpkf3YnBQ2Zo7bGTESKFGhE9Z5T0sDJiVrzeko/a/GcU/LnlfIko12ImlYaKt70q5TxZhcVjJqTQzap0aD9a9wzYi6mMAVBZE3jDLxNMg8ysSrrFTKezKljLb9Yql5sD00pRZOAVmZL88z1JGLNw/zT42yJzqfchXuMNG/XuPETOsndlGBIRbmGfi4WKqaBsZ3Ac+JULrNIqBk2rupkE0HqSHYtTLxmeamFVZWAYK96yps+gtqPHGLNC36f93l/km1Z5cIg+jOXFhuutXPlu/tg/JqkAshwoAJYe6Fk72qRLXFBQtjtJSoAjlfHLODFKwNkX4Ggc0gGw+8VTxN0rnYnGC2ZKlLIpb3M2WEqpSqnG0Voh0tKruAmcTgXWSKwNlUjWTJ7A95tBUUw9g4pXGX5EXHqCSvw6dqt99eW1dUfrCIXupmR+YVIydID7z/vAMvoO5luQnatPZJrM9ETzyPS/OAcUCR7VpSnVqPFntz3Tb9Hzh+4hZ4dex8EEL34kyxOHoI2JYVJzSd73b7N7TahserIAlyaK0S6IUDmmPrituN5Mc9z2osevePbJsVpgRhiAglqIoJ5J2ReYPkaP3tJYlBWvPvaGsGqxVDDSxqxRCotZTlweB+/Prf2tqK8YTXxxTEsBtXD3xCvsWjiA67BMSduPTnKpbvlZDYEUbf8MFSA9UWVc0Xe3urRqtXVH6wiF7qZkfmFSMnSA+5rebPPxn+BLaMZCpbiOp/EKOZG5qTyHxdkvT8dfytZK0Oqu+1nlcTzlEf7zDve5dMPzF0MhNoT0/4vlOEKqx8gEcA9SNo+bY81mh/Vw0R3FqK8YTXxxTEsBtXD3xCvsWmgJGKbpKm7VZP49gYKGfQruR25tBiNopkPeiAK4UjDiQ7lzfsEN9xWy6g6B8Dp/6fEkKTxHlK5EUwPpszCZDhSwaRYhz6j+W7JeO9LC/LJfZ4dS3+iMTdxtodC2Rrm3Da1ZSPRGQiwTGElOAhc5XJYkdIrv3h+G3ObViRXevP0iLpiC8lf3DRRoPAy8fdQwQCU7ezn9Mdsj9MeezTYyEwp3mCXWx9ZrHfBl8Tpuj0enllQIjpcGWHaZZ0Pce31sRoi8vaoQCRu3pbm4cKKwU/sYlQNBX0D1DE2ZQB6C2NvtwdIU2AZcYvGjXDGaZ5YRh1+Kq/vvRISvQFSbl5uUPMpfgTqhDPYwjIfsEoVv9Rki9dFh4xLuk3n8Mo6lWm+BcQUNPG2fz+8MH3Hd2QfCNNynHEJAbT2KFh5VIKwzoughUBZR9r7VmSoYg2l3YXb5hg==</AUTHENTICATEDDATA>
  </BODY>
  <SIGNATURE>
    <ALGORITHM>RSA PKCS#1-V1.5</ALGORITHM>
    <DIGEST>
      <ALGORITHM>SHA1</ALGORITHM>
      <PARAMETER name="codingtype">
        <VALUE encoding="string">surface-coding</VALUE>
      </PARAMETER>
      <VALUE encoding="base64" size="160">0zkJi3NJke+OehTek7lsFT675JU=</VALUE>
    </DIGEST>
    <VALUE encoding="base64" size="1024">VObVcSvMdfw4pE7S2Q1o/oeE3d72yhuu42hZz5vpcg8elVfRPFrpxECWR1f9cNxSX6j32JJ9W1+vD2YNOeykWg9iIcbq0e82d/WTvkOs5eIFIWtqjGidOvnG7UCUYBktBiKJ5IDeo68P6GfsEtby8o54MlIztvWXeB5T21nhz2I=</VALUE>
  </SIGNATURE>
</XrML>
""";
        Assert.Throws<FormatException>(() => new PublishLicense(PublishLicenseTemplate));
    }
 
    [Fact]
    public void Ctor_NoContentId_ThrowsRightsManagementException()
    {
        const string PublishLicenseTemplate = """
<XrML version="1.2" xmlns="">
  <BODY type="Microsoft Rights Label" version="3.0">
    <ISSUEDTIME>2006-04-19T03:14</ISSUEDTIME>
    <ISSUER>
      <OBJECT type="Group-Identity">
        <ID type="Windows">S-1-5-21-2127521184-1604012920-1887927527-1723404</ID>
        <NAME>jack.davis@microsoft.com</NAME>
      </OBJECT>
      <PUBLICKEY>
        <ALGORITHM>RSA</ALGORITHM>
        <PARAMETER name="public-exponent">
          <VALUE encoding="integer32">65537</VALUE>
        </PARAMETER>
        <PARAMETER name="modulus">
          <VALUE encoding="base64" size="1024">r1rbEmgQhskJ29p8xpX00ZlROS13kHMzv0DrOQOn+4mijO3Eanelw1F+mYdSdrByU9MbamWHalUqku6wESZY2DCpRU2C3xw2lCvPtrYqtJkxSt835Ez4quDYVNQq+15DzA6qyl5gc07XuoQi1AC0Nfb5tMy0R85SocFE195VUq4=</VALUE>
        </PARAMETER>
      </PUBLICKEY>
      <SECURITYLEVEL name="SDK" value="5.2.3790.134" />
    </ISSUER>
    <DISTRIBUTIONPOINT>
      <OBJECT type="License-Acquisition-URL">
        <ID type="MS-GUID">{0F45FD50-383B-43EE-90A4-ED013CD0CFE5}</ID>
        <NAME>DRM Server Cluster</NAME>
        <ADDRESS type="URL">http://ed-drm-red3/_wmcs/licensing</ADDRESS>
      </OBJECT>
    </DISTRIBUTIONPOINT>
    <ISSUEDPRINCIPALS>
      <PRINCIPAL internal-id="1">
        <OBJECT type="MS-DRM-Server">
          <ID type="MS-GUID">{1d59a4ae-e6ae-4151-b458-afc5251fe0c3}</ID>
          <ADDRESS type="URL">http://ed-drm-red3/_wmcs</ADDRESS>
        </OBJECT>
        <PUBLICKEY>
          <ALGORITHM>RSA</ALGORITHM>
          <PARAMETER name="public-exponent">
            <VALUE encoding="integer32">65537</VALUE>
          </PARAMETER>
          <PARAMETER name="modulus">
            <VALUE encoding="base64" size="1024">43b8U8yG5ifu38tkAa8K/2DnMOZqgVdj8OZCY+V0332efhaocT7EGV8JE3Htolc2mqTDdLlHQQoJ9jrG36efYYqo4aivo7ddx5w9NlMo9O4mXb+s70LD1VPaM6TywWYYfho+6vTGI1SwPJVgmwS2Qgha/AXOJrK0t5gEX8CZPMo=</VALUE>
          </PARAMETER>
        </PUBLICKEY>
        <SECURITYLEVEL name="Server-Version" value="5.2.3790.134" />
        <SECURITYLEVEL name="Server-SKU" value="RMS 1.0" />
        <ENABLINGBITS type="sealed-key">
          <VALUE encoding="base64" size="1536">OmZReXce7iXuQZ+ySktmUyK0sApe4IxmBTIpzsPaIcYK/ll4SxzxwUO5BLUAV9SY41nPYX+zFMKKOkVC2GdKuKlERXYgR8LvyDIifKm8/OUL2q5XKsW4pRXMfm4ccGokq1lv0pCMS0qIreAmSURdK+FIVjWwPeFQu2N1iKwHigDjHKbva9ICtkxXfZtgEwgakypbFV/T7WqrpWxS8l4bBsIAKcYzuUbLgQOYCc/lJBUWDJqMMPsyV1J65ZHlO3Nd</VALUE>
        </ENABLINGBITS>
      </PRINCIPAL>
    </ISSUEDPRINCIPALS>
    <WORK>
      <METADATA>
        <OWNER>
          <OBJECT>
            <ID type="Windows" />
            <NAME>jack.davis@microsoft.com</NAME>
          </OBJECT>
        </OWNER>
      </METADATA>
    </WORK>
    <AUTHENTICATEDDATA id="Encrypted-Rights-Data">Wy6PnRT6uGKHJ/b3uRktcgNL2bBMEXsSneudY49Oy2tZy44QG5WWIhjGHbRH5CNHC3zAE4H4KIc7MvYde/GvbHb6reWTfFDsw7P7DfERz5ArqKr6+wpxXVrX3CmA+wA0kh5KmPF142/NRrFpno1dF9Wv/+J8nBwvNFaj+T6LayF5kWG9GIl1bimAUaXZQpyJmxnRXP8T78Q2udn66osD2cm0rx0cl8r7d7m2gXR8VxQMSIc76wQ/nveDgGRlKrCXFKXhj8VqLx5j6OFkpSqxwGYBhqkJMd4wVUkb2Jhw4M8kPivGg1JlK2yBLN3hgXYxq0ASeNloUZteReOK9OE7UyKFGhE9Z5T0sDJiVrzeko/a/GcU/LnlfIko12ImlYaKsyYJmY4FM5Pi6QoMyZQ/18NTRTdiPl0JVYA0tRYDa+J5fBadoyCY5WSDXuePmawI0OEcnhxOfLnB1CgUD+c0+AZpCwVlMocmYTpX90xX6yEOTf/aaNCcotIF+YndxZUvqkVT3HqHnRKrr10ZS6YwDS6YgvJX9w0UaDwMvH3UMEBxC8SKZfKQ0hgg8loZ38dhODT/Bpkf3YnBQ2Zo7bGTESKFGhE9Z5T0sDJiVrzeko/a/GcU/LnlfIko12ImlYaKt70q5TxZhcVjJqTQzap0aD9a9wzYi6mMAVBZE3jDLxNMg8ysSrrFTKezKljLb9Yql5sD00pRZOAVmZL88z1JGLNw/zT42yJzqfchXuMNG/XuPETOsndlGBIRbmGfi4WKqaBsZ3Ac+JULrNIqBk2rupkE0HqSHYtTLxmeamFVZWAYK96yps+gtqPHGLNC36f93l/km1Z5cIg+jOXFhuutXPlu/tg/JqkAshwoAJYe6Fk72qRLXFBQtjtJSoAjlfHLODFKwNkX4Ggc0gGw+8VTxN0rnYnGC2ZKlLIpb3M2WEqpSqnG0Voh0tKruAmcTgXWSKwNlUjWTJ7A95tBUUw9g4pXGX5EXHqCSvw6dqt99eW1dUfrCIXupmR+YVIydID7z/vAMvoO5luQnatPZJrM9ETzyPS/OAcUCR7VpSnVqPFntz3Tb9Hzh+4hZ4dex8EEL34kyxOHoI2JYVJzSd73b7N7TahserIAlyaK0S6IUDmmPrituN5Mc9z2osevePbJsVpgRhiAglqIoJ5J2ReYPkaP3tJYlBWvPvaGsGqxVDDSxqxRCotZTlweB+/Prf2tqK8YTXxxTEsBtXD3xCvsWjiA67BMSduPTnKpbvlZDYEUbf8MFSA9UWVc0Xe3urRqtXVH6wiF7qZkfmFSMnSA+5rebPPxn+BLaMZCpbiOp/EKOZG5qTyHxdkvT8dfytZK0Oqu+1nlcTzlEf7zDve5dMPzF0MhNoT0/4vlOEKqx8gEcA9SNo+bY81mh/Vw0R3FqK8YTXxxTEsBtXD3xCvsWmgJGKbpKm7VZP49gYKGfQruR25tBiNopkPeiAK4UjDiQ7lzfsEN9xWy6g6B8Dp/6fEkKTxHlK5EUwPpszCZDhSwaRYhz6j+W7JeO9LC/LJfZ4dS3+iMTdxtodC2Rrm3Da1ZSPRGQiwTGElOAhc5XJYkdIrv3h+G3ObViRXevP0iLpiC8lf3DRRoPAy8fdQwQCU7ezn9Mdsj9MeezTYyEwp3mCXWx9ZrHfBl8Tpuj0enllQIjpcGWHaZZ0Pce31sRoi8vaoQCRu3pbm4cKKwU/sYlQNBX0D1DE2ZQB6C2NvtwdIU2AZcYvGjXDGaZ5YRh1+Kq/vvRISvQFSbl5uUPMpfgTqhDPYwjIfsEoVv9Rki9dFh4xLuk3n8Mo6lWm+BcQUNPG2fz+8MH3Hd2QfCNNynHEJAbT2KFh5VIKwzoughUBZR9r7VmSoYg2l3YXb5hg==</AUTHENTICATEDDATA>
  </BODY>
  <SIGNATURE>
    <ALGORITHM>RSA PKCS#1-V1.5</ALGORITHM>
    <DIGEST>
      <ALGORITHM>SHA1</ALGORITHM>
      <PARAMETER name="codingtype">
        <VALUE encoding="string">surface-coding</VALUE>
      </PARAMETER>
      <VALUE encoding="base64" size="160">0zkJi3NJke+OehTek7lsFT675JU=</VALUE>
    </DIGEST>
    <VALUE encoding="base64" size="1024">VObVcSvMdfw4pE7S2Q1o/oeE3d72yhuu42hZz5vpcg8elVfRPFrpxECWR1f9cNxSX6j32JJ9W1+vD2YNOeykWg9iIcbq0e82d/WTvkOs5eIFIWtqjGidOvnG7UCUYBktBiKJ5IDeo68P6GfsEtby8o54MlIztvWXeB5T21nhz2I=</VALUE>
  </SIGNATURE>
</XrML>
""";
        Assert.Throws<RightsManagementException>(() => new PublishLicense(PublishLicenseTemplate));
    }
 
    [Fact]
    public void AcquireUseLicense_NullSecureEnvironment_ThrowsArgumentNullException()
    {
        var license = new PublishLicense(PublishLicenseTemplate);
        Assert.Throws<ArgumentNullException>("secureEnvironment", () => license.AcquireUseLicense(null));
    }
 
    [Fact]
    public void AcquireUseLicenseNoUI_NullSecureEnvironment_ThrowsArgumentNullException()
    {
        var license = new PublishLicense(PublishLicenseTemplate);
        Assert.Throws<ArgumentNullException>("secureEnvironment", () => license.AcquireUseLicenseNoUI(null));
    }
 
    [Fact]
    public void DecryptUnsignedPublishLicense_Invoke_Success()
    {
        _ = new PublishLicense(PublishLicenseTemplate);
    }
 
    [Fact]
    public void DecryptUnsignedPublishLicense_NullCryptoProvider_ThrowsArgumentNullException()
    {
        var license = new PublishLicense(PublishLicenseTemplate);
        Assert.Throws<ArgumentNullException>("cryptoProvider", () => license.DecryptUnsignedPublishLicense(null));
    }
}