diff --git a/crypto/src/asn1/DerGeneralizedTime.cs b/crypto/src/asn1/DerGeneralizedTime.cs
index dae60e876..54fbabbbe 100644
--- a/crypto/src/asn1/DerGeneralizedTime.cs
+++ b/crypto/src/asn1/DerGeneralizedTime.cs
@@ -14,7 +14,7 @@ namespace Org.BouncyCastle.Asn1
{
private readonly string time;
- /**
+ /**
* return a generalized time from the passed in object
*
* @exception ArgumentException if the object cannot be converted.
@@ -22,15 +22,15 @@ namespace Org.BouncyCastle.Asn1
public static DerGeneralizedTime GetInstance(
object obj)
{
- if (obj == null || obj is DerGeneralizedTime)
+ if (obj == null || obj is DerGeneralizedTime)
{
return (DerGeneralizedTime)obj;
}
- throw new ArgumentException("illegal object in GetInstance: " + obj.GetType().Name, "obj");
+ throw new ArgumentException("illegal object in GetInstance: " + obj.GetType().Name, "obj");
}
- /**
+ /**
* return a Generalized Time object from a tagged object.
*
* @param obj the tagged object holding the object we want
@@ -43,41 +43,41 @@ namespace Org.BouncyCastle.Asn1
Asn1TaggedObject obj,
bool isExplicit)
{
- Asn1Object o = obj.GetObject();
+ Asn1Object o = obj.GetObject();
- if (isExplicit || o is DerGeneralizedTime)
- {
- return GetInstance(o);
- }
+ if (isExplicit || o is DerGeneralizedTime)
+ {
+ return GetInstance(o);
+ }
+
+ return new DerGeneralizedTime(((Asn1OctetString)o).GetOctets());
+ }
+
+ /**
+ * The correct format for this is YYYYMMDDHHMMSS[.f]Z, or without the Z
+ * for local time, or Z+-HHMM on the end, for difference between local
+ * time and UTC time. The fractional second amount f must consist of at
+ * least one number with trailing zeroes removed.
+ *
+ * @param time the time string.
+ * @exception ArgumentException if string is an illegal format.
+ */
+ public DerGeneralizedTime(
+ string time)
+ {
+ this.time = time;
- return new DerGeneralizedTime(((Asn1OctetString)o).GetOctets());
+ try
+ {
+ ToDateTime();
+ }
+ catch (FormatException e)
+ {
+ throw new ArgumentException("invalid date string: " + e.Message);
+ }
}
- /**
- * The correct format for this is YYYYMMDDHHMMSS[.f]Z, or without the Z
- * for local time, or Z+-HHMM on the end, for difference between local
- * time and UTC time. The fractional second amount f must consist of at
- * least one number with trailing zeroes removed.
- *
- * @param time the time string.
- * @exception ArgumentException if string is an illegal format.
- */
- public DerGeneralizedTime(
- string time)
- {
- this.time = time;
-
- try
- {
- ToDateTime();
- }
- catch (FormatException e)
- {
- throw new ArgumentException("invalid date string: " + e.Message);
- }
- }
-
- /**
+ /**
* base constructor from a local time object
*/
public DerGeneralizedTime(
@@ -86,7 +86,7 @@ namespace Org.BouncyCastle.Asn1
this.time = time.ToString(@"yyyyMMddHHmmss\Z");
}
- internal DerGeneralizedTime(
+ internal DerGeneralizedTime(
byte[] bytes)
{
//
@@ -95,16 +95,16 @@ namespace Org.BouncyCastle.Asn1
this.time = Strings.FromAsciiByteArray(bytes);
}
- /**
- * Return the time.
- * @return The time string as it appeared in the encoded object.
- */
- public string TimeString
- {
- get { return time; }
- }
+ /**
+ * Return the time.
+ * @return The time string as it appeared in the encoded object.
+ */
+ public string TimeString
+ {
+ get { return time; }
+ }
- /**
+ /**
* return the time - always in the form of
* YYYYMMDDhhmmssGMT(+hh:mm|-hh:mm).
* <p>
@@ -154,151 +154,151 @@ namespace Org.BouncyCastle.Asn1
return time + CalculateGmtOffset();
}
- private string CalculateGmtOffset()
- {
- char sign = '+';
+ private string CalculateGmtOffset()
+ {
+ char sign = '+';
DateTime time = ToDateTime();
#if SILVERLIGHT
- long offset = time.Ticks - time.ToUniversalTime().Ticks;
- if (offset < 0)
- {
- sign = '-';
- offset = -offset;
- }
- int hours = (int)(offset / TimeSpan.TicksPerHour);
- int minutes = (int)(offset / TimeSpan.TicksPerMinute) % 60;
+ long offset = time.Ticks - time.ToUniversalTime().Ticks;
+ if (offset < 0)
+ {
+ sign = '-';
+ offset = -offset;
+ }
+ int hours = (int)(offset / TimeSpan.TicksPerHour);
+ int minutes = (int)(offset / TimeSpan.TicksPerMinute) % 60;
#else
// Note: GetUtcOffset incorporates Daylight Savings offset
- TimeSpan offset = TimeZone.CurrentTimeZone.GetUtcOffset(time);
- if (offset.CompareTo(TimeSpan.Zero) < 0)
- {
- sign = '-';
- offset = offset.Duration();
- }
- int hours = offset.Hours;
- int minutes = offset.Minutes;
+ TimeSpan offset = TimeZone.CurrentTimeZone.GetUtcOffset(time);
+ if (offset.CompareTo(TimeSpan.Zero) < 0)
+ {
+ sign = '-';
+ offset = offset.Duration();
+ }
+ int hours = offset.Hours;
+ int minutes = offset.Minutes;
#endif
- return "GMT" + sign + Convert(hours) + ":" + Convert(minutes);
- }
-
- private static string Convert(
- int time)
- {
- if (time < 10)
- {
- return "0" + time;
- }
-
- return time.ToString();
- }
-
- public DateTime ToDateTime()
- {
- string formatStr;
- string d = time;
- bool makeUniversal = false;
-
- if (d.EndsWith("Z"))
- {
- if (HasFractionalSeconds)
- {
- int fCount = d.Length - d.IndexOf('.') - 2;
- formatStr = @"yyyyMMddHHmmss." + FString(fCount) + @"\Z";
- }
- else
- {
- formatStr = @"yyyyMMddHHmmss\Z";
- }
- }
- else if (time.IndexOf('-') > 0 || time.IndexOf('+') > 0)
- {
- d = GetTime();
- makeUniversal = true;
-
- if (HasFractionalSeconds)
- {
- int fCount = d.IndexOf("GMT") - 1 - d.IndexOf('.');
- formatStr = @"yyyyMMddHHmmss." + FString(fCount) + @"'GMT'zzz";
- }
- else
- {
- formatStr = @"yyyyMMddHHmmss'GMT'zzz";
- }
- }
- else
- {
- if (HasFractionalSeconds)
- {
- int fCount = d.Length - 1 - d.IndexOf('.');
- formatStr = @"yyyyMMddHHmmss." + FString(fCount);
- }
- else
- {
- formatStr = @"yyyyMMddHHmmss";
- }
-
- // TODO?
+ return "GMT" + sign + Convert(hours) + ":" + Convert(minutes);
+ }
+
+ private static string Convert(
+ int time)
+ {
+ if (time < 10)
+ {
+ return "0" + time;
+ }
+
+ return time.ToString();
+ }
+
+ public DateTime ToDateTime()
+ {
+ string formatStr;
+ string d = time;
+ bool makeUniversal = false;
+
+ if (d.EndsWith("Z"))
+ {
+ if (HasFractionalSeconds)
+ {
+ int fCount = d.Length - d.IndexOf('.') - 2;
+ formatStr = @"yyyyMMddHHmmss." + FString(fCount) + @"\Z";
+ }
+ else
+ {
+ formatStr = @"yyyyMMddHHmmss\Z";
+ }
+ }
+ else if (time.IndexOf('-') > 0 || time.IndexOf('+') > 0)
+ {
+ d = GetTime();
+ makeUniversal = true;
+
+ if (HasFractionalSeconds)
+ {
+ int fCount = d.IndexOf("GMT") - 1 - d.IndexOf('.');
+ formatStr = @"yyyyMMddHHmmss." + FString(fCount) + @"'GMT'zzz";
+ }
+ else
+ {
+ formatStr = @"yyyyMMddHHmmss'GMT'zzz";
+ }
+ }
+ else
+ {
+ if (HasFractionalSeconds)
+ {
+ int fCount = d.Length - 1 - d.IndexOf('.');
+ formatStr = @"yyyyMMddHHmmss." + FString(fCount);
+ }
+ else
+ {
+ formatStr = @"yyyyMMddHHmmss";
+ }
+
+ // TODO?
// dateF.setTimeZone(new SimpleTimeZone(0, TimeZone.getDefault().getID()));
- }
-
- return ParseDateString(d, formatStr, makeUniversal);
- }
-
- private string FString(
- int count)
- {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < count; ++i)
- {
- sb.Append('f');
- }
- return sb.ToString();
- }
-
- private DateTime ParseDateString(
- string dateStr,
- string formatStr,
- bool makeUniversal)
- {
- DateTime dt = DateTime.ParseExact(
- dateStr,
- formatStr,
- DateTimeFormatInfo.InvariantInfo);
-
- return makeUniversal ? dt.ToUniversalTime() : dt;
- }
-
- private bool HasFractionalSeconds
- {
- get { return time.IndexOf('.') == 14; }
- }
-
- private byte[] GetOctets()
+ }
+
+ return ParseDateString(d, formatStr, makeUniversal);
+ }
+
+ private string FString(
+ int count)
+ {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < count; ++i)
+ {
+ sb.Append('f');
+ }
+ return sb.ToString();
+ }
+
+ private DateTime ParseDateString(
+ string dateStr,
+ string formatStr,
+ bool makeUniversal)
+ {
+ DateTime dt = DateTime.ParseExact(
+ dateStr,
+ formatStr,
+ DateTimeFormatInfo.InvariantInfo);
+
+ return makeUniversal ? dt.ToUniversalTime() : dt;
+ }
+
+ private bool HasFractionalSeconds
+ {
+ get { return time.IndexOf('.') == 14; }
+ }
+
+ private byte[] GetOctets()
{
return Strings.ToAsciiByteArray(time);
}
- internal override void Encode(
+ internal override void Encode(
DerOutputStream derOut)
{
derOut.WriteEncoded(Asn1Tags.GeneralizedTime, GetOctets());
}
- protected override bool Asn1Equals(
- Asn1Object asn1Object)
+ protected override bool Asn1Equals(
+ Asn1Object asn1Object)
{
- DerGeneralizedTime other = asn1Object as DerGeneralizedTime;
+ DerGeneralizedTime other = asn1Object as DerGeneralizedTime;
- if (other == null)
- return false;
+ if (other == null)
+ return false;
- return this.time.Equals(other.time);
+ return this.time.Equals(other.time);
}
- protected override int Asn1GetHashCode()
- {
+ protected override int Asn1GetHashCode()
+ {
return time.GetHashCode();
}
}
|