8239950: Update PKCS9 Attributes to PKCS#9 v2.0 Encodings

Reviewed-by: weijun
This commit is contained in:
Jamil Nimeh 2020-06-23 07:48:39 -07:00
parent d8219d0a78
commit c0b348f3ef
3 changed files with 245 additions and 13 deletions

View file

@ -28,9 +28,7 @@ package sun.security.pkcs;
import java.io.IOException;
import java.io.OutputStream;
import java.security.cert.CertificateException;
import java.util.Locale;
import java.util.Date;
import java.util.HashMap;
import sun.security.x509.CertificateExtensions;
import sun.security.util.*;
@ -234,11 +232,16 @@ public class PKCS9Attribute implements DerEncoder {
private static final Byte[][] PKCS9_VALUE_TAGS = {
null,
{DerValue.tag_IA5String}, // EMailAddress
{DerValue.tag_IA5String, // UnstructuredName
DerValue.tag_PrintableString},
{DerValue.tag_IA5String,
DerValue.tag_PrintableString,
DerValue.tag_T61String,
DerValue.tag_BMPString,
DerValue.tag_UniversalString,
DerValue.tag_UTF8String}, // UnstructuredName
{DerValue.tag_ObjectId}, // ContentType
{DerValue.tag_OctetString}, // MessageDigest
{DerValue.tag_UtcTime}, // SigningTime
{DerValue.tag_UtcTime,
DerValue.tag_GeneralizedTime}, // SigningTime
{DerValue.tag_Sequence}, // Countersignature
{DerValue.tag_PrintableString,
DerValue.tag_T61String,
@ -246,7 +249,10 @@ public class PKCS9Attribute implements DerEncoder {
DerValue.tag_UniversalString,
DerValue.tag_UTF8String}, // ChallengePassword
{DerValue.tag_PrintableString,
DerValue.tag_T61String}, // UnstructuredAddress
DerValue.tag_T61String,
DerValue.tag_BMPString,
DerValue.tag_UniversalString,
DerValue.tag_UTF8String}, // UnstructuredAddress
{DerValue.tag_SetOf}, // ExtendedCertificateAttributes
{DerValue.tag_Sequence}, // issuerAndSerialNumber
null,
@ -437,7 +443,10 @@ public class PKCS9Attribute implements DerEncoder {
break;
case 5: // signing time
value = (new DerInputStream(elems[0].toByteArray())).getUTCTime();
byte elemTag = elems[0].getTag();
DerInputStream dis = new DerInputStream(elems[0].toByteArray());
value = (elemTag == DerValue.tag_GeneralizedTime) ?
dis.getGeneralizedTime() : dis.getUTCTime();
break;
case 6: // countersignature