using System;
using System.IO;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Math;
namespace Org.BouncyCastle.X509
{
/// Interface for an X.509 Attribute Certificate.
public interface IX509AttributeCertificate
: IX509Extension
{
/// The version number for the certificate.
int Version { get; }
/// The serial number for the certificate.
BigInteger SerialNumber { get; }
/// The UTC DateTime before which the certificate is not valid.
DateTime NotBefore { get; }
/// The UTC DateTime after which the certificate is not valid.
DateTime NotAfter { get; }
/// The holder of the certificate.
AttributeCertificateHolder Holder { get; }
/// The issuer details for the certificate.
AttributeCertificateIssuer Issuer { get; }
/// Return the attributes contained in the attribute block in the certificate.
/// An array of attributes.
X509Attribute[] GetAttributes();
/// Return the attributes with the same type as the passed in oid.
/// The object identifier we wish to match.
/// An array of matched attributes, null if there is no match.
X509Attribute[] GetAttributes(string oid);
bool[] GetIssuerUniqueID();
bool IsValidNow { get; }
bool IsValid(DateTime date);
void CheckValidity();
void CheckValidity(DateTime date);
byte[] GetSignature();
void Verify(AsymmetricKeyParameter publicKey);
/// Return an ASN.1 encoded byte array representing the attribute certificate.
/// An ASN.1 encoded byte array.
/// If the certificate cannot be encoded.
byte[] GetEncoded();
}
}