using System; namespace Org.BouncyCastle.Asn1.X509 { /** * Targets structure used in target information extension for attribute * certificates from RFC 3281. * *
* Targets ::= SEQUENCE OF Target
*
* Target ::= CHOICE {
* targetName [0] GeneralName,
* targetGroup [1] GeneralName,
* targetCert [2] TargetCert
* }
*
* TargetCert ::= SEQUENCE {
* targetCertificate IssuerSerial,
* targetName GeneralName OPTIONAL,
* certDigestInfo ObjectDigestInfo OPTIONAL
* }
*
*
* @see org.bouncycastle.asn1.x509.Target
* @see org.bouncycastle.asn1.x509.TargetInformation
*/
public class Targets
: Asn1Encodable
{
private readonly Asn1Sequence targets;
/**
* Creates an instance of a Targets from the given object.
*
* obj can be a Targets or a {@link Asn1Sequence}
* The ArrayList is copied.
* * @param targets AnArrayList of {@link Target}s.
* @see Target
* @throws ArgumentException if the ArrayList contains not only Targets.
*/
public Targets(
Target[] targets)
{
this.targets = new DerSequence(targets);
}
/**
* Returns the targets in an ArrayList.
* * The ArrayList is cloned before it is returned.
* * @return Returns the targets. */ public virtual Target[] GetTargets() { Target[] result = new Target[targets.Count]; for (int i = 0; i < targets.Count; ++i) { result[i] = Target.GetInstance(targets[i]); } return result; } /** * Produce an object suitable for an Asn1OutputStream. * * Returns: * ** Targets ::= SEQUENCE OF Target ** * @return an Asn1Object */ public override Asn1Object ToAsn1Object() { return targets; } } }