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

#ifndef __gnu_java_security_x509_Util__
#define __gnu_java_security_x509_Util__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace x509
        {
            class Util;
        }
      }
    }
  }
}

class gnu::java::security::x509::Util : public ::java::lang::Object
{

public:
  Util();
  static ::java::lang::String * toHexString(JArray< jbyte > *, jint, jint);
  static ::java::lang::String * toHexString(JArray< jbyte > *);
  static ::java::lang::String * toHexString(JArray< jbyte > *, jint, jint, jchar);
  static ::java::lang::String * toHexString(JArray< jbyte > *, jchar);
  static ::java::lang::String * hexDump(JArray< jbyte > *, jint, jint, ::java::lang::String *);
  static ::java::lang::String * hexDump(JArray< jbyte > *, ::java::lang::String *);
  static ::java::lang::String * formatInt(jint, jint, jint);
  static JArray< jbyte > * toByteArray(::java::lang::String *);
  static ::java::lang::String * HEX;
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_x509_Util__
