Top Description Fields Constructors Methods
org.bouncycastle.cert

public Class AttributeCertificateHolder

extends Object
implements Selector
Class Inheritance
All Implemented Interfaces
org.bouncycastle.util.Selector, java.lang.Cloneable
Imports
java.io.OutputStream, java.math.BigInteger, java.util.ArrayList, .List, org.bouncycastle.asn1.ASN1Integer, .ASN1ObjectIdentifier, .ASN1Sequence, org.bouncycastle.asn1.x500.X500Name, org.bouncycastle.asn1.x509.AlgorithmIdentifier, .GeneralName, .GeneralNames, .Holder, .IssuerSerial, .ObjectDigestInfo, org.bouncycastle.operator.DigestCalculator, .DigestCalculatorProvider, org.bouncycastle.util.Arrays, .Selector

The Holder object.
         Holder ::= SEQUENCE {
               baseCertificateID   [0] IssuerSerial OPTIONAL,
                        -- the issuer and serial number of
                        -- the holder's Public Key Certificate
               entityName          [1] GeneralNames OPTIONAL,
                        -- the name of the claimant or role
               objectDigestInfo    [2] ObjectDigestInfo OPTIONAL
                        -- used to directly authenticate the holder,
                        -- for example, an executable
         }

Note

If objectDigestInfo comparisons are to be carried out the static method setDigestCalculatorProvider must be called once to configure the class to do the necessary calculations.

Field Summary

Modifier and TypeField and Description
private static DigestCalculatorProvider
pack-priv final Holder

Constructor Summary

AccessConstructor and Description
pack-priv
public
AttributeCertificateHolder(X500Name
name of associated certificate's issuer.
issuerName
,
BigInteger
serial number of associated certificate.
serialNumber
)

Create a holder using the baseCertificateID element.

public
AttributeCertificateHolder(X509CertificateHolder
the certificate to be associated with this holder.
cert
)

Create a holder using the baseCertificateID option based on the passed in associated certificate,

public
AttributeCertificateHolder(X500Name
the entityName to be associated with the attribute certificate.
principal
)

Create a holder using the entityName option based on the passed in principal.

public
AttributeCertificateHolder(int
The digest object type.
digestedObjectType
,
ASN1ObjectIdentifier
The algorithm identifier for the hash.
digestAlgorithm
,
ASN1ObjectIdentifier
The object type ID if digestedObjectType is otherObjectDigest.
otherObjectTypeID
,
byte[]
The hash value.
objectDigest
)

Constructs a holder for v2 attribute certificates with a hash value for some type of object.

Method Summary

Modifier and TypeMethod and Description
public Object
clone()

Overrides java.lang.Object.clone.

Implements org.bouncycastle.util.Selector.clone.

