private SafeRightsManagementPubHandle GetRightHandle(ContentGrant grant) { SafeRightsManagementPubHandle rightHandle = null; // we only need to use date time inteval if at least one of the values isn't default to Min max // If both of the Min Max we can leave tyhem as nulls otherwise (if at least one not default) // we need to set both SystemTime systemTimeValidFrom = null; SystemTime systemTimeValidUntil = null; if ((grant.ValidFrom != DateTime.MinValue) || (grant.ValidUntil != DateTime.MaxValue)) { // we need to use non null values if at least one of the time boundaries isn't default // DRM SDK will not enforce date time unless both timeFrom and timeUnti are set systemTimeValidFrom = new SystemTime(grant.ValidFrom); systemTimeValidUntil = new SystemTime(grant.ValidUntil); } int hr = SafeNativeMethods.DRMCreateRight( ClientSession.GetStringFromRight(grant.Right), systemTimeValidFrom, // SystemTime timeFrom, systemTimeValidUntil, // SystemTime timeUntil, 0, // countExtendedInfo, null, // string [] extendedInfoNames, null, // string [] extendedInfoValues, out rightHandle); Errors.ThrowOnErrorCode(hr); Debug.Assert((rightHandle != null) && (!rightHandle.IsInvalid)); _pubHandlesList.Add(rightHandle); return rightHandle; }
private void AddGrant(ContentGrant grant) { Invariant.Assert(grant != null); Invariant.Assert(grant.User != null); SafeRightsManagementPubHandle right = GetRightHandle(grant); SafeRightsManagementPubHandle user = GetHandleFromUser(grant.User); int hr = SafeNativeMethods.DRMAddRightWithUser( _issuanceLicenseHandle, right, user); Errors.ThrowOnErrorCode(hr); }