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

#ifndef __gnu_java_security_der_DER__
#define __gnu_java_security_der_DER__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace der
        {
            class DER;
        }
      }
    }
  }
}

class gnu::java::security::der::DER : public ::java::lang::Object
{

public:
  static const jint UNIVERSAL = 0;
  static const jint APPLICATION = 64;
  static const jint CONTEXT = 128;
  static const jint PRIVATE = 192;
  static const jint CONSTRUCTED = 32;
  static const jint ANY = 0;
  static const jint BOOLEAN = 1;
  static const jint INTEGER = 2;
  static const jint BIT_STRING = 3;
  static const jint OCTET_STRING = 4;
  static const jint NULL = 5;
  static const jint OBJECT_IDENTIFIER = 6;
  static const jint REAL = 9;
  static const jint ENUMERATED = 10;
  static const jint RELATIVE_OID = 13;
  static const jint SEQUENCE = 16;
  static const jint SET = 17;
  static ::java::lang::Object * CONSTRUCTED_VALUE;
  static const jint NUMERIC_STRING = 18;
  static const jint PRINTABLE_STRING = 19;
  static const jint T61_STRING = 20;
  static const jint VIDEOTEX_STRING = 21;
  static const jint IA5_STRING = 22;
  static const jint GRAPHIC_STRING = 25;
  static const jint ISO646_STRING = 26;
  static const jint GENERAL_STRING = 27;
  static const jint UTF8_STRING = 12;
  static const jint UNIVERSAL_STRING = 28;
  static const jint BMP_STRING = 30;
  static const jint UTC_TIME = 23;
  static const jint GENERALIZED_TIME = 24;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __gnu_java_security_der_DER__
