提交 926663de 编写于 作者: X xuelei

8234037: Improve Object Identifier Processing

Reviewed-by: weijun, mschoene, ssahoo
上级 77e1b349
...@@ -599,7 +599,7 @@ public class AVA implements DerEncoder { ...@@ -599,7 +599,7 @@ public class AVA implements DerEncoder {
if (derval.tag != DerValue.tag_Sequence) { if (derval.tag != DerValue.tag_Sequence) {
throw new IOException("AVA not a sequence"); throw new IOException("AVA not a sequence");
} }
oid = X500Name.intern(derval.data.getOID()); oid = derval.data.getOID();
value = derval.data.getDerValue(); value = derval.data.getDerValue();
if (derval.data.available() != 0) { if (derval.data.available() != 0) {
......
/* /*
* Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -1103,18 +1103,6 @@ public class X500Name implements GeneralNameInterface, Principal { ...@@ -1103,18 +1103,6 @@ public class X500Name implements GeneralNameInterface, Principal {
/****************************************************************/ /****************************************************************/
/*
* Maybe return a preallocated OID, to reduce storage costs
* and speed recognition of common X.500 attributes.
*/
static ObjectIdentifier intern(ObjectIdentifier oid) {
ObjectIdentifier interned = internedOIDs.putIfAbsent(oid, oid);
return (interned == null) ? oid : interned;
}
private static final Map<ObjectIdentifier,ObjectIdentifier> internedOIDs
= new HashMap<ObjectIdentifier,ObjectIdentifier>();
/* /*
* Selected OIDs from X.520 * Selected OIDs from X.520
* Includes all those specified in RFC 5280 as MUST or SHOULD * Includes all those specified in RFC 5280 as MUST or SHOULD
...@@ -1142,92 +1130,82 @@ public class X500Name implements GeneralNameInterface, Principal { ...@@ -1142,92 +1130,82 @@ public class X500Name implements GeneralNameInterface, Principal {
{ 0, 9, 2342, 19200300, 100, 1, 1 }; { 0, 9, 2342, 19200300, 100, 1, 1 };
public static final ObjectIdentifier commonName_oid; // OID for the "CN=" attribute, denoting a person's common name.
public static final ObjectIdentifier countryName_oid; public static final ObjectIdentifier commonName_oid =
public static final ObjectIdentifier localityName_oid; ObjectIdentifier.newInternal(commonName_data);
public static final ObjectIdentifier orgName_oid;
public static final ObjectIdentifier orgUnitName_oid;
public static final ObjectIdentifier stateName_oid;
public static final ObjectIdentifier streetAddress_oid;
public static final ObjectIdentifier title_oid;
public static final ObjectIdentifier DNQUALIFIER_OID;
public static final ObjectIdentifier SURNAME_OID;
public static final ObjectIdentifier GIVENNAME_OID;
public static final ObjectIdentifier INITIALS_OID;
public static final ObjectIdentifier GENERATIONQUALIFIER_OID;
public static final ObjectIdentifier ipAddress_oid;
public static final ObjectIdentifier DOMAIN_COMPONENT_OID;
public static final ObjectIdentifier userid_oid;
public static final ObjectIdentifier SERIALNUMBER_OID;
static {
/** OID for the "CN=" attribute, denoting a person's common name. */
commonName_oid = intern(ObjectIdentifier.newInternal(commonName_data));
/** OID for the "SERIALNUMBER=" attribute, denoting a serial number for.
a name. Do not confuse with PKCS#9 issuerAndSerialNumber or the
certificate serial number. */
SERIALNUMBER_OID = intern(ObjectIdentifier.newInternal(SERIALNUMBER_DATA));
/** OID for the "C=" attribute, denoting a country. */
countryName_oid = intern(ObjectIdentifier.newInternal(countryName_data));
/** OID for the "L=" attribute, denoting a locality (such as a city) */ // OID for the "SERIALNUMBER=" attribute, denoting a serial number for.
localityName_oid = intern(ObjectIdentifier.newInternal(localityName_data)); // a name. Do not confuse with PKCS#9 issuerAndSerialNumber or the
// certificate serial number.
public static final ObjectIdentifier SERIALNUMBER_OID =
ObjectIdentifier.newInternal(SERIALNUMBER_DATA);
/** OID for the "O=" attribute, denoting an organization name */ // OID for the "C=" attribute, denoting a country.
orgName_oid = intern(ObjectIdentifier.newInternal(orgName_data)); public static final ObjectIdentifier countryName_oid =
ObjectIdentifier.newInternal(countryName_data);
/** OID for the "OU=" attribute, denoting an organizational unit name */ // OID for the "L=" attribute, denoting a locality (such as a city).
orgUnitName_oid = intern(ObjectIdentifier.newInternal(orgUnitName_data)); public static final ObjectIdentifier localityName_oid =
ObjectIdentifier.newInternal(localityName_data);
/** OID for the "S=" attribute, denoting a state (such as Delaware) */ // OID for the "O=" attribute, denoting an organization name.
stateName_oid = intern(ObjectIdentifier.newInternal(stateName_data)); public static final ObjectIdentifier orgName_oid =
ObjectIdentifier.newInternal(orgName_data);
/** OID for the "STREET=" attribute, denoting a street address. */ // OID for the "OU=" attribute, denoting an organizational unit name.
streetAddress_oid = intern(ObjectIdentifier.newInternal(streetAddress_data)); public static final ObjectIdentifier orgUnitName_oid =
ObjectIdentifier.newInternal(orgUnitName_data);
/** OID for the "T=" attribute, denoting a person's title. */ // OID for the "S=" attribute, denoting a state (such as Delaware).
title_oid = intern(ObjectIdentifier.newInternal(title_data)); public static final ObjectIdentifier stateName_oid =
ObjectIdentifier.newInternal(stateName_data);
/** OID for the "DNQUALIFIER=" or "DNQ=" attribute, denoting DN // OID for the "STREET=" attribute, denoting a street address.
disambiguating information.*/ public static final ObjectIdentifier streetAddress_oid =
DNQUALIFIER_OID = intern(ObjectIdentifier.newInternal(DNQUALIFIER_DATA)); ObjectIdentifier.newInternal(streetAddress_data);
/** OID for the "SURNAME=" attribute, denoting a person's surname.*/ // OID for the "T=" attribute, denoting a person's title.
SURNAME_OID = intern(ObjectIdentifier.newInternal(SURNAME_DATA)); public static final ObjectIdentifier title_oid =
ObjectIdentifier.newInternal(title_data);
/** OID for the "GIVENNAME=" attribute, denoting a person's given name.*/ // OID for the "DNQUALIFIER=" or "DNQ=" attribute, denoting DN
GIVENNAME_OID = intern(ObjectIdentifier.newInternal(GIVENNAME_DATA)); // disambiguating information.
public static final ObjectIdentifier DNQUALIFIER_OID =
ObjectIdentifier.newInternal(DNQUALIFIER_DATA);
/** OID for the "INITIALS=" attribute, denoting a person's initials.*/ // OID for the "SURNAME=" attribute, denoting a person's surname.
INITIALS_OID = intern(ObjectIdentifier.newInternal(INITIALS_DATA)); public static final ObjectIdentifier SURNAME_OID =
ObjectIdentifier.newInternal(SURNAME_DATA);
/** OID for the "GENERATION=" attribute, denoting Jr., II, etc.*/ // OID for the "GIVENNAME=" attribute, denoting a person's given name.
GENERATIONQUALIFIER_OID = public static final ObjectIdentifier GIVENNAME_OID =
intern(ObjectIdentifier.newInternal(GENERATIONQUALIFIER_DATA)); ObjectIdentifier.newInternal(GIVENNAME_DATA);
/* // OID for the "INITIALS=" attribute, denoting a person's initials.
* OIDs from other sources which show up in X.500 names we public static final ObjectIdentifier INITIALS_OID =
* expect to deal with often ObjectIdentifier.newInternal(INITIALS_DATA);
*/
/** OID for "IP=" IP address attributes, used with SKIP. */
ipAddress_oid = intern(ObjectIdentifier.newInternal(ipAddress_data));
/* // OID for the "GENERATION=" attribute, denoting Jr., II, etc.
* Domain component OID from RFC 1274, RFC 2247, RFC 5280 public static final ObjectIdentifier GENERATIONQUALIFIER_OID =
*/ ObjectIdentifier.newInternal(GENERATIONQUALIFIER_DATA);
/* // OIDs from other sources which show up in X.500 names we
* OID for "DC=" domain component attributes, used with DNSNames in DN // expect to deal with often.
* format //
*/ // OID for "IP=" IP address attributes, used with SKIP.
DOMAIN_COMPONENT_OID = public static final ObjectIdentifier ipAddress_oid =
intern(ObjectIdentifier.newInternal(DOMAIN_COMPONENT_DATA)); ObjectIdentifier.newInternal(ipAddress_data);
/** OID for "UID=" denoting a user id, defined in RFCs 1274 & 2798. */ // Domain component OID from RFC 1274, RFC 2247, RFC 5280.
userid_oid = intern(ObjectIdentifier.newInternal(userid_data)); //
} // OID for "DC=" domain component attributes, used with DNSNames in DN
// format.
public static final ObjectIdentifier DOMAIN_COMPONENT_OID =
ObjectIdentifier.newInternal(DOMAIN_COMPONENT_DATA);
// OID for "UID=" denoting a user id, defined in RFCs 1274 & 2798.
public static final ObjectIdentifier userid_oid =
ObjectIdentifier.newInternal(userid_data);
/** /**
* Return constraint type:<ul> * Return constraint type:<ul>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册