//   NOTE: this is a machine generated file--editing not recommended
//
// pkcs1oids.h - class definitions for ASN.1 module PKCS1-OIDS
//
//   This file was generated by snacc on Mon Apr 22 22:34:19 2002
//   UBC snacc by Mike Sample
//   A couple of enhancements made by IBM European Networking Center

#ifndef _pkcs1oids_h_
#define _pkcs1oids_h_


//------------------------------------------------------------------------------
// class declarations:

class RSAPublicKey;
class RSAPrivateKey;

//------------------------------------------------------------------------------
// class definitions:

class RSAPublicKey: public AsnType
{
public:
  BigIntegerStr		modulus;
  BigIntegerStr		publicExponent;

			RSAPublicKey();
			RSAPublicKey (const RSAPublicKey &);
  virtual		~RSAPublicKey();
  virtual AsnType	*Clone() const;

  virtual AsnType	*Copy() const;

  RSAPublicKey		&operator = (const RSAPublicKey &);
  AsnLen		BEncContent (BUF_TYPE b);
  void			BDecContent (BUF_TYPE b, AsnTag tag, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env);

  AsnLen		BEnc (BUF_TYPE b);
  void			BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
  void		Print (ostream &os) const;
};


class RSAPrivateKey: public AsnType
{
public:
  AsnInt		version;
  BigIntegerStr		modulus;
  BigIntegerStr		publicExponent;
  BigIntegerStr		privateExponent;
  BigIntegerStr		prime1;
  BigIntegerStr		prime2;
  BigIntegerStr		exponent1;
  BigIntegerStr		exponent2;
  BigIntegerStr		coefficient;

			RSAPrivateKey();
			RSAPrivateKey (const RSAPrivateKey &);
  virtual		~RSAPrivateKey();
  virtual AsnType	*Clone() const;

  virtual AsnType	*Copy() const;

  RSAPrivateKey		&operator = (const RSAPrivateKey &);
  AsnLen		BEncContent (BUF_TYPE b);
  void			BDecContent (BUF_TYPE b, AsnTag tag, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env);

  AsnLen		BEnc (BUF_TYPE b);
  void			BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
  void		Print (ostream &os) const;
};


//------------------------------------------------------------------------------
// externs for value defs

#define rsadsi_arc 1, 2, 840, 113549
#define rsadsi     AsnOid(rsadsi_arc)
#define pkcs_arc 1, 2, 840, 113549, 1
#define pkcs     AsnOid(pkcs_arc)
#define pkcs_1_arc 1, 2, 840, 113549, 1, 1
#define pkcs_1     AsnOid(pkcs_1_arc)
#define rsaEncryption_arc 1, 2, 840, 113549, 1, 1, 1
#define rsaEncryption     AsnOid(rsaEncryption_arc)
#define md2WithRSAEncryption_arc 1, 2, 840, 113549, 1, 1, 2
#define md2WithRSAEncryption     AsnOid(md2WithRSAEncryption_arc)
#define md4WithRSAEncryption_arc 1, 2, 840, 113549, 1, 1, 3
#define md4WithRSAEncryption     AsnOid(md4WithRSAEncryption_arc)
#define md5WithRSAEncryption_arc 1, 2, 840, 113549, 1, 1, 4
#define md5WithRSAEncryption     AsnOid(md5WithRSAEncryption_arc)
#define sha1withRSAEncryption_arc 1, 2, 840, 113549, 1, 1, 5
#define sha1withRSAEncryption     AsnOid(sha1withRSAEncryption_arc)
#define rsaDigestAlgorithm_arc 1, 2, 840, 113549, 2
#define rsaDigestAlgorithm     AsnOid(rsaDigestAlgorithm_arc)
#define md2_arc 1, 2, 840, 113549, 2, 2
#define md2     AsnOid(md2_arc)
#define md4_arc 1, 2, 840, 113549, 2, 4
#define md4     AsnOid(md4_arc)
#define md5_arc 1, 2, 840, 113549, 2, 5
#define md5     AsnOid(md5_arc)
//------------------------------------------------------------------------------

#endif /* conditional include of pkcs1oids.h */
