License property types

Constants used to refer to license properties when calling IpcGetLicenseProperty, IpcGetSerializedLicenseProperty or IpcSetLicenseProperty.

IPC_LI_VALIDITY_TIME

1

Specifies the time period over which a license is valid. The property is represented as an IPC_TERM structure.

For IpcSetLicenseProperty, the pvProperty parameter is of type PCIPC_TERM.

For IpcGetLicenseProperty and IpcGetSerializedLicenseProperty, the ppvProperty parameter is of type PIPC_TERM*.

When using this property with the IpcGetSerializedLicenseProperty function, the hKey parameter is required.

IPC_LI_INTERVAL_TIME

2

Specifies the time period, in days, over which a license may be used to decrypt content without having to renew the license request from the server. The property is represented as an LDPWORD type.

For IpcSetLicenseProperty, the pvProperty parameter is of type LPDWORD.

For IpcGetLicenseProperty and IpcGetSerializedLicenseProperty, the ppvProperty parameter is of type LPDWORD*.

[!Important]

  • The maximum permitted value for the time interval is 65535.
  • Setting the value to 0 will require the application to connect to the server each time content is consumed.
  • If this value is not set in the license, IpcGetLicenseProperty will return IPCERROR_LICENSE_INTERVAL_TIME_NOT_SET.

When using this property with the IpcGetSerializedLicenseProperty function, the hKey parameter is required.

IPC_LI_OWNER

3

Specifies the license owner. The property is represented as an IPC_USER structure.

For IpcSetLicenseProperty, the pvProperty parameter is of type PCIPC_USER.

For IpcGetLicenseProperty and IpcGetSerializedLicenseProperty, the ppvProperty parameter is of type PIPC_USER*.

This property cannot be deleted with IpcSetLicenseProperty. If the fDelete parameter is specified with this property, IpcSetLicenseProperty will return E_INVALIDARG.

IPC_LI_USER_RIGHTS_LIST

4

Specifies a user rights list. The property is represented as an IPC_USER_RIGHTS_LIST structure.

Your application should explicitly add "owner" rights when creating a license from scratch using IpcCreateLicenseFromScratch. For more information see, Add explicit owner rights.

For IpcSetLicenseProperty, the pvProperty parameter is of type PCIPC_USER_RIGHTS_LIST.

This property cannot be deleted with IpcSetLicenseProperty. If the fDelete parameter is specified with this property, IpcSetLicenseProperty will return E_INVALIDARG.

For IpcGetLicenseProperty and IpcGetSerializedLicenseProperty, the ppvProperty parameter is of type PIPC_USER_RIGHTS_LIST*.

When using this property with the IpcGetSerializedLicenseProperty function, the hKey parameter is required.

IPC_LI_APP_SPECIFIC_DATA

5

Specifies application-defined properties of the license that can be used for additional logging. The properties are represented as an IPC_NAME_VALUE_LIST structure.

For IpcSetLicenseProperty, the pvProperty parameter is of type PCIPC_NAME_VALUE_LIST.

For IpcGetLicenseProperty and IpcGetSerializedLicenseProperty, the ppvProperty parameter is of type PIPC_NAME_VALUE_LIST*.

When using this property with the IpcGetSerializedLicenseProperty function, the hKey parameter is required.

IPC_LI_DEPRECATED_ENCRYPTION_ALGORITHMS

6

Specifies whether deprecated encryption algorithms should be used. The property is a BOOL value that is TRUE if deprecated algorithms should be used; FALSE otherwise.

