Files
SuperVPN/output/Libraries/BouncyCastle.Crypto/Org/BouncyCastle/Asn1/Cms/Time.cs
2025-10-09 09:57:24 +09:00

96 lines
1.8 KiB
C#

using System;
using System.Globalization;
using Org.BouncyCastle.Utilities;
namespace Org.BouncyCastle.Asn1.Cms;
public class Time : Asn1Encodable, IAsn1Choice
{
private readonly Asn1Object time;
public string TimeString
{
get
{
if (time is DerUtcTime)
{
return ((DerUtcTime)time).AdjustedTimeString;
}
return ((DerGeneralizedTime)time).GetTime();
}
}
public DateTime Date
{
get
{
try
{
if (time is DerUtcTime)
{
return ((DerUtcTime)time).ToAdjustedDateTime();
}
return ((DerGeneralizedTime)time).ToDateTime();
}
catch (FormatException ex)
{
throw new InvalidOperationException("invalid date string: " + ex.Message);
}
}
}
public static Time GetInstance(Asn1TaggedObject obj, bool explicitly)
{
return GetInstance(obj.GetObject());
}
public Time(Asn1Object time)
{
if (time == null)
{
throw new ArgumentNullException("time");
}
if (!(time is DerUtcTime) && !(time is DerGeneralizedTime))
{
throw new ArgumentException("unknown object passed to Time");
}
this.time = time;
}
public Time(DateTime date)
{
string text = date.ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture) + "Z";
int num = int.Parse(text.Substring(0, 4));
if (num < 1950 || num > 2049)
{
time = new DerGeneralizedTime(text);
}
else
{
time = new DerUtcTime(text.Substring(2));
}
}
public static Time GetInstance(object obj)
{
if (obj == null || obj is Time)
{
return (Time)obj;
}
if (obj is DerUtcTime)
{
return new Time((DerUtcTime)obj);
}
if (obj is DerGeneralizedTime)
{
return new Time((DerGeneralizedTime)obj);
}
throw new ArgumentException("unknown object in factory: " + Platform.GetTypeName(obj), "obj");
}
public override Asn1Object ToAsn1Object()
{
return time;
}
}