/// <summary>
 /// Create/Load a programmatic key to prevent access when operating inside a virtual environment
 /// </summary>
 /// <param name="chainedInnerKey">Key operation to run prior to this key</param>
 public VirtualMachineProhibitedKey(KeyAppliesTo appliesTo        = KeyAppliesTo.Both,
                                    EncryptionKey chainedInnerKey = null) : base(new byte[0], chainedInnerKey)
 {
     AppliesTo = appliesTo;
 }
 /// <summary>
 /// Create/Load a programmatic key based on a non-recurring time window of availability
 /// </summary>
 /// <param name="chainedInnerKey">Key operation to run prior to this key</param>
 public TimeWindowKey(DateTime startTime, DateTime endTime, KeyAppliesTo appliesTo = KeyAppliesTo.Both, EncryptionKey chainedInnerKey = null) : base(new byte[0], chainedInnerKey)
 {
     StartTime = startTime;
     EndTime   = endTime;
     AppliesTo = appliesTo;
 }
 /// <summary>
 /// Create/Load a programmatic key to force disabling of PrntScrn (via changing display affinity)
 /// </summary>
 /// <param name="chainedInnerKey">Key operation to run prior to this key</param>
 public AntiPrintScreenKey(KeyAppliesTo appliesTo = KeyAppliesTo.Both, EncryptionKey chainedInnerKey = null) : base(new byte[0], chainedInnerKey)
 {
     AppliesTo = appliesTo;
 }