/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM nsIX509Cert.idl
 */

#ifndef __gen_nsIX509Cert_h__
#define __gen_nsIX509Cert_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

#ifndef __gen_nsISupportsArray_h__
#include "nsISupportsArray.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif

/* starting interface:    nsIX509CertValidity */
#define NS_IX509CERTVALIDITY_IID_STR "e701dfd8-1dd1-11b2-a172-ffa6cc6156ad"

#define NS_IX509CERTVALIDITY_IID \
  {0xe701dfd8, 0x1dd1, 0x11b2, \
    { 0xa1, 0x72, 0xff, 0xa6, 0xcc, 0x61, 0x56, 0xad }}

class NS_NO_VTABLE nsIX509CertValidity : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IX509CERTVALIDITY_IID)

  /* readonly attribute PRTime notBefore; */
  NS_IMETHOD GetNotBefore(PRTime *aNotBefore) = 0;

  /* readonly attribute PRTime notAfter; */
  NS_IMETHOD GetNotAfter(PRTime *aNotAfter) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIX509CERTVALIDITY \
  NS_IMETHOD GetNotBefore(PRTime *aNotBefore); \
  NS_IMETHOD GetNotAfter(PRTime *aNotAfter); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIX509CERTVALIDITY(_to) \
  NS_IMETHOD GetNotBefore(PRTime *aNotBefore) { return _to ## GetNotBefore(aNotBefore); } \
  NS_IMETHOD GetNotAfter(PRTime *aNotAfter) { return _to ## GetNotAfter(aNotAfter); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIX509CERTVALIDITY(_to) \
  NS_IMETHOD GetNotBefore(PRTime *aNotBefore) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetNotBefore(aNotBefore); } \
  NS_IMETHOD GetNotAfter(PRTime *aNotAfter) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetNotAfter(aNotAfter); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsX509CertValidity : public nsIX509CertValidity
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIX509CERTVALIDITY

  nsX509CertValidity();
  virtual ~nsX509CertValidity();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsX509CertValidity, nsIX509CertValidity)

nsX509CertValidity::nsX509CertValidity()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

nsX509CertValidity::~nsX509CertValidity()
{
  /* destructor code */
}

