
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_java_security_x509_ext_AuthorityKeyIdentifier__
#define __gnu_java_security_x509_ext_AuthorityKeyIdentifier__

#pragma interface

#include <gnu/java/security/x509/ext/Extension$Value.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
          class OID;
        namespace x509
        {
          namespace ext
          {
              class AuthorityKeyIdentifier;
              class GeneralNames;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace math
    {
        class BigInteger;
    }
  }
}

class gnu::java::security::x509::ext::AuthorityKeyIdentifier : public ::gnu::java::security::x509::ext::Extension$Value
{

public:
  AuthorityKeyIdentifier(JArray< jbyte > *);
  virtual JArray< jbyte > * getKeyIdentifier();
  virtual ::gnu::java::security::x509::ext::GeneralNames * getAuthorityCertIssuer();
  virtual ::java::math::BigInteger * getAuthorityCertSerialNumber();
  virtual ::java::lang::String * toString();
  static ::gnu::java::security::OID * ID;
private:
  JArray< jbyte > * __attribute__((aligned(__alignof__( ::gnu::java::security::x509::ext::Extension$Value)))) keyIdentifier;
  ::gnu::java::security::x509::ext::GeneralNames * authorityCertIssuer;
  ::java::math::BigInteger * authorityCertSerialNumber;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_x509_ext_AuthorityKeyIdentifier__
