diff options
author | Narayan Kamath <narayan@google.com> | 2016-04-27 15:40:03 +0100 |
---|---|---|
committer | Narayan Kamath <narayan@google.com> | 2016-04-27 16:27:36 +0100 |
commit | 7c335a5d575470ba944cb41d0ac655d7087422d1 (patch) | |
tree | 178d4cb1997922e12027d3e1810f39d958f598ff /bcprov/src/main | |
parent | cf7021d93b868e5f72781d0f49b56447fc226639 (diff) | |
download | bouncycastle-7c335a5d575470ba944cb41d0ac655d7087422d1.tar.gz |
ASN1: Use an explicit locale for ASN1 UTC / Generalized times.nougat-dev
Using the default locale can result in bad behaviour, for example
when the locales numberformat doesn't use arabic numerals.
bug: 28384942
Change-Id: I4e240d9710c0427d809410df3a762c80125a821c
Diffstat (limited to 'bcprov/src/main')
4 files changed, 72 insertions, 16 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/ASN1GeneralizedTime.java b/bcprov/src/main/java/org/bouncycastle/asn1/ASN1GeneralizedTime.java index 089526e1..0e2be644 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/ASN1GeneralizedTime.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/ASN1GeneralizedTime.java @@ -3,6 +3,7 @@ package org.bouncycastle.asn1; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.SimpleTimeZone; @@ -109,7 +110,10 @@ public class ASN1GeneralizedTime public ASN1GeneralizedTime( Date time) { - SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'"); + // BEGIN android-changed + // Was: SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'"); + SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'", Locale.US); + // END android-changed dateF.setTimeZone(new SimpleTimeZone(0, "Z")); @@ -127,7 +131,11 @@ public class ASN1GeneralizedTime Date time, Locale locale) { - SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'", locale); + // BEGIN android-changed + // Was: SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'", locale); + SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'", Locale.US); + dateF.setCalendar(Calendar.getInstance(Locale.US)); + // END android-changed dateF.setTimeZone(new SimpleTimeZone(0, "Z")); @@ -252,11 +260,17 @@ public class ASN1GeneralizedTime { if (hasFractionalSeconds()) { - dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSS'Z'"); + // BEGIN android-changed + // Was: dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSS'Z'"); + dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSS'Z'", Locale.US); + // END android-changed } else { - dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'"); + // BEGIN android-changed + // Was: dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'"); + dateF = new SimpleDateFormat("yyyyMMddHHmmss'Z'", Locale.US); + // END android-changed } dateF.setTimeZone(new SimpleTimeZone(0, "Z")); @@ -266,11 +280,17 @@ public class ASN1GeneralizedTime d = this.getTime(); if (hasFractionalSeconds()) { - dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSSz"); + // BEGIN android-changed + // Was: dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSSz"); + dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSSz", Locale.US); + // END android-changed } else { - dateF = new SimpleDateFormat("yyyyMMddHHmmssz"); + // BEGIN android-changed + // Was: dateF = new SimpleDateFormat("yyyyMMddHHmmssz"); + dateF = new SimpleDateFormat("yyyyMMddHHmmssz", Locale.US); + // END android-changed } dateF.setTimeZone(new SimpleTimeZone(0, "Z")); @@ -279,11 +299,17 @@ public class ASN1GeneralizedTime { if (hasFractionalSeconds()) { - dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSS"); + // BEGIN android-changed + // dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSS"); + dateF = new SimpleDateFormat("yyyyMMddHHmmss.SSS", Locale.US); + // END android-changed } else { - dateF = new SimpleDateFormat("yyyyMMddHHmmss"); + // BEGIN android-changed + // Was: dateF = new SimpleDateFormat("yyyyMMddHHmmss"); + dateF = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US); + // END android-changed } dateF.setTimeZone(new SimpleTimeZone(0, TimeZone.getDefault().getID())); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/ASN1UTCTime.java b/bcprov/src/main/java/org/bouncycastle/asn1/ASN1UTCTime.java index 2c82df30..41ce8177 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/ASN1UTCTime.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/ASN1UTCTime.java @@ -3,6 +3,7 @@ package org.bouncycastle.asn1; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.SimpleTimeZone; @@ -123,7 +124,10 @@ public class ASN1UTCTime public ASN1UTCTime( Date time) { - SimpleDateFormat dateF = new SimpleDateFormat("yyMMddHHmmss'Z'"); + // BEGIN android-changed + // Was: SimpleDateFormat dateF = new SimpleDateFormat("yyMMddHHmmss'Z'"); + SimpleDateFormat dateF = new SimpleDateFormat("yyMMddHHmmss'Z'", Locale.US); + // END android-changed dateF.setTimeZone(new SimpleTimeZone(0,"Z")); @@ -141,7 +145,11 @@ public class ASN1UTCTime Date time, Locale locale) { - SimpleDateFormat dateF = new SimpleDateFormat("yyMMddHHmmss'Z'", locale); + // BEGIN android-changed + // Was: SimpleDateFormat dateF = new SimpleDateFormat("yyMMddHHmmss'Z'", locale); + SimpleDateFormat dateF = new SimpleDateFormat("yyMMddHHmmss'Z'", Locale.US); + dateF.setCalendar(Calendar.getInstance(locale)); + // END android-changed dateF.setTimeZone(new SimpleTimeZone(0,"Z")); @@ -164,7 +172,10 @@ public class ASN1UTCTime public Date getDate() throws ParseException { - SimpleDateFormat dateF = new SimpleDateFormat("yyMMddHHmmssz"); + // BEGIN android-changed + // Was: SimpleDateFormat dateF = new SimpleDateFormat("yyMMddHHmmssz"); + SimpleDateFormat dateF = new SimpleDateFormat("yyMMddHHmmssz", Locale.US); + // END android-changed return dateF.parse(getTime()); } @@ -179,7 +190,10 @@ public class ASN1UTCTime public Date getAdjustedDate() throws ParseException { - SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmssz"); + // BEGIN android-changed + // Was: SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmssz"); + SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmssz", Locale.US); + // END android-changed dateF.setTimeZone(new SimpleTimeZone(0, "Z")); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/cms/Time.java b/bcprov/src/main/java/org/bouncycastle/asn1/cms/Time.java index 84f12a9c..ed9a6c03 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/cms/Time.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/cms/Time.java @@ -2,6 +2,7 @@ package org.bouncycastle.asn1.cms; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.SimpleTimeZone; @@ -70,7 +71,10 @@ public class Time Date time) { SimpleTimeZone tz = new SimpleTimeZone(0, "Z"); - SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss"); + // BEGIN android-changed + // Was: SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss"); + SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US); + // END android-changed dateF.setTimeZone(tz); @@ -101,7 +105,11 @@ public class Time Locale locale) { SimpleTimeZone tz = new SimpleTimeZone(0, "Z"); - SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss", locale); + // BEGIN android-changed + // Was: SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss", locale); + SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US); + dateF.setCalendar(Calendar.getInstance(locale)); + // END android-changed dateF.setTimeZone(tz); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/x509/Time.java b/bcprov/src/main/java/org/bouncycastle/asn1/x509/Time.java index 77d36b31..989de4c9 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/x509/Time.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/x509/Time.java @@ -2,6 +2,7 @@ package org.bouncycastle.asn1.x509; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.SimpleTimeZone; @@ -51,7 +52,10 @@ public class Time Date time) { SimpleTimeZone tz = new SimpleTimeZone(0, "Z"); - SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss"); + // BEGIN android-changed + // Was: SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss"); + SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US); + // END android-changed dateF.setTimeZone(tz); @@ -82,7 +86,11 @@ public class Time Locale locale) { SimpleTimeZone tz = new SimpleTimeZone(0, "Z"); - SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss", locale); + // BEGIN android-changed + // Was: SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss", locale); + SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US); + dateF.setCalendar(Calendar.getInstance(locale)); + // END android-changed dateF.setTimeZone(tz); |