Creates and returns a copy of this object.
public boolean
equals(Object
the reference object with which to compare.
obj
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.
private GeneralNames
public AlgorithmIdentifier

Returns:

digest AlgorithmIdentifier or null if ObjectDigestInfo is absent.
getDigestAlgorithm
()

Returns algorithm identifier for the digest used if ObjectDigestInfo is present.

public int

Returns:

The digest object type or -1 if no object digest info is set.
getDigestedObjectType
()

Returns the digest object type if an object digest info is used.

public X500Name[]

Returns:

an array of Principal objects (usually X500Principal), null if no entity names field is set.
getEntityNames
()

Return any principal objects inside the attribute certificate holder entity names field.

public X500Name[]

Returns:

an array of principals, null if no BaseCertificateID is set.
getIssuer
()

Return the principals associated with the issuer attached to this holder

public byte[]

Returns:

The hash or null if ObjectDigestInfo is absent.
getObjectDigest
()

Returns the hash if an object digest info is used.

public ASN1ObjectIdentifier

Returns:

The digest algorithm ID or null if no object digest info is set.
getOtherObjectTypeID
()

Returns the digest algorithm ID if an object digest info is used.

private X500Name[]
public BigInteger

Returns:

the certificate serial number, null if no BaseCertificateID is set.
getSerialNumber
()

Return the serial number associated with the issuer attached to this holder.

public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for the object.
public boolean
match(Object
the object to be matched.
obj
)

Implements org.bouncycastle.util.Selector.match.

Match the passed in object, returning true if it would be selected by this selector, false otherwise.
private boolean
matchesDN(X500Name subject, GeneralNames targets)

public static void
setDigestCalculatorProvider(DigestCalculatorProvider
a provider of digest calculators.
digCalcProvider
)

Set a digest calculator provider to be used if matches are attempted using ObjectDigestInfo,

Inherited from java.lang.Object:
finalizegetClassnotifynotifyAlltoStringwaitwaitwait

Field Detail

digestCalculatorProviderback to summary
private static DigestCalculatorProvider digestCalculatorProvider
holderback to summary
pack-priv final Holder holder

Constructor Detail

AttributeCertificateHolderback to summary
pack-priv AttributeCertificateHolder(ASN1Sequence seq)
AttributeCertificateHolderback to summary
public AttributeCertificateHolder(X500Name issuerName, BigInteger serialNumber)

Create a holder using the baseCertificateID element.

Parameters
issuerName:X500Name

name of associated certificate's issuer.

serialNumber:BigInteger

serial number of associated certificate.

AttributeCertificateHolderback to summary
public AttributeCertificateHolder(X509CertificateHolder cert)

Create a holder using the baseCertificateID option based on the passed in associated certificate,

Parameters
cert:X509CertificateHolder

the certificate to be associated with this holder.

AttributeCertificateHolderback to summary
public AttributeCertificateHolder(X500Name principal)

Create a holder using the entityName option based on the passed in principal.

Parameters
principal:X500Name

the entityName to be associated with the attribute certificate.

AttributeCertificateHolderback to summary
public AttributeCertificateHolder(int digestedObjectType, ASN1ObjectIdentifier digestAlgorithm, ASN1ObjectIdentifier otherObjectTypeID, byte[] objectDigest)

Constructs a holder for v2 attribute certificates with a hash value for some type of object.

digestedObjectType can be one of the following:

  • 0 - publicKey - A hash of the public key of the holder must be passed.
  • 1 - publicKeyCert - A hash of the public key certificate of the holder must be passed.
  • 2 - otherObjectDigest - A hash of some other object type must be passed. otherObjectTypeID must not be empty.

This cannot be used if a v1 attribute certificate is used.

Parameters
digestedObjectType:int

The digest object type.

digestAlgorithm:ASN1ObjectIdentifier

The algorithm identifier for the hash.

otherObjectTypeID:ASN1ObjectIdentifier

The object type ID if digestedObjectType is otherObjectDigest.

objectDigest:byte[]

The hash value.

Method Detail

cloneback to summary
public Object clone()

Overrides java.lang.Object.clone.

Implements org.bouncycastle.util.Selector.clone.

Doc from java.lang.Object.clone.

Creates and returns a copy of this object. The precise meaning of "copy" may depend on the class of the object. The general intent is that, for any object x, the expression:

x.clone() != x
will be true, and that the expression:
x.clone().getClass() == x.getClass()
will be true, but these are not absolute requirements. While it is typically the case that:
x.clone().equals(x)
will be true, this is not an absolute requirement.

By convention, the returned object should be obtained by calling super.clone. If a class and all of its superclasses (except Object) obey this convention, it will be the case that x.clone().getClass() == x.getClass().

By convention, the object returned by this method should be independent of this object (which is being cloned). To achieve this independence, it may be necessary to modify one or more fields of the object returned by super.clone before returning it. Typically, this means copying any mutable objects that comprise the internal "deep structure" of the object being cloned and replacing the references to these objects with references to the copies. If a class contains only primitive fields or references to immutable objects, then it is usually the case that no fields in the object returned by super.clone need to be modified.

Returns:Object

a clone of this instance.

equalsback to summary
public boolean equals(Object obj)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

generateGeneralNamesback to summary
private GeneralNames generateGeneralNames(X500Name principal)
getDigestAlgorithmback to summary
public AlgorithmIdentifier getDigestAlgorithm()

Returns algorithm identifier for the digest used if ObjectDigestInfo is present.

Returns:AlgorithmIdentifier

digest AlgorithmIdentifier or null if ObjectDigestInfo is absent.

getDigestedObjectTypeback to summary
public int getDigestedObjectType()

Returns the digest object type if an object digest info is used.

  • 0 - publicKey - A hash of the public key of the holder must be passed.
  • 1 - publicKeyCert - A hash of the public key certificate of the holder must be passed.
  • 2 - otherObjectDigest - A hash of some other object type must be passed. otherObjectTypeID must not be empty.
Returns:int

The digest object type or -1 if no object digest info is set.

getEntityNamesback to summary
public X500Name[] getEntityNames()

Return any principal objects inside the attribute certificate holder entity names field.

Returns:X500Name[]

an array of Principal objects (usually X500Principal), null if no entity names field is set.

getIssuerback to summary
public X500Name[] getIssuer()

Return the principals associated with the issuer attached to this holder

Returns:X500Name[]

an array of principals, null if no BaseCertificateID is set.

getObjectDigestback to summary
public byte[] getObjectDigest()

Returns the hash if an object digest info is used.

Returns:byte[]

The hash or null if ObjectDigestInfo is absent.

getOtherObjectTypeIDback to summary
public ASN1ObjectIdentifier getOtherObjectTypeID()

Returns the digest algorithm ID if an object digest info is used.

Returns:ASN1ObjectIdentifier

The digest algorithm ID or null if no object digest info is set.

getPrincipalsback to summary
private X500Name[] getPrincipals(GeneralName[] names)
getSerialNumberback to summary
public BigInteger getSerialNumber()

Return the serial number associated with the issuer attached to this holder.

Returns:BigInteger

the certificate serial number, null if no BaseCertificateID is set.

hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object.

matchback to summary
public boolean match(Object obj)

Implements org.bouncycastle.util.Selector.match.

Doc from org.bouncycastle.util.Selector.match.

Match the passed in object, returning true if it would be selected by this selector, false otherwise.

Parameters
obj:Object

the object to be matched.

Returns:boolean

true if the object is a match for this selector, false otherwise.

matchesDNback to summary
private boolean matchesDN(X500Name subject, GeneralNames targets)
setDigestCalculatorProviderback to summary
public static void setDigestCalculatorProvider(DigestCalculatorProvider digCalcProvider)

Set a digest calculator provider to be used if matches are attempted using ObjectDigestInfo,

Parameters
digCalcProvider:DigestCalculatorProvider

a provider of digest calculators.