using System; using Org.BouncyCastle.Utilities; 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; } } }