This property should only be used by applications that protect content that will be consumed by AD RMS applications built using the MSDRM library (for more information, see AD RMS Functions.

Setting this property to TRUE:

  • Allows you to generate licenses compatible with the MSDRM library.
  • May cause your application to protect content in a way that does not conform to your customers' standards for content protection.
  • Will prevent your application from benefitting from any cryptographic enhancements added to RMS SDK 2.1 going forward.

For IpcSetLicenseProperty, the ppvProperty parameter is a pointer to type const BOOL.

This property cannot be deleted with IpcSetLicenseProperty. If the fDelete parameter is specified with this property, IpcSetLicenseProperty will return E_INVALIDARG.

When using this property with the IpcGetSerializedLicenseProperty function, the hKey parameter is required.

Note

License buffer data is encoded in UTF8 when using the default flags and UTF16 when using the IPC_LI_DEPRECATED_ENCRYPTION_ALGORITHMS flag.

IPC_LI_CONNECTION_INFO

7

Specifies the connection info of the server that issues this license. The property is represented as an IPC_CONNECTION_INFO structure. This property is only used for querying, and cannot be used with IpcSetLicenseProperty.

For IpcGetLicenseProperty and IpcGetSerializedLicenseProperty, the ppvProperty parameter is of type PIPC_CONNECTION_INFO*.

IPC_LI_DESCRIPTOR

8

Specifies a language-specific name and description from the license. The property is represented as an IPC_TEMPLATE_INFO structure.

For IpcSetLicenseProperty:

  • The pvProperty parameter is of type PCIPC_TEMPLATE_INFO.

  • The IPC_TEMPLATE_INFO::wszID field is not required and is ignored.

  • These members of IPC_TEMPLATE_INFO are read-only:

    • wszIssuerDisplayName
    • fFromTemplate

For IpcGetLicenseProperty and IpcGetSerializedLicenseProperty, the ppvProperty parameter is of type PIPC_TEMPLATE_INFO*. The IPC_TEMPLATE_INFO::wszID field is returned as NULL if IPC_TEMPLATE_INFO::fFromTemplate is FALSE.

When using this property with the IpcGetSerializedLicenseProperty function, the hKey parameter is required.

IPC_LI_REFERRAL_INFO_URL

10

Specifies an application defined URL where a user can get additional information to access the content.

For IpcSetLicenseProperty, the pvProperty parameter is of type LPCWSTR.

For IpcGetLicenseProperty and IpcGetSerializedLicenseProperty, the ppvProperty parameter is of type LPWSTR*.

If referral information is not set in the license, a default value will be returned.

IPC_LI_CONTENT_KEY

11

Specifies that this license should reuse an existing key for protecting the content. Existing content republished this way does not need to be re-encrypted by using IpcEncrypt if the underlying content has not changed.

The IPC_LI_DEPRECATED_ENCRYPTION_ALGORITHMS property may not be used in conjunction with this property.

This property cannot be deleted with IpcSetLicenseProperty. If the fDelete parameter is specified with this property, IpcSetLicenseProperty will return E_INVALIDARG.

This is not a valid license property for IpcGetSerializedLicenseProperty.

For IpcSetLicenseProperty, the pvProperty is of type IPC_KEY_HANDLE.

For IpcGetLicenseProperty, the ppvProperty is of type PIPC_KEY_HANDLE. This should be closed with IpcCloseHandle.

IPC_LI_CONTENT_ID

12

Specifies unique Id of the content.

For IpcSetLicenseProperty, the pvProperty parameter is of type LPWSTR.

For IpcGetLicenseProperty and IpcGetSerializedLicenseProperty, the ppvLicenseInfo is of type LPWSTR*.

IPC_LI_APP_SPECIFIC_DATA_NO_ENCRYPTION

13

Specifies application defined properties of the license, that can be used for additional logging. This information will not be part of encrypted rights in license.

Since it will be in the clear, its not recommended that you put any sensitive information in this data.

For IpcSetLicenseProperty, the pvLicenseInfo is of type PCIPC_NAME_VALUE_LIST.

For IpcGetLicenseProperty and IpcGetSerializedLicenseProperty, the pvLicenseInfo is of type PIPC_NAME_VALUE_LIST*.

IPC_LI_ISSUED_TIME

14

Specifies the issued time of the license. This property is only used for querying and cannot be used with IpcSetLicenseProperty.

For IpcGetLicenseProperty and IpcGetSerializedLicenseProperty, the pvLicenseInfo is of type FILETIME*.

IPC_LI_AUTO_GRANT_OWNER_FULL_ACCESS

15

Specifies whether the SDK should automatically grant the owner full access when the access control list does not have an entry for the owner.

For IpcSetLicenseProperty, the pvLicenseInfo parameter is of type BOOL.

For IpcGetLicenseProperty, the ppvLicenseInfo parameter is of type PBOOL*.

IPC_LI_PREFERRED_ENCRYPTION_PACKAGE

Sets the preferred encryption package.

For IpcSetLicenseProperty, pvLicenseInfo parameter is of type LPDWORD*

For IpcGetLicenseProperty, ppvLicenseInfo parameter is of type LPDWORD.

For constants used to set the encryption package, see Preferred encryption.

Requirements

Minimum supported client
Windows Vista with SP2
Minimum supported server
Windows Server 2008
Header
Ipcprot.h (include Msipc.h)