package org.bouncycastle.jce;
import java.io.IOException;
import java.security.Principal;
import java.util.Hashtable;
import java.util.Vector;
import org.bouncycastle.asn1.ASN1Encoding;
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.x500.X500Name;
import org.bouncycastle.asn1.x509.X509Name;
a general extension of X509Name with a couple of extra methods and
constructors.
Objects of this type can be created from certificates and CRLs using the
PrincipalUtil class.
See Also: - PrincipalUtil
Deprecated: use the X500Name class.
/**
* a general extension of X509Name with a couple of extra methods and
* constructors.
* <p>
* Objects of this type can be created from certificates and CRLs using the
* PrincipalUtil class.
* </p>
* @see org.bouncycastle.jce.PrincipalUtil
* @deprecated use the X500Name class.
*/
public class X509Principal
extends X509Name
implements Principal
{
private static ASN1Sequence readSequence(
ASN1InputStream aIn)
throws IOException
{
try
{
return ASN1Sequence.getInstance(aIn.readObject());
}
catch (IllegalArgumentException e)
{
throw new IOException("not an ASN.1 Sequence: " + e);
}
}
Constructor from an encoded byte array.
/**
* Constructor from an encoded byte array.
*/
public X509Principal(
byte[] bytes)
throws IOException
{
super(readSequence(new ASN1InputStream(bytes)));
}
Constructor from an X509Name object.
/**
* Constructor from an X509Name object.
*/
public X509Principal(
X509Name name)
{
super((ASN1Sequence)name.toASN1Primitive());
}
Constructor from an X509Name object.
/**
* Constructor from an X509Name object.
*/
public X509Principal(
X500Name name)
{
super((ASN1Sequence)name.toASN1Primitive());
}
constructor from a table of attributes.
it's is assumed the table contains OID/String pairs.
/**
* constructor from a table of attributes.
* <p>
* it's is assumed the table contains OID/String pairs.
*/
public X509Principal(
Hashtable attributes)
{
super(attributes);
}
constructor from a table of attributes and a vector giving the
specific ordering required for encoding or conversion to a string.
it's is assumed the table contains OID/String pairs.
/**
* constructor from a table of attributes and a vector giving the
* specific ordering required for encoding or conversion to a string.
* <p>
* it's is assumed the table contains OID/String pairs.
*/
public X509Principal(
Vector ordering,
Hashtable attributes)
{
super(ordering, attributes);
}
constructor from a vector of attribute values and a vector of OIDs.
/**
* constructor from a vector of attribute values and a vector of OIDs.
*/
public X509Principal(
Vector oids,
Vector values)
{
super(oids, values);
}
takes an X509 dir name as a string of the format "C=AU,ST=Victoria", or
some such, converting it into an ordered set of name attributes.
/**
* takes an X509 dir name as a string of the format "C=AU,ST=Victoria", or
* some such, converting it into an ordered set of name attributes.
*/
public X509Principal(
String dirName)
{
super(dirName);
}
Takes an X509 dir name as a string of the format "C=AU,ST=Victoria", or
some such, converting it into an ordered set of name attributes. If reverse
is false the dir name will be encoded in the order of the (name, value) pairs
presented, otherwise the encoding will start with the last (name, value) pair
and work back.
/**
* Takes an X509 dir name as a string of the format "C=AU,ST=Victoria", or
* some such, converting it into an ordered set of name attributes. If reverse
* is false the dir name will be encoded in the order of the (name, value) pairs
* presented, otherwise the encoding will start with the last (name, value) pair
* and work back.
*/
public X509Principal(
boolean reverse,
String dirName)
{
super(reverse, dirName);
}
Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
some such, converting it into an ordered set of name attributes. lookUp
should provide a table of lookups, indexed by lowercase only strings and
yielding a ASN1ObjectIdentifier, other than that OID. and numeric oids
will be processed automatically.
If reverse is true, create the encoded version of the sequence starting
from the last element in the string.
/**
* Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
* some such, converting it into an ordered set of name attributes. lookUp
* should provide a table of lookups, indexed by lowercase only strings and
* yielding a ASN1ObjectIdentifier, other than that OID. and numeric oids
* will be processed automatically.
* <p>
* If reverse is true, create the encoded version of the sequence starting
* from the last element in the string.
*/
public X509Principal(
boolean reverse,
Hashtable lookUp,
String dirName)
{
super(reverse, lookUp, dirName);
}
public String getName()
{
return this.toString();
}
return a DER encoded byte array representing this object
/**
* return a DER encoded byte array representing this object
*/
public byte[] getEncoded()
{
try
{
return this.getEncoded(ASN1Encoding.DER);
}
catch (IOException e)
{
throw new RuntimeException(e.toString());
}
}
}