Partager via


Fonction DRMCreateIssuanceLicense (msdrm.h)

[Le Kit de développement logiciel (SDK) AD RMS tirant parti des fonctionnalités exposées par le client dans Msdrm.dll est disponible dans Windows Server 2008, Windows Vista, Windows Server 2008 R2, Windows 7, Windows Server 2012 et Windows 8. Il sera peut-être modifié ou indisponible dans les versions ultérieures. Utilisez plutôt active Directory Rights Management Services SDK 2.1, qui tire parti des fonctionnalités exposées par le client dans Msipc.dll.]

La fonction DRMCreateIssuanceLicense crée une licence d’émission à partir de zéro, d’un modèle ou d’une licence d’émission signée.

Syntaxe

DRMEXPORT HRESULT UDAPICALL DRMCreateIssuanceLicense(
  [in]           SYSTEMTIME   *pstTimeFrom,
  [in]           SYSTEMTIME   *pstTimeUntil,
  [in]           PWSTR        wszReferralInfoName,
  [in]           PWSTR        wszReferralInfoURL,
  [in, optional] DRMPUBHANDLE hOwner,
  [in]           PWSTR        wszIssuanceLicense,
  [in]           DRMHANDLE    hBoundLicense,
  [out]          DRMPUBHANDLE *phIssuanceLicense
);

Paramètres

[in] pstTimeFrom

Heure de validité UTC de début de la licence. Si cette valeur est NULL, le paramètre pstTimeUntil doit également avoir la valeur NULL. Si les deux paramètres ne sont pas NULL, E_DRM_INVALID_TIMEINFO est retourné si l’intervalle de temps est logiquement incohérent. Par exemple, pstTimeFrom ne peut pas être ultérieur à pstTimeUntil.

[in] pstTimeUntil

Heure de validité UTC de fin de la licence. Si cette valeur est NULL, le paramètre pstTimeFrom doit également avoir la valeur NULL. Si les deux paramètres ne sont pas NULL, E_DRM_INVALID_TIMEINFO est retourné si l’intervalle de temps est logiquement incohérent. Par exemple, pstTimeFrom ne peut pas être ultérieur à pstTimeUntil.

[in] wszReferralInfoName

L’acquisition de licences non-iles n’est pas prise en charge ; définissez ce paramètre sur NULL.

Pour le client RMS (Rights Management Services) 1.0, ce paramètre est un pointeur vers une chaîne Unicode terminée par null qui contient le nom d’affichage de l’URL dans wszReferralInfoURL. Ce paramètre est facultatif et peut être NULL.

[in] wszReferralInfoURL

L’acquisition de licences non-iles n’est pas prise en charge ; définissez ce paramètre sur NULL.

Pour le client RMS 1.0, ce paramètre est un pointeur vers une chaîne Unicode terminée par null qui contient l’URL dans laquelle une application doit aller pour demander une licence pour le contenu de manière nonilente. Il doit s’agir d’une page HTML qui héberge le contrôle ActiveX. Ce paramètre est facultatif et peut être NULL.

[in, optional] hOwner

Handle pour l’utilisateur propriétaire de la licence d’émission. Le handle est créé en appelant la fonction DRMCreateUser . Le propriétaire est identifié sous le nœud Propriétaire dans la licence d’émission XrML. Ce paramètre est facultatif et peut être NULL.

Ne confondez pas le propriétaire d’une licence d’émission avec un utilisateur à qui le droit PROPRIÉTAIRE a été accordé. La propriété d’une licence d’émission n’accorde pas automatiquement de droits d’utilisation ou de modification du contenu. La spécification d’une valeur pour le paramètre hOwner facultatif permet simplement à une application d’identifier le propriétaire ou l’auteur du contenu. L’ID est ajouté en tant que métadonnées à la licence. Le droit PROPRIÉTAIRE, en revanche, accorde à un utilisateur le pouvoir d’exercer tous les droits contenus dans la licence. Vous accordez (ou quiconque) le droit PROPRIÉTAIRE de manière explicite à l’aide de DRMAddRightWithUser. Zéro, un ou plusieurs utilisateurs peuvent se voir accorder le droit PROPRIÉTAIRE, qui n’expire jamais.

S’il est spécifié, le propriétaire de la licence d’émission est ajouté en tant que métadonnées sous le <nœud WORK> de la licence.

<WORK>
  <OBJECT type="contentType">
    <ID type="contentIdType">contentId</ID>
    <NAME>contentName</NAME>
  </OBJECT>
  <METADATA>
    <OWNER>
      <OBJECT>
        <ID type="Windows"/>
        <NAME>david@contoso.com</NAME>
      </OBJECT>
    </OWNER>
  </METADATA>
  ...

S’il est accordé, le droit OWNER est ajouté en tant qu’attribut de l’élément <RIGHT> dans la licence XrML.

<WORK>
  ...
  <RIGHTSGROUP name="MainRights">
    <RIGHTSLIST>
      <VIEW>
        ...
      </VIEW>
      <RIGHT name="OWNER">
        <CONDITIONLIST>
          ...
        </CONDITIONLIST>
      </RIGHT>
    </RIGHTSLIST>
  </RIGHTSGROUP>
Note Dans le cas où vous définissez hOwner sur l’auteur de la licence et utilisez un modèle dans lequel vous case activée le droit de contrôle total du propriétaire (auteur) d’octroi sans expiration case activée, l’auteur de licence peut par la suite obtenir une licence d’utilisateur final avec des droits de propriétaire. Pour plus d’informations, consultez Présentation des droits XrML .
 

[in] wszIssuanceLicense

