internal X509V2AttributeCertificate(
			AttributeCertificate cert)
		{
			this.cert = cert;

			try
			{
				this.notAfter = cert.ACInfo.AttrCertValidityPeriod.NotAfterTime.ToDateTime();
				this.notBefore = cert.ACInfo.AttrCertValidityPeriod.NotBeforeTime.ToDateTime();
			}
			catch (Exception e)
			{
				throw new IOException("invalid data structure in certificate!", e);
			}
		}
		private SignerAttribute(
			object obj)
		{
			Asn1Sequence seq = (Asn1Sequence) obj;
			DerTaggedObject taggedObject = (DerTaggedObject) seq[0];
			if (taggedObject.TagNo == 0)
			{
				claimedAttributes = Asn1Sequence.GetInstance(taggedObject, true);
			}
			else if (taggedObject.TagNo == 1)
			{
				certifiedAttributes = AttributeCertificate.GetInstance(taggedObject);
			}
			else
			{
				throw new ArgumentException("illegal tag.", "obj");
			}
		}
		public SignerAttribute(
			AttributeCertificate certifiedAttributes)
		{
			this.certifiedAttributes = certifiedAttributes;
		}
 /**
  * Note: the addition of attribute certificates is a BC extension.
  */
 public CmpCertificate(AttributeCertificate x509v2AttrCert)
 {
     this.x509v2AttrCert = x509v2AttrCert;
 }