/* readonly attribute PRTime notBefore; */
NS_IMETHODIMP nsX509CertValidity::GetNotBefore(PRTime *aNotBefore)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRTime notAfter; */
NS_IMETHODIMP nsX509CertValidity::GetNotAfter(PRTime *aNotAfter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIASN1Object */
#define NS_IASN1OBJECT_IID_STR "ba8bf582-1dd1-11b2-898c-f40246bc9a63"

#define NS_IASN1OBJECT_IID \
  {0xba8bf582, 0x1dd1, 0x11b2, \
    { 0x89, 0x8c, 0xf4, 0x02, 0x46, 0xbc, 0x9a, 0x63 }}

class NS_NO_VTABLE nsIASN1Object : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IASN1OBJECT_IID)

  enum { ASN1_END_CONTENTS = 0U };

  enum { ASN1_BOOLEAN = 1U };

  enum { ASN1_INTEGER = 2U };

  enum { ASN1_BIT_STRING = 3U };

  enum { ASN1_OCTET_STRING = 4U };

  enum { ASN1_NULL = 5U };

  enum { ASN1_OBJECT_ID = 6U };

  enum { ASN1_ENUMERATED = 10U };

  enum { ASN1_UTF8_STRING = 12U };

  enum { ASN1_SEQUENCE = 16U };

  enum { ASN1_SET = 17U };

  enum { ASN1_PRINTABLE_STRING = 19U };

  enum { ASN1_T61_STRING = 20U };

  enum { ASN1_IA5_STRING = 22U };

  enum { ASN1_UTC_TIME = 23U };

  enum { ASN1_GEN_TIME = 24U };

  enum { ASN1_VISIBLE_STRING = 26U };

  enum { ASN1_UNIVERSAL_STRING = 28U };

  enum { ASN1_BMP_STRING = 30U };

  enum { ASN1_HIGH_TAG_NUMBER = 31U };

  enum { ASN1_CONTEXT_SPECIFIC = 32U };

  enum { ASN1_APPLICATION = 33U };

  enum { ASN1_PRIVATE = 34U };

  /* attribute unsigned long type; */
  NS_IMETHOD GetType(PRUint32 *aType) = 0;
  NS_IMETHOD SetType(PRUint32 aType) = 0;

  /* attribute unsigned long tag; */
  NS_IMETHOD GetTag(PRUint32 *aTag) = 0;
  NS_IMETHOD SetTag(PRUint32 aTag) = 0;

  /* attribute wstring displayName; */
  NS_IMETHOD GetDisplayName(PRUnichar * *aDisplayName) = 0;
  NS_IMETHOD SetDisplayName(const PRUnichar * aDisplayName) = 0;

  /* attribute wstring displayValue; */
  NS_IMETHOD GetDisplayValue(PRUnichar * *aDisplayValue) = 0;
  NS_IMETHOD SetDisplayValue(const PRUnichar * aDisplayValue) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIASN1OBJECT \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD SetType(PRUint32 aType); \
  NS_IMETHOD GetTag(PRUint32 *aTag); \
  NS_IMETHOD SetTag(PRUint32 aTag); \
  NS_IMETHOD GetDisplayName(PRUnichar * *aDisplayName); \
  NS_IMETHOD SetDisplayName(const PRUnichar * aDisplayName); \
  NS_IMETHOD GetDisplayValue(PRUnichar * *aDisplayValue); \
  NS_IMETHOD SetDisplayValue(const PRUnichar * aDisplayValue); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIASN1OBJECT(_to) \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to ## GetType(aType); } \
  NS_IMETHOD SetType(PRUint32 aType) { return _to ## SetType(aType); } \
  NS_IMETHOD GetTag(PRUint32 *aTag) { return _to ## GetTag(aTag); } \
  NS_IMETHOD SetTag(PRUint32 aTag) { return _to ## SetTag(aTag); } \
  NS_IMETHOD GetDisplayName(PRUnichar * *aDisplayName) { return _to ## GetDisplayName(aDisplayName); } \
  NS_IMETHOD SetDisplayName(const PRUnichar * aDisplayName) { return _to ## SetDisplayName(aDisplayName); } \
  NS_IMETHOD GetDisplayValue(PRUnichar * *aDisplayValue) { return _to ## GetDisplayValue(aDisplayValue); } \
  NS_IMETHOD SetDisplayValue(const PRUnichar * aDisplayValue) { return _to ## SetDisplayValue(aDisplayValue); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIASN1OBJECT(_to) \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetType(aType); } \
  NS_IMETHOD SetType(PRUint32 aType) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetType(aType); } \
  NS_IMETHOD GetTag(PRUint32 *aTag) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetTag(aTag); } \
  NS_IMETHOD SetTag(PRUint32 aTag) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetTag(aTag); } \
  NS_IMETHOD GetDisplayName(PRUnichar * *aDisplayName) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetDisplayName(aDisplayName); } \
  NS_IMETHOD SetDisplayName(const PRUnichar * aDisplayName) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetDisplayName(aDisplayName); } \
  NS_IMETHOD GetDisplayValue(PRUnichar * *aDisplayValue) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetDisplayValue(aDisplayValue); } \
  NS_IMETHOD SetDisplayValue(const PRUnichar * aDisplayValue) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetDisplayValue(aDisplayValue); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsASN1Object : public nsIASN1Object
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIASN1OBJECT

  nsASN1Object();
  virtual ~nsASN1Object();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsASN1Object, nsIASN1Object)

nsASN1Object::nsASN1Object()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

nsASN1Object::~nsASN1Object()
{
  /* destructor code */
}

