File: Base\MS\Internal\Security\RightsManagement\RightNameExpirationInfoPair.cs
Project: wpf\src\WindowsBase.csproj (WindowsBase)
//-----------------------------------------------------------------------------
//
// <copyright file="RightNameExpirationInfoPair.cs" company="Microsoft">
//    Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//
// Description:
//  Structure that keeps Right name as a string not as enum, so it can be used to carry 
//  names that are not part of the ContentRights enum. 
//
// History:
//  01/31/2006: IgorBel:  Initial implementation.
//
//-----------------------------------------------------------------------------
 
using System;
using System.Diagnostics;
using System.Security;
 
namespace MS.Internal.Security.RightsManagement
{
    /// <SecurityNote>
    ///     Critical:    This class exposes access to methods that eventually do one or more of the the following
    ///             1. call into unmanaged code 
    ///             2. affects state/data that will eventually cross over unmanaged code boundary
    ///             3. Return some RM related information which is considered private 
    /// </SecurityNote>
    [SecurityCritical(SecurityCriticalScope.Everything)]  
    internal class RightNameExpirationInfoPair
    {
        internal RightNameExpirationInfoPair (string rightName, DateTime validFrom, DateTime validUntil)
        {
            Debug.Assert(rightName != null);
            
            _rightName = rightName;
            _validFrom = validFrom;
            _validUntil = validUntil;
        }
            
        /// <summary>
        /// We keep Right as a string for forward compatibility in case new
        /// rights get invented we would like be able to encrypt decrypt using them,
        /// although without ability to enumerate them 
        /// </summary>
        internal  string  RightName
        {
            get
            {
                return _rightName;
            }
        }
 
        /// <summary>
        /// The starting validity time, in UTC time 
        /// </summary>
        internal  DateTime  ValidFrom
        {
            get 
            {
                return _validFrom; 
            }
        }
 
        /// <summary>
        /// The ending validity time, in UTC time 
        /// </summary>
        internal  DateTime  ValidUntil 
        {
            get 
            {
                 return _validUntil; 
            }
        }
 
        private string _rightName;
        private DateTime _validFrom;
        private DateTime _validUntil;
    }
}