/*
 * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package sun.security.x509;

import java.io.IOException;
import sun.security.util.DerValue;
import sun.security.util.DerOutputStream;

This class defines the X400Address of the GeneralName choice.

The ASN.1 syntax for this is:

ORAddress ::= SEQUENCE {
   built-in-standard-attributes BuiltInStandardAttributes,
   built-in-domain-defined-attributes
                        BuiltInDomainDefinedAttributes OPTIONAL,
   -- see also teletex-domain-defined-attributes
   extension-attributes ExtensionAttributes OPTIONAL }
--      The OR-address is semantically absent from the OR-name if the
--      built-in-standard-attribute sequence is empty and the
--      built-in-domain-defined-attributes and extension-attributes are
--      both omitted.
--      Built-in Standard Attributes
BuiltInStandardAttributes ::= SEQUENCE {
   country-name CountryName OPTIONAL,
   administration-domain-name AdministrationDomainName OPTIONAL,
   network-address      [0] NetworkAddress OPTIONAL,
   -- see also extended-network-address
   terminal-identifier  [1] TerminalIdentifier OPTIONAL,
   private-domain-name  [2] PrivateDomainName OPTIONAL,
   organization-name    [3] OrganizationName OPTIONAL,
   -- see also teletex-organization-name
   numeric-user-identifier      [4] NumericUserIdentifier OPTIONAL,
   personal-name        [5] PersonalName OPTIONAL,
   -- see also teletex-personal-name
   organizational-unit-names    [6] OrganizationalUnitNames OPTIONAL
   -- see also teletex-organizational-unit-names -- }
CountryName ::= [APPLICATION 1] CHOICE {
   x121-dcc-code NumericString
                (SIZE (ub-country-name-numeric-length)),
   iso-3166-alpha2-code PrintableString
                (SIZE (ub-country-name-alpha-length)) }
AdministrationDomainName ::= [APPLICATION 2] CHOICE {
   numeric NumericString (SIZE (0..ub-domain-name-length)),
   printable PrintableString (SIZE (0..ub-domain-name-length)) }
NetworkAddress ::= X121Address  -- see also extended-network-address
X121Address ::= NumericString (SIZE (1..ub-x121-address-length))
TerminalIdentifier ::= PrintableString (SIZE (1..ub-terminal-id-length))
PrivateDomainName ::= CHOICE {
   numeric NumericString (SIZE (1..ub-domain-name-length)),
   printable PrintableString (SIZE (1..ub-domain-name-length)) }
OrganizationName ::= PrintableString
                            (SIZE (1..ub-organization-name-length))
-- see also teletex-organization-name
NumericUserIdentifier ::= NumericString
                            (SIZE (1..ub-numeric-user-id-length))
PersonalName ::= SET {
   surname [0] PrintableString (SIZE (1..ub-surname-length)),
   given-name [1] PrintableString
                        (SIZE (1..ub-given-name-length)) OPTIONAL,
   initials [2] PrintableString (SIZE (1..ub-initials-length)) OPTIONAL,
   generation-qualifier [3] PrintableString
                (SIZE (1..ub-generation-qualifier-length)) OPTIONAL }
-- see also teletex-personal-name
OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units)
                                        OF OrganizationalUnitName
-- see also teletex-organizational-unit-names
OrganizationalUnitName ::= PrintableString (SIZE
                        (1..ub-organizational-unit-name-length))
--      Built-in Domain-defined Attributes
BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
                                (1..ub-domain-defined-attributes) OF
                                BuiltInDomainDefinedAttribute
BuiltInDomainDefinedAttribute ::= SEQUENCE {
   type PrintableString (SIZE
                        (1..ub-domain-defined-attribute-type-length)),
   value PrintableString (SIZE
                        (1..ub-domain-defined-attribute-value-length))}
--      Extension Attributes
ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) OF
                        ExtensionAttribute
ExtensionAttribute ::=  SEQUENCE {
   extension-attribute-type [0] INTEGER (0..ub-extension-attributes),
   extension-attribute-value [1]
                        ANY DEFINED BY extension-attribute-type }
-- Extension types and attribute values
--
common-name INTEGER ::= 1
CommonName ::= PrintableString (SIZE (1..ub-common-name-length))
teletex-common-name INTEGER ::= 2
TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length))
teletex-organization-name INTEGER ::= 3
TeletexOrganizationName ::=
                TeletexString (SIZE (1..ub-organization-name-length))
teletex-personal-name INTEGER ::= 4
TeletexPersonalName ::= SET {
   surname [0] TeletexString (SIZE (1..ub-surname-length)),
   given-name [1] TeletexString
                (SIZE (1..ub-given-name-length)) OPTIONAL,
   initials [2] TeletexString (SIZE (1..ub-initials-length)) OPTIONAL,
   generation-qualifier [3] TeletexString (SIZE
                (1..ub-generation-qualifier-length)) OPTIONAL }
teletex-organizational-unit-names INTEGER ::= 5
TeletexOrganizationalUnitNames ::= SEQUENCE SIZE
        (1..ub-organizational-units) OF TeletexOrganizationalUnitName
TeletexOrganizationalUnitName ::= TeletexString
                        (SIZE (1..ub-organizational-unit-name-length))
pds-name INTEGER ::= 7
PDSName ::= PrintableString (SIZE (1..ub-pds-name-length))
physical-delivery-country-name INTEGER ::= 8
PhysicalDeliveryCountryName ::= CHOICE {
   x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)),
   iso-3166-alpha2-code PrintableString
                        (SIZE (ub-country-name-alpha-length)) }
postal-code INTEGER ::= 9
PostalCode ::= CHOICE {
   numeric-code NumericString (SIZE (1..ub-postal-code-length)),
   printable-code PrintableString (SIZE (1..ub-postal-code-length)) }
physical-delivery-office-name INTEGER ::= 10
PhysicalDeliveryOfficeName ::= PDSParameter
physical-delivery-office-number INTEGER ::= 11
PhysicalDeliveryOfficeNumber ::= PDSParameter
extension-OR-address-components INTEGER ::= 12
ExtensionORAddressComponents ::= PDSParameter
physical-delivery-personal-name INTEGER ::= 13
PhysicalDeliveryPersonalName ::= PDSParameter
physical-delivery-organization-name INTEGER ::= 14
PhysicalDeliveryOrganizationName ::= PDSParameter
extension-physical-delivery-address-components INTEGER ::= 15
ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter
unformatted-postal-address INTEGER ::= 16
UnformattedPostalAddress ::= SET {
   printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines) OF
           PrintableString (SIZE (1..ub-pds-parameter-length)) OPTIONAL,
   teletex-string TeletexString
         (SIZE (1..ub-unformatted-address-length)) OPTIONAL }
street-address INTEGER ::= 17
StreetAddress ::= PDSParameter
post-office-box-address INTEGER ::= 18
PostOfficeBoxAddress ::= PDSParameter
poste-restante-address INTEGER ::= 19
PosteRestanteAddress ::= PDSParameter
unique-postal-name INTEGER ::= 20
UniquePostalName ::= PDSParameter
local-postal-attributes INTEGER ::= 21
LocalPostalAttributes ::= PDSParameter
PDSParameter ::= SET {
   printable-string PrintableString
                (SIZE(1..ub-pds-parameter-length)) OPTIONAL,
   teletex-string TeletexString
                (SIZE(1..ub-pds-parameter-length)) OPTIONAL }
extended-network-address INTEGER ::= 22
ExtendedNetworkAddress ::= CHOICE {
   e163-4-address SEQUENCE {
        number [0] NumericString (SIZE (1..ub-e163-4-number-length)),
        sub-address [1] NumericString
                (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL },
   psap-address [0] PresentationAddress }
PresentationAddress ::= SEQUENCE {
        pSelector       [0] EXPLICIT OCTET STRING OPTIONAL,
        sSelector       [1] EXPLICIT OCTET STRING OPTIONAL,
        tSelector       [2] EXPLICIT OCTET STRING OPTIONAL,
        nAddresses      [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING }
terminal-type  INTEGER ::= 23
TerminalType ::= INTEGER {
   telex (3),
   teletex (4),
   g3-facsimile (5),
   g4-facsimile (6),
   ia5-terminal (7),
   videotex (8) } (0..ub-integer-options)
--      Extension Domain-defined Attributes
teletex-domain-defined-attributes INTEGER ::= 6
TeletexDomainDefinedAttributes ::= SEQUENCE SIZE
   (1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute
TeletexDomainDefinedAttribute ::= SEQUENCE {
        type TeletexString
               (SIZE (1..ub-domain-defined-attribute-type-length)),
        value TeletexString
               (SIZE (1..ub-domain-defined-attribute-value-length)) }
--  specifications of Upper Bounds shall be regarded as mandatory
--  from Annex B of ITU-T X.411 Reference Definition of MTS Parameter
--  Upper Bounds
--      Upper Bounds
ub-name INTEGER ::=     32768
ub-common-name  INTEGER ::=     64
ub-locality-name        INTEGER ::=     128
ub-state-name   INTEGER ::=     128
ub-organization-name    INTEGER ::=     64
ub-organizational-unit-name     INTEGER ::=     64
ub-title        INTEGER ::=     64
ub-match        INTEGER ::=     128
ub-emailaddress-length INTEGER ::= 128
ub-common-name-length INTEGER ::= 64
ub-country-name-alpha-length INTEGER ::= 2
ub-country-name-numeric-length INTEGER ::= 3
ub-domain-defined-attributes INTEGER ::= 4
ub-domain-defined-attribute-type-length INTEGER ::= 8
ub-domain-defined-attribute-value-length INTEGER ::= 128
ub-domain-name-length INTEGER ::= 16
ub-extension-attributes INTEGER ::= 256
ub-e163-4-number-length INTEGER ::= 15
ub-e163-4-sub-address-length INTEGER ::= 40
ub-generation-qualifier-length INTEGER ::= 3
ub-given-name-length INTEGER ::= 16
ub-initials-length INTEGER ::= 5
ub-integer-options INTEGER ::= 256
ub-numeric-user-id-length INTEGER ::= 32
ub-organization-name-length INTEGER ::= 64
ub-organizational-unit-name-length INTEGER ::= 32
ub-organizational-units INTEGER ::= 4
ub-pds-name-length INTEGER ::= 16
ub-pds-parameter-length INTEGER ::= 30
ub-pds-physical-address-lines INTEGER ::= 6
ub-postal-code-length INTEGER ::= 16
ub-surname-length INTEGER ::= 40
ub-terminal-id-length INTEGER ::= 24
ub-unformatted-address-length INTEGER ::= 180
ub-x121-address-length INTEGER ::= 16
-- Note - upper bounds on string types, such as TeletexString, are
-- measured in characters.  Excepting PrintableString or IA5String, a
-- significantly greater number of octets will be required to hold
-- such a value.  As a minimum, 16 octets, or twice the specified upper
-- bound, whichever is the larger, should be allowed for TeletexString.
-- For UTF8String or UniversalString at least four times the upper
-- bound should be allowed.
Author:Anne Anderson
See Also:
Since: 1.4
/** * This class defines the X400Address of the GeneralName choice. * <p> * The ASN.1 syntax for this is: * <pre> * ORAddress ::= SEQUENCE { * built-in-standard-attributes BuiltInStandardAttributes, * built-in-domain-defined-attributes * BuiltInDomainDefinedAttributes OPTIONAL, * -- see also teletex-domain-defined-attributes * extension-attributes ExtensionAttributes OPTIONAL } * -- The OR-address is semantically absent from the OR-name if the * -- built-in-standard-attribute sequence is empty and the * -- built-in-domain-defined-attributes and extension-attributes are * -- both omitted. * * -- Built-in Standard Attributes * * BuiltInStandardAttributes ::= SEQUENCE { * country-name CountryName OPTIONAL, * administration-domain-name AdministrationDomainName OPTIONAL, * network-address [0] NetworkAddress OPTIONAL, * -- see also extended-network-address * terminal-identifier [1] TerminalIdentifier OPTIONAL, * private-domain-name [2] PrivateDomainName OPTIONAL, * organization-name [3] OrganizationName OPTIONAL, * -- see also teletex-organization-name * numeric-user-identifier [4] NumericUserIdentifier OPTIONAL, * personal-name [5] PersonalName OPTIONAL, * -- see also teletex-personal-name * organizational-unit-names [6] OrganizationalUnitNames OPTIONAL * -- see also teletex-organizational-unit-names -- } * * CountryName ::= [APPLICATION 1] CHOICE { * x121-dcc-code NumericString * (SIZE (ub-country-name-numeric-length)), * iso-3166-alpha2-code PrintableString * (SIZE (ub-country-name-alpha-length)) } * * AdministrationDomainName ::= [APPLICATION 2] CHOICE { * numeric NumericString (SIZE (0..ub-domain-name-length)), * printable PrintableString (SIZE (0..ub-domain-name-length)) } * * NetworkAddress ::= X121Address -- see also extended-network-address * * X121Address ::= NumericString (SIZE (1..ub-x121-address-length)) * * TerminalIdentifier ::= PrintableString (SIZE (1..ub-terminal-id-length)) * * PrivateDomainName ::= CHOICE { * numeric NumericString (SIZE (1..ub-domain-name-length)), * printable PrintableString (SIZE (1..ub-domain-name-length)) } * * OrganizationName ::= PrintableString * (SIZE (1..ub-organization-name-length)) * -- see also teletex-organization-name * * NumericUserIdentifier ::= NumericString * (SIZE (1..ub-numeric-user-id-length)) * * PersonalName ::= SET { * surname [0] PrintableString (SIZE (1..ub-surname-length)), * given-name [1] PrintableString * (SIZE (1..ub-given-name-length)) OPTIONAL, * initials [2] PrintableString (SIZE (1..ub-initials-length)) OPTIONAL, * generation-qualifier [3] PrintableString * (SIZE (1..ub-generation-qualifier-length)) OPTIONAL } * -- see also teletex-personal-name * * OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) * OF OrganizationalUnitName * -- see also teletex-organizational-unit-names * * OrganizationalUnitName ::= PrintableString (SIZE * (1..ub-organizational-unit-name-length)) * * -- Built-in Domain-defined Attributes * * BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE * (1..ub-domain-defined-attributes) OF * BuiltInDomainDefinedAttribute * * BuiltInDomainDefinedAttribute ::= SEQUENCE { * type PrintableString (SIZE * (1..ub-domain-defined-attribute-type-length)), * value PrintableString (SIZE * (1..ub-domain-defined-attribute-value-length))} * * -- Extension Attributes * * ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) OF * ExtensionAttribute * * ExtensionAttribute ::= SEQUENCE { * extension-attribute-type [0] INTEGER (0..ub-extension-attributes), * extension-attribute-value [1] * ANY DEFINED BY extension-attribute-type } * * -- Extension types and attribute values * -- * * common-name INTEGER ::= 1 * * CommonName ::= PrintableString (SIZE (1..ub-common-name-length)) * * teletex-common-name INTEGER ::= 2 * * TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length)) * * teletex-organization-name INTEGER ::= 3 * * TeletexOrganizationName ::= * TeletexString (SIZE (1..ub-organization-name-length)) * * teletex-personal-name INTEGER ::= 4 * * TeletexPersonalName ::= SET { * surname [0] TeletexString (SIZE (1..ub-surname-length)), * given-name [1] TeletexString * (SIZE (1..ub-given-name-length)) OPTIONAL, * initials [2] TeletexString (SIZE (1..ub-initials-length)) OPTIONAL, * generation-qualifier [3] TeletexString (SIZE * (1..ub-generation-qualifier-length)) OPTIONAL } * * teletex-organizational-unit-names INTEGER ::= 5 * * TeletexOrganizationalUnitNames ::= SEQUENCE SIZE * (1..ub-organizational-units) OF TeletexOrganizationalUnitName * * TeletexOrganizationalUnitName ::= TeletexString * (SIZE (1..ub-organizational-unit-name-length)) * * pds-name INTEGER ::= 7 * * PDSName ::= PrintableString (SIZE (1..ub-pds-name-length)) * * physical-delivery-country-name INTEGER ::= 8 * * PhysicalDeliveryCountryName ::= CHOICE { * x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)), * iso-3166-alpha2-code PrintableString * (SIZE (ub-country-name-alpha-length)) } * * postal-code INTEGER ::= 9 * * PostalCode ::= CHOICE { * numeric-code NumericString (SIZE (1..ub-postal-code-length)), * printable-code PrintableString (SIZE (1..ub-postal-code-length)) } * * physical-delivery-office-name INTEGER ::= 10 * * PhysicalDeliveryOfficeName ::= PDSParameter * * physical-delivery-office-number INTEGER ::= 11 * * PhysicalDeliveryOfficeNumber ::= PDSParameter * * extension-OR-address-components INTEGER ::= 12 * * ExtensionORAddressComponents ::= PDSParameter * * physical-delivery-personal-name INTEGER ::= 13 * * PhysicalDeliveryPersonalName ::= PDSParameter * * physical-delivery-organization-name INTEGER ::= 14 * * PhysicalDeliveryOrganizationName ::= PDSParameter * * extension-physical-delivery-address-components INTEGER ::= 15 * * ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter * * unformatted-postal-address INTEGER ::= 16 * * UnformattedPostalAddress ::= SET { * printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines) OF * PrintableString (SIZE (1..ub-pds-parameter-length)) OPTIONAL, * teletex-string TeletexString * (SIZE (1..ub-unformatted-address-length)) OPTIONAL } * * street-address INTEGER ::= 17 * * StreetAddress ::= PDSParameter * * post-office-box-address INTEGER ::= 18 * * PostOfficeBoxAddress ::= PDSParameter * * poste-restante-address INTEGER ::= 19 * * PosteRestanteAddress ::= PDSParameter * * unique-postal-name INTEGER ::= 20 * * UniquePostalName ::= PDSParameter * * local-postal-attributes INTEGER ::= 21 * * LocalPostalAttributes ::= PDSParameter * * PDSParameter ::= SET { * printable-string PrintableString * (SIZE(1..ub-pds-parameter-length)) OPTIONAL, * teletex-string TeletexString * (SIZE(1..ub-pds-parameter-length)) OPTIONAL } * * extended-network-address INTEGER ::= 22 * * ExtendedNetworkAddress ::= CHOICE { * e163-4-address SEQUENCE { * number [0] NumericString (SIZE (1..ub-e163-4-number-length)), * sub-address [1] NumericString * (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL }, * psap-address [0] PresentationAddress } * * PresentationAddress ::= SEQUENCE { * pSelector [0] EXPLICIT OCTET STRING OPTIONAL, * sSelector [1] EXPLICIT OCTET STRING OPTIONAL, * tSelector [2] EXPLICIT OCTET STRING OPTIONAL, * nAddresses [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING } * * terminal-type INTEGER ::= 23 * * TerminalType ::= INTEGER { * telex (3), * teletex (4), * g3-facsimile (5), * g4-facsimile (6), * ia5-terminal (7), * videotex (8) } (0..ub-integer-options) * * -- Extension Domain-defined Attributes * * teletex-domain-defined-attributes INTEGER ::= 6 * * TeletexDomainDefinedAttributes ::= SEQUENCE SIZE * (1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute * * TeletexDomainDefinedAttribute ::= SEQUENCE { * type TeletexString * (SIZE (1..ub-domain-defined-attribute-type-length)), * value TeletexString * (SIZE (1..ub-domain-defined-attribute-value-length)) } * * -- specifications of Upper Bounds shall be regarded as mandatory * -- from Annex B of ITU-T X.411 Reference Definition of MTS Parameter * -- Upper Bounds * * -- Upper Bounds * ub-name INTEGER ::= 32768 * ub-common-name INTEGER ::= 64 * ub-locality-name INTEGER ::= 128 * ub-state-name INTEGER ::= 128 * ub-organization-name INTEGER ::= 64 * ub-organizational-unit-name INTEGER ::= 64 * ub-title INTEGER ::= 64 * ub-match INTEGER ::= 128 * * ub-emailaddress-length INTEGER ::= 128 * * ub-common-name-length INTEGER ::= 64 * ub-country-name-alpha-length INTEGER ::= 2 * ub-country-name-numeric-length INTEGER ::= 3 * ub-domain-defined-attributes INTEGER ::= 4 * ub-domain-defined-attribute-type-length INTEGER ::= 8 * ub-domain-defined-attribute-value-length INTEGER ::= 128 * ub-domain-name-length INTEGER ::= 16 * ub-extension-attributes INTEGER ::= 256 * ub-e163-4-number-length INTEGER ::= 15 * ub-e163-4-sub-address-length INTEGER ::= 40 * ub-generation-qualifier-length INTEGER ::= 3 * ub-given-name-length INTEGER ::= 16 * ub-initials-length INTEGER ::= 5 * ub-integer-options INTEGER ::= 256 * ub-numeric-user-id-length INTEGER ::= 32 * ub-organization-name-length INTEGER ::= 64 * ub-organizational-unit-name-length INTEGER ::= 32 * ub-organizational-units INTEGER ::= 4 * ub-pds-name-length INTEGER ::= 16 * ub-pds-parameter-length INTEGER ::= 30 * ub-pds-physical-address-lines INTEGER ::= 6 * ub-postal-code-length INTEGER ::= 16 * ub-surname-length INTEGER ::= 40 * ub-terminal-id-length INTEGER ::= 24 * ub-unformatted-address-length INTEGER ::= 180 * ub-x121-address-length INTEGER ::= 16 * * -- Note - upper bounds on string types, such as TeletexString, are * -- measured in characters. Excepting PrintableString or IA5String, a * -- significantly greater number of octets will be required to hold * -- such a value. As a minimum, 16 octets, or twice the specified upper * -- bound, whichever is the larger, should be allowed for TeletexString. * -- For UTF8String or UniversalString at least four times the upper * -- bound should be allowed. * </pre> * * @author Anne Anderson * @since 1.4 * @see GeneralName * @see GeneralNames * @see GeneralNameInterface */
public class X400Address implements GeneralNameInterface { // Private data members byte[] nameValue = null;
Create the X400Address object from the specified byte array
Params:
  • nameValue – value of the name as a byte array
/** * Create the X400Address object from the specified byte array * * @param nameValue value of the name as a byte array */
public X400Address(byte[] value) { nameValue = value; }
Create the X400Address object from the passed encoded Der value.
Params:
  • derValue – the encoded DER X400Address.
Throws:
/** * Create the X400Address object from the passed encoded Der value. * * @param derValue the encoded DER X400Address. * @exception IOException on error. */
public X400Address(DerValue derValue) throws IOException { nameValue = derValue.toByteArray(); }
Return the type of the GeneralName.
/** * Return the type of the GeneralName. */
public int getType() { return (GeneralNameInterface.NAME_X400); }
Encode the X400 name into the DerOutputStream.
Params:
  • out – the DER stream to encode the X400Address to.
Throws:
/** * Encode the X400 name into the DerOutputStream. * * @param out the DER stream to encode the X400Address to. * @exception IOException on encoding errors. */
public void encode(DerOutputStream out) throws IOException { DerValue derValue = new DerValue(nameValue); out.putDerValue(derValue); }
Return the printable string.
/** * Return the printable string. */
public String toString() { return ("X400Address: <DER-encoded value>"); }
Return type of constraint inputName places on this name:
  • NAME_DIFF_TYPE = -1: input name is different type from name (i.e. does not constrain).
  • NAME_MATCH = 0: input name matches name.
  • NAME_NARROWS = 1: input name narrows name (is lower in the naming subtree)
  • NAME_WIDENS = 2: input name widens name (is higher in the naming subtree)
  • NAME_SAME_TYPE = 3: input name does not match or narrow name, but is same type.
. These results are used in checking NameConstraints during certification path verification.
Params:
  • inputName – to be checked for being constrained
Throws:
@returnsconstraint type above
/** * Return type of constraint inputName places on this name:<ul> * <li>NAME_DIFF_TYPE = -1: input name is different type from name (i.e. does not constrain). * <li>NAME_MATCH = 0: input name matches name. * <li>NAME_NARROWS = 1: input name narrows name (is lower in the naming subtree) * <li>NAME_WIDENS = 2: input name widens name (is higher in the naming subtree) * <li>NAME_SAME_TYPE = 3: input name does not match or narrow name, but is same type. * </ul>. These results are used in checking NameConstraints during * certification path verification. * * @param inputName to be checked for being constrained * @returns constraint type above * @throws UnsupportedOperationException if name is same type, but comparison operations are * not supported for this name type. */
public int constrains(GeneralNameInterface inputName) throws UnsupportedOperationException { int constraintType; if (inputName == null) constraintType = NAME_DIFF_TYPE; else if (inputName.getType() != NAME_X400) constraintType = NAME_DIFF_TYPE; else //Narrowing, widening, and match constraints not defined in rfc2459 for X400Address throw new UnsupportedOperationException("Narrowing, widening, and match are not supported for X400Address."); return constraintType; }
Return subtree depth of this name for purposes of determining NameConstraints minimum and maximum bounds and for calculating path lengths in name subtrees.
Throws:
@returnsdistance of name from root
/** * Return subtree depth of this name for purposes of determining * NameConstraints minimum and maximum bounds and for calculating * path lengths in name subtrees. * * @returns distance of name from root * @throws UnsupportedOperationException if not supported for this name type */
public int subtreeDepth() throws UnsupportedOperationException { throw new UnsupportedOperationException("subtreeDepth not supported for X400Address"); } }