Pointeur vers une chaîne Unicode terminée par null qui contient un modèle de licence d’émission ou une licence d’émission signée. Vous pouvez appeler la fonction DRMGetIssuanceLicenseTemplate pour récupérer un modèle. Si ce paramètre a la valeur NULL, une licence d’émission est créée.

[in] hBoundLicense

Handle d’une licence liée qui contient les droits VIEWRIGHTSDATA, EDITRIGHTSDATA ou OWNER, qui permet à une application de réutiliser les données de droits ou de réutiliser la clé de contenu d’une licence d’émission précédente. Ce paramètre est facultatif et peut être NULL. Pour plus d’informations sur les droits, consultez Présentation des droits XrML.

Note Si votre intention est de créer une nouvelle licence d’émission, mais que vous souhaitez utiliser la clé de contenu de la licence d’émission signée d’origine, assurez-vous que le hBoundLicense que vous transmettez à DRMCreateIssuanceLicense est lié au droit OWNER ou EDITRIGHTSDATA. Dans un appel suivant à DRMGetSignedIssuanceLicense, transmettez le handle de licence d’émission obtenu à partir de DRMCreateIssuanceLicense et l’indicateur DRM_REUSE_KEY afin de réutiliser la clé de contenu.
 

[out] phIssuanceLicense

Pointeur vers un DRMPUBHANDLE qui reçoit le handle vers la nouvelle licence d’émission.

Valeur retournée

Si la fonction réussit, la fonction retourne S_OK.

Si la fonction échoue, elle retourne une valeur HRESULT qui indique l’erreur. Les valeurs possibles incluent, sans s’y limiter, celles de la liste suivante. Pour obtenir la liste des codes d’erreur courants, consultez Valeurs HRESULT courantes.

Notes

Une licence d’émission est une liste de droits, d’utilisateurs, de métadonnées et d’autres informations qui spécifient comment un utilisateur spécifique sur un ordinateur spécifique peut utiliser le contenu spécifié. Cette licence d’émission doit être signée à l’aide de la fonction DRMGetSignedIssuanceLicense ou de la méthode SOAP AcquireIssuanceLicense . La licence d’émission signée résultante est donnée à un utilisateur final potentiel qui doit ensuite demander une licence d’utilisateur final en appelant la fonction DRMAcquireLicense . Une application peut demander une licence d’utilisateur final pour le compte d’un autre utilisateur final à l’aide de la méthode SOAP AcquirePreLicense . Seule la licence de l’utilisateur final permet à une application d’exercer les droits qui ont été accordés.

Cette fonction vous permet de créer des licences de trois manières différentes.

valeur wszIssuanceLicense valeur hBoundLicense Description
Une licence d’émission non signée à partir d’un fichier ou un handle de licence d’émission transmis à DRMGetIssuanceLicenseTemplate NULL Utilisez pour créer une licence d’émission à partir d’un modèle. La nouvelle licence d’émission contient des informations de l’ancienne licence d’émission (la liste suit ce tableau), mais elle ne réutilise pas la clé de contenu.
Une licence d’émission signée Handle de la licence liée par le droit OWNER ou VIEWRIGHTSDATA Utilisez pour réutiliser les informations de droits (la liste suit ce tableau).
NULL NULL Utilisez pour créer une licence d’émission à partir de zéro. Il ne comprend aucun utilisateur, droits, métadonnées ou stratégies.
 

Lorsqu’une licence d’émission (signée ou non signée) est transmise, les données suivantes sont réutilisées :

Étant donné que l’acquisition de licences non-iles n’est pas prise en charge, wszReferralInfoName et wszReferralInfoURL doivent avoir la valeur NULL.

Pour le client RMS 1.0, le point de référence décrit par wszReferralInfoName et wszReferralInfoURL est utilisé comme URL de sauvegarde si un appel à l’URL spécifiée dans l’en-tête de licence échoue. Cette méthode permet à un appelant de définir un nom d’affichage et une URL pour un site qui gère les demandes de licence nonilent pour le contenu.

Le paramètre hBoundLicense permet à une application de réutiliser les données d’une licence d’émission existante. Pour ce faire, l’application de publication crée un droit VIEWRIGHTSDATA et l’accorde à toute application autorisée à réutiliser les informations de licence d’émission. Toutefois, étant donné que cela implique la liaison à une licence, qui est une tâche qui ne peut pas être effectuée sans utiliser une lockbox, cette valeur doit être NULL pour les applications serveur qui n’utilisent pas de lockbox.

L’objectif d’une URL ne peut être vérifié par aucune partie d’un client ou d’un système Active Directory Rights Management Services. Il serait possible pour un éditeur malveillant d’inclure une adresse URL nuisible dans une licence d’émission, bien que le créateur de la licence d’émission ait besoin d’un système Active Directory Rights Management Services sous licence valide pour ce faire.

Un problème qui peut se poser lors de la création de licences d’émission avec des durées de validité courtes est le problème de l’asymétrie d’horloge. L’asymétrie d’horloge est lorsque l’horloge de l’ordinateur de publication et l’horloge de l’ordinateur de l’utilisateur final ne sont pas exactement alignées. L’asymétrie d’horloge peut entraîner l’échec des tentatives de signature de licence d’émission. Pour plus d’informations, consultez Décalage de l’horloge.

Appelez DRMClosePubHandle pour fermer le handle de licence d’émission créé en appelant cette fonction.

Spécifications

   
Plateforme cible Windows
En-tête msdrm.h
Bibliothèque Msdrm.lib
DLL Msdrm.dll

Voir aussi

Fonctions AD RMS

Création et utilisation de licences d’émission