/* attribute unsigned long type; */
NS_IMETHODIMP nsASN1Object::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsASN1Object::SetType(PRUint32 aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long tag; */
NS_IMETHODIMP nsASN1Object::GetTag(PRUint32 *aTag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsASN1Object::SetTag(PRUint32 aTag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring displayName; */
NS_IMETHODIMP nsASN1Object::GetDisplayName(PRUnichar * *aDisplayName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsASN1Object::SetDisplayName(const PRUnichar * aDisplayName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring displayValue; */
NS_IMETHODIMP nsASN1Object::GetDisplayValue(PRUnichar * *aDisplayValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsASN1Object::SetDisplayValue(const PRUnichar * aDisplayValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIASN1Sequence */
#define NS_IASN1SEQUENCE_IID_STR "b6b957e6-1dd1-11b2-89d7-e30624f50b00"

#define NS_IASN1SEQUENCE_IID \
  {0xb6b957e6, 0x1dd1, 0x11b2, \
    { 0x89, 0xd7, 0xe3, 0x06, 0x24, 0xf5, 0x0b, 0x00 }}

class NS_NO_VTABLE nsIASN1Sequence : public nsIASN1Object {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IASN1SEQUENCE_IID)

  /* attribute nsISupportsArray ASN1Objects; */
  NS_IMETHOD GetASN1Objects(nsISupportsArray * *aASN1Objects) = 0;
  NS_IMETHOD SetASN1Objects(nsISupportsArray * aASN1Objects) = 0;

  /* attribute boolean processObjects; */
  NS_IMETHOD GetProcessObjects(PRBool *aProcessObjects) = 0;
  NS_IMETHOD SetProcessObjects(PRBool aProcessObjects) = 0;

  /* attribute boolean showObjects; */
  NS_IMETHOD GetShowObjects(PRBool *aShowObjects) = 0;
  NS_IMETHOD SetShowObjects(PRBool aShowObjects) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIASN1SEQUENCE \
  NS_IMETHOD GetASN1Objects(nsISupportsArray * *aASN1Objects); \
  NS_IMETHOD SetASN1Objects(nsISupportsArray * aASN1Objects); \
  NS_IMETHOD GetProcessObjects(PRBool *aProcessObjects); \
  NS_IMETHOD SetProcessObjects(PRBool aProcessObjects); \
  NS_IMETHOD GetShowObjects(PRBool *aShowObjects); \
  NS_IMETHOD SetShowObjects(PRBool aShowObjects); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIASN1SEQUENCE(_to) \
  NS_IMETHOD GetASN1Objects(nsISupportsArray * *aASN1Objects) { return _to ## GetASN1Objects(aASN1Objects); } \
  NS_IMETHOD SetASN1Objects(nsISupportsArray * aASN1Objects) { return _to ## SetASN1Objects(aASN1Objects); } \
  NS_IMETHOD GetProcessObjects(PRBool *aProcessObjects) { return _to ## GetProcessObjects(aProcessObjects); } \
  NS_IMETHOD SetProcessObjects(PRBool aProcessObjects) { return _to ## SetProcessObjects(aProcessObjects); } \
  NS_IMETHOD GetShowObjects(PRBool *aShowObjects) { return _to ## GetShowObjects(aShowObjects); } \
  NS_IMETHOD SetShowObjects(PRBool aShowObjects) { return _to ## SetShowObjects(aShowObjects); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIASN1SEQUENCE(_to) \
  NS_IMETHOD GetASN1Objects(nsISupportsArray * *aASN1Objects) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetASN1Objects(aASN1Objects); } \
  NS_IMETHOD SetASN1Objects(nsISupportsArray * aASN1Objects) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetASN1Objects(aASN1Objects); } \
  NS_IMETHOD GetProcessObjects(PRBool *aProcessObjects) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetProcessObjects(aProcessObjects); } \
  NS_IMETHOD SetProcessObjects(PRBool aProcessObjects) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetProcessObjects(aProcessObjects); } \
  NS_IMETHOD GetShowObjects(PRBool *aShowObjects) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetShowObjects(aShowObjects); } \
  NS_IMETHOD SetShowObjects(PRBool aShowObjects) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetShowObjects(aShowObjects); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsASN1Sequence : public nsIASN1Sequence
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIASN1SEQUENCE

  nsASN1Sequence();
  virtual ~nsASN1Sequence();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsASN1Sequence, nsIASN1Sequence)

nsASN1Sequence::nsASN1Sequence()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

nsASN1Sequence::~nsASN1Sequence()
{
  /* destructor code */
}

/* attribute nsISupportsArray ASN1Objects; */
NS_IMETHODIMP nsASN1Sequence::GetASN1Objects(nsISupportsArray * *aASN1Objects)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsASN1Sequence::SetASN1Objects(nsISupportsArray * aASN1Objects)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean processObjects; */
NS_IMETHODIMP nsASN1Sequence::GetProcessObjects(PRBool *aProcessObjects)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsASN1Sequence::SetProcessObjects(PRBool aProcessObjects)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean showObjects; */
NS_IMETHODIMP nsASN1Sequence::GetShowObjects(PRBool *aShowObjects)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsASN1Sequence::SetShowObjects(PRBool aShowObjects)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIASN1PrintableItem */
#define NS_IASN1PRINTABLEITEM_IID_STR "114e1142-1dd2-11b2-ac26-b6db19d9184a"

#define NS_IASN1PRINTABLEITEM_IID \
  {0x114e1142, 0x1dd2, 0x11b2, \
    { 0xac, 0x26, 0xb6, 0xdb, 0x19, 0xd9, 0x18, 0x4a }}

class NS_NO_VTABLE nsIASN1PrintableItem : public nsIASN1Object {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IASN1PRINTABLEITEM_IID)

  /* [noscript] void setData (in charPtr data, in unsigned long len); */
  NS_IMETHOD SetData(char * data, PRUint32 len) = 0;

  /* [noscript] void getData (out charPtr data, out unsigned long len); */
  NS_IMETHOD GetData(char * *data, PRUint32 *len) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIASN1PRINTABLEITEM \
  NS_IMETHOD SetData(char * data, PRUint32 len); \
  NS_IMETHOD GetData(char * *data, PRUint32 *len); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIASN1PRINTABLEITEM(_to) \
  NS_IMETHOD SetData(char * data, PRUint32 len) { return _to ## SetData(data, len); } \
  NS_IMETHOD GetData(char * *data, PRUint32 *len) { return _to ## GetData(data, len); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIASN1PRINTABLEITEM(_to) \
  NS_IMETHOD SetData(char * data, PRUint32 len) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SetData(data, len); } \
  NS_IMETHOD GetData(char * *data, PRUint32 *len) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetData(data, len); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsASN1PrintableItem : public nsIASN1PrintableItem
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIASN1PRINTABLEITEM

  nsASN1PrintableItem();
  virtual ~nsASN1PrintableItem();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsASN1PrintableItem, nsIASN1PrintableItem)

nsASN1PrintableItem::nsASN1PrintableItem()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

nsASN1PrintableItem::~nsASN1PrintableItem()
{
  /* destructor code */
}

/* [noscript] void setData (in charPtr data, in unsigned long len); */
NS_IMETHODIMP nsASN1PrintableItem::SetData(char * data, PRUint32 len)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void getData (out charPtr data, out unsigned long len); */
NS_IMETHODIMP nsASN1PrintableItem::GetData(char * *data, PRUint32 *len)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIX509Cert */
#define NS_IX509CERT_IID_STR "f0980f60-ee3d-11d4-998b-00b0d02354a0"

#define NS_IX509CERT_IID \
  {0xf0980f60, 0xee3d, 0x11d4, \
    { 0x99, 0x8b, 0x00, 0xb0, 0xd0, 0x23, 0x54, 0xa0 }}

class NS_NO_VTABLE nsIX509Cert : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IX509CERT_IID)

  /* readonly attribute wstring nickname; */
  NS_IMETHOD GetNickname(PRUnichar * *aNickname) = 0;

  /* readonly attribute wstring emailAddress; */
  NS_IMETHOD GetEmailAddress(PRUnichar * *aEmailAddress) = 0;

  /* readonly attribute wstring commonName; */
  NS_IMETHOD GetCommonName(PRUnichar * *aCommonName) = 0;

  /* readonly attribute wstring organization; */
  NS_IMETHOD GetOrganization(PRUnichar * *aOrganization) = 0;

  /* readonly attribute wstring organizationalUnit; */
  NS_IMETHOD GetOrganizationalUnit(PRUnichar * *aOrganizationalUnit) = 0;

  /* readonly attribute wstring subjectName; */
  NS_IMETHOD GetSubjectName(PRUnichar * *aSubjectName) = 0;

  /* readonly attribute wstring issuerName; */
  NS_IMETHOD GetIssuerName(PRUnichar * *aIssuerName) = 0;

  /* readonly attribute wstring serialNumber; */
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) = 0;

  /* readonly attribute wstring rsaPubModulus; */
  NS_IMETHOD GetRsaPubModulus(PRUnichar * *aRsaPubModulus) = 0;

  /* readonly attribute wstring sha1Fingerprint; */
  NS_IMETHOD GetSha1Fingerprint(PRUnichar * *aSha1Fingerprint) = 0;

  /* readonly attribute wstring md5Fingerprint; */
  NS_IMETHOD GetMd5Fingerprint(PRUnichar * *aMd5Fingerprint) = 0;

  /* readonly attribute wstring issuedDate; */
  NS_IMETHOD GetIssuedDate(PRUnichar * *aIssuedDate) = 0;

  /* readonly attribute wstring expiresDate; */
  NS_IMETHOD GetExpiresDate(PRUnichar * *aExpiresDate) = 0;

  /* readonly attribute wstring tokenName; */
  NS_IMETHOD GetTokenName(PRUnichar * *aTokenName) = 0;

  /* readonly attribute wstring issuerOrganization; */
  NS_IMETHOD GetIssuerOrganization(PRUnichar * *aIssuerOrganization) = 0;

  /* readonly attribute nsIX509Cert issuer; */
  NS_IMETHOD GetIssuer(nsIX509Cert * *aIssuer) = 0;

  /* readonly attribute nsIX509CertValidity validity; */
  NS_IMETHOD GetValidity(nsIX509CertValidity * *aValidity) = 0;

  /* readonly attribute string dbKey; */
  NS_IMETHOD GetDbKey(char * *aDbKey) = 0;

  /* readonly attribute string windowTitle; */
  NS_IMETHOD GetWindowTitle(char * *aWindowTitle) = 0;

  enum { UNKNOWN_CERT = 0U };

  enum { CA_CERT = 1U };

  enum { USER_CERT = 2U };

  enum { EMAIL_CERT = 4U };

  enum { SERVER_CERT = 8U };

  enum { VERIFIED_OK = 0U };

  enum { NOT_VERIFIED_UNKNOWN = 1U };

  enum { CERT_REVOKED = 2U };

  enum { CERT_EXPIRED = 4U };

  enum { CERT_NOT_TRUSTED = 8U };

  enum { ISSUER_NOT_TRUSTED = 16U };

  enum { ISSUER_UNKNOWN = 32U };

  enum { INVALID_CA = 64U };

  /* nsISupportsArray getChain (); */
  NS_IMETHOD GetChain(nsISupportsArray **_retval) = 0;

  /* void getUsages (out PRUint32 verified, out PRUint32 count, [array, size_is (count)] out wstring usages); */
  NS_IMETHOD GetUsages(PRUint32 *verified, PRUint32 *count, PRUnichar ***usages) = 0;

  /* void getPurposes (out PRUint32 verified, out wstring purposes); */
  NS_IMETHOD GetPurposes(PRUint32 *verified, PRUnichar **purposes) = 0;

  /* void view (); */
  NS_IMETHOD View(void) = 0;

  /* readonly attribute nsIASN1Object ASN1Structure; */
  NS_IMETHOD GetASN1Structure(nsIASN1Object * *aASN1Structure) = 0;

  /* [noscript] unsigned long getRawDER (out charPtr result); */
  NS_IMETHOD GetRawDER(char * *result, PRUint32 *_retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIX509CERT \
  NS_IMETHOD GetNickname(PRUnichar * *aNickname); \
  NS_IMETHOD GetEmailAddress(PRUnichar * *aEmailAddress); \
  NS_IMETHOD GetCommonName(PRUnichar * *aCommonName); \
  NS_IMETHOD GetOrganization(PRUnichar * *aOrganization); \
  NS_IMETHOD GetOrganizationalUnit(PRUnichar * *aOrganizationalUnit); \
  NS_IMETHOD GetSubjectName(PRUnichar * *aSubjectName); \
  NS_IMETHOD GetIssuerName(PRUnichar * *aIssuerName); \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber); \
  NS_IMETHOD GetRsaPubModulus(PRUnichar * *aRsaPubModulus); \
  NS_IMETHOD GetSha1Fingerprint(PRUnichar * *aSha1Fingerprint); \
  NS_IMETHOD GetMd5Fingerprint(PRUnichar * *aMd5Fingerprint); \
  NS_IMETHOD GetIssuedDate(PRUnichar * *aIssuedDate); \
  NS_IMETHOD GetExpiresDate(PRUnichar * *aExpiresDate); \
  NS_IMETHOD GetTokenName(PRUnichar * *aTokenName); \
  NS_IMETHOD GetIssuerOrganization(PRUnichar * *aIssuerOrganization); \
  NS_IMETHOD GetIssuer(nsIX509Cert * *aIssuer); \
  NS_IMETHOD GetValidity(nsIX509CertValidity * *aValidity); \
  NS_IMETHOD GetDbKey(char * *aDbKey); \
  NS_IMETHOD GetWindowTitle(char * *aWindowTitle); \
  NS_IMETHOD GetChain(nsISupportsArray **_retval); \
  NS_IMETHOD GetUsages(PRUint32 *verified, PRUint32 *count, PRUnichar ***usages); \
  NS_IMETHOD GetPurposes(PRUint32 *verified, PRUnichar **purposes); \
  NS_IMETHOD View(void); \
  NS_IMETHOD GetASN1Structure(nsIASN1Object * *aASN1Structure); \
  NS_IMETHOD GetRawDER(char * *result, PRUint32 *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIX509CERT(_to) \
  NS_IMETHOD GetNickname(PRUnichar * *aNickname) { return _to ## GetNickname(aNickname); } \
  NS_IMETHOD GetEmailAddress(PRUnichar * *aEmailAddress) { return _to ## GetEmailAddress(aEmailAddress); } \
  NS_IMETHOD GetCommonName(PRUnichar * *aCommonName) { return _to ## GetCommonName(aCommonName); } \
  NS_IMETHOD GetOrganization(PRUnichar * *aOrganization) { return _to ## GetOrganization(aOrganization); } \
  NS_IMETHOD GetOrganizationalUnit(PRUnichar * *aOrganizationalUnit) { return _to ## GetOrganizationalUnit(aOrganizationalUnit); } \
  NS_IMETHOD GetSubjectName(PRUnichar * *aSubjectName) { return _to ## GetSubjectName(aSubjectName); } \
  NS_IMETHOD GetIssuerName(PRUnichar * *aIssuerName) { return _to ## GetIssuerName(aIssuerName); } \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) { return _to ## GetSerialNumber(aSerialNumber); } \
  NS_IMETHOD GetRsaPubModulus(PRUnichar * *aRsaPubModulus) { return _to ## GetRsaPubModulus(aRsaPubModulus); } \
  NS_IMETHOD GetSha1Fingerprint(PRUnichar * *aSha1Fingerprint) { return _to ## GetSha1Fingerprint(aSha1Fingerprint); } \
  NS_IMETHOD GetMd5Fingerprint(PRUnichar * *aMd5Fingerprint) { return _to ## GetMd5Fingerprint(aMd5Fingerprint); } \
  NS_IMETHOD GetIssuedDate(PRUnichar * *aIssuedDate) { return _to ## GetIssuedDate(aIssuedDate); } \
  NS_IMETHOD GetExpiresDate(PRUnichar * *aExpiresDate) { return _to ## GetExpiresDate(aExpiresDate); } \
  NS_IMETHOD GetTokenName(PRUnichar * *aTokenName) { return _to ## GetTokenName(aTokenName); } \
  NS_IMETHOD GetIssuerOrganization(PRUnichar * *aIssuerOrganization) { return _to ## GetIssuerOrganization(aIssuerOrganization); } \
  NS_IMETHOD GetIssuer(nsIX509Cert * *aIssuer) { return _to ## GetIssuer(aIssuer); } \
  NS_IMETHOD GetValidity(nsIX509CertValidity * *aValidity) { return _to ## GetValidity(aValidity); } \
  NS_IMETHOD GetDbKey(char * *aDbKey) { return _to ## GetDbKey(aDbKey); } \
  NS_IMETHOD GetWindowTitle(char * *aWindowTitle) { return _to ## GetWindowTitle(aWindowTitle); } \
  NS_IMETHOD GetChain(nsISupportsArray **_retval) { return _to ## GetChain(_retval); } \
  NS_IMETHOD GetUsages(PRUint32 *verified, PRUint32 *count, PRUnichar ***usages) { return _to ## GetUsages(verified, count, usages); } \
  NS_IMETHOD GetPurposes(PRUint32 *verified, PRUnichar **purposes) { return _to ## GetPurposes(verified, purposes); } \
  NS_IMETHOD View(void) { return _to ## View(); } \
  NS_IMETHOD GetASN1Structure(nsIASN1Object * *aASN1Structure) { return _to ## GetASN1Structure(aASN1Structure); } \
  NS_IMETHOD GetRawDER(char * *result, PRUint32 *_retval) { return _to ## GetRawDER(result, _retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIX509CERT(_to) \
  NS_IMETHOD GetNickname(PRUnichar * *aNickname) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetNickname(aNickname); } \
  NS_IMETHOD GetEmailAddress(PRUnichar * *aEmailAddress) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetEmailAddress(aEmailAddress); } \
  NS_IMETHOD GetCommonName(PRUnichar * *aCommonName) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetCommonName(aCommonName); } \
  NS_IMETHOD GetOrganization(PRUnichar * *aOrganization) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetOrganization(aOrganization); } \
  NS_IMETHOD GetOrganizationalUnit(PRUnichar * *aOrganizationalUnit) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetOrganizationalUnit(aOrganizationalUnit); } \
  NS_IMETHOD GetSubjectName(PRUnichar * *aSubjectName) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetSubjectName(aSubjectName); } \
  NS_IMETHOD GetIssuerName(PRUnichar * *aIssuerName) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetIssuerName(aIssuerName); } \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetSerialNumber(aSerialNumber); } \
  NS_IMETHOD GetRsaPubModulus(PRUnichar * *aRsaPubModulus) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetRsaPubModulus(aRsaPubModulus); } \
  NS_IMETHOD GetSha1Fingerprint(PRUnichar * *aSha1Fingerprint) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetSha1Fingerprint(aSha1Fingerprint); } \
  NS_IMETHOD GetMd5Fingerprint(PRUnichar * *aMd5Fingerprint) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetMd5Fingerprint(aMd5Fingerprint); } \
  NS_IMETHOD GetIssuedDate(PRUnichar * *aIssuedDate) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetIssuedDate(aIssuedDate); } \
  NS_IMETHOD GetExpiresDate(PRUnichar * *aExpiresDate) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetExpiresDate(aExpiresDate); } \
  NS_IMETHOD GetTokenName(PRUnichar * *aTokenName) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetTokenName(aTokenName); } \
  NS_IMETHOD GetIssuerOrganization(PRUnichar * *aIssuerOrganization) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetIssuerOrganization(aIssuerOrganization); } \
  NS_IMETHOD GetIssuer(nsIX509Cert * *aIssuer) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetIssuer(aIssuer); } \
  NS_IMETHOD GetValidity(nsIX509CertValidity * *aValidity) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetValidity(aValidity); } \
  NS_IMETHOD GetDbKey(char * *aDbKey) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetDbKey(aDbKey); } \
  NS_IMETHOD GetWindowTitle(char * *aWindowTitle) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetWindowTitle(aWindowTitle); } \
  NS_IMETHOD GetChain(nsISupportsArray **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetChain(_retval); } \
  NS_IMETHOD GetUsages(PRUint32 *verified, PRUint32 *count, PRUnichar ***usages) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetUsages(verified, count, usages); } \
  NS_IMETHOD GetPurposes(PRUint32 *verified, PRUnichar **purposes) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetPurposes(verified, purposes); } \
  NS_IMETHOD View(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> View(); } \
  NS_IMETHOD GetASN1Structure(nsIASN1Object * *aASN1Structure) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetASN1Structure(aASN1Structure); } \
  NS_IMETHOD GetRawDER(char * *result, PRUint32 *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetRawDER(result, _retval); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsX509Cert : public nsIX509Cert
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIX509CERT

  nsX509Cert();
  virtual ~nsX509Cert();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsX509Cert, nsIX509Cert)

nsX509Cert::nsX509Cert()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

nsX509Cert::~nsX509Cert()
{
  /* destructor code */
}

/* readonly attribute wstring nickname; */
NS_IMETHODIMP nsX509Cert::GetNickname(PRUnichar * *aNickname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring emailAddress; */
NS_IMETHODIMP nsX509Cert::GetEmailAddress(PRUnichar * *aEmailAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring commonName; */
NS_IMETHODIMP nsX509Cert::GetCommonName(PRUnichar * *aCommonName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring organization; */
NS_IMETHODIMP nsX509Cert::GetOrganization(PRUnichar * *aOrganization)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring organizationalUnit; */
NS_IMETHODIMP nsX509Cert::GetOrganizationalUnit(PRUnichar * *aOrganizationalUnit)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring subjectName; */
NS_IMETHODIMP nsX509Cert::GetSubjectName(PRUnichar * *aSubjectName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring issuerName; */
NS_IMETHODIMP nsX509Cert::GetIssuerName(PRUnichar * *aIssuerName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring serialNumber; */
NS_IMETHODIMP nsX509Cert::GetSerialNumber(PRUnichar * *aSerialNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring rsaPubModulus; */
NS_IMETHODIMP nsX509Cert::GetRsaPubModulus(PRUnichar * *aRsaPubModulus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring sha1Fingerprint; */
NS_IMETHODIMP nsX509Cert::GetSha1Fingerprint(PRUnichar * *aSha1Fingerprint)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring md5Fingerprint; */
NS_IMETHODIMP nsX509Cert::GetMd5Fingerprint(PRUnichar * *aMd5Fingerprint)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring issuedDate; */
NS_IMETHODIMP nsX509Cert::GetIssuedDate(PRUnichar * *aIssuedDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring expiresDate; */
NS_IMETHODIMP nsX509Cert::GetExpiresDate(PRUnichar * *aExpiresDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring tokenName; */
NS_IMETHODIMP nsX509Cert::GetTokenName(PRUnichar * *aTokenName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring issuerOrganization; */
NS_IMETHODIMP nsX509Cert::GetIssuerOrganization(PRUnichar * *aIssuerOrganization)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIX509Cert issuer; */
NS_IMETHODIMP nsX509Cert::GetIssuer(nsIX509Cert * *aIssuer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIX509CertValidity validity; */
NS_IMETHODIMP nsX509Cert::GetValidity(nsIX509CertValidity * *aValidity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string dbKey; */
NS_IMETHODIMP nsX509Cert::GetDbKey(char * *aDbKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string windowTitle; */
NS_IMETHODIMP nsX509Cert::GetWindowTitle(char * *aWindowTitle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISupportsArray getChain (); */
NS_IMETHODIMP nsX509Cert::GetChain(nsISupportsArray **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getUsages (out PRUint32 verified, out PRUint32 count, [array, size_is (count)] out wstring usages); */
NS_IMETHODIMP nsX509Cert::GetUsages(PRUint32 *verified, PRUint32 *count, PRUnichar ***usages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getPurposes (out PRUint32 verified, out wstring purposes); */
NS_IMETHODIMP nsX509Cert::GetPurposes(PRUint32 *verified, PRUnichar **purposes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void view (); */
NS_IMETHODIMP nsX509Cert::View()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIASN1Object ASN1Structure; */
NS_IMETHODIMP nsX509Cert::GetASN1Structure(nsIASN1Object * *aASN1Structure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] unsigned long getRawDER (out charPtr result); */
NS_IMETHODIMP nsX509Cert::GetRawDER(char * *result, PRUint32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define NS_X509CERT_CID { 0xf0980f60, 0xee3d, 0x11d4, \
                         { 0x99, 0x8b, 0x00, 0xb0, 0xd0, 0x23, 0x54, 0xa0 } }
#define NS_X509CERT_CONTRACTID "@mozilla.org/security/x509cert;1"

#endif /* __gen_nsIX509Cert_h__ */
