FOREIGN MODULE java_security_spec;

IMPORT
    java_lang := "java.lang",
    java_security_interfaces := "java.security.interfaces",
    java_math := "java.math",
    java_security := "java.security",
    java_io := "java.io";

TYPE

  AlgorithmParameterSpec* = POINTER TO INTERFACE RECORD (java_lang.Object)
                            END;

  DSAParameterSpec* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + AlgorithmParameterSpec + java_security_interfaces.DSAParams)    (* Typebound Procedures *)
                      STATIC
                        PROCEDURE Init*(p0 : java_math.BigInteger;
                                        p1 : java_math.BigInteger;
                                        p2 : java_math.BigInteger) : DSAParameterSpec,CONSTRUCTOR;
                      END;

  DSAPrivateKeySpec* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + KeySpec)    (* Typebound Procedures *)
                       STATIC
                         PROCEDURE Init*(p0 : java_math.BigInteger;
                                         p1 : java_math.BigInteger;
                                         p2 : java_math.BigInteger;
                                         p3 : java_math.BigInteger) : DSAPrivateKeySpec,CONSTRUCTOR;
                       END;

  DSAPublicKeySpec* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + KeySpec)    (* Typebound Procedures *)
                      STATIC
                        PROCEDURE Init*(p0 : java_math.BigInteger;
                                        p1 : java_math.BigInteger;
                                        p2 : java_math.BigInteger;
                                        p3 : java_math.BigInteger) : DSAPublicKeySpec,CONSTRUCTOR;
                      END;

  ECField* = POINTER TO INTERFACE RECORD (java_lang.Object)    (* Typebound Procedures *)
             END;

  ECFieldF2m* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + ECField)    (* Typebound Procedures *)
                STATIC
                  PROCEDURE Init*(    p0 : INTEGER;
                                  IN  p1 : ARRAY OF INTEGER) : ECFieldF2m,CONSTRUCTOR;
                  PROCEDURE Init*(p0 : INTEGER;
                                  p1 : java_math.BigInteger) : ECFieldF2m,CONSTRUCTOR;
                  PROCEDURE Init*(p0 : INTEGER) : ECFieldF2m,CONSTRUCTOR;
                END;

  ECFieldFp* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + ECField)    (* Typebound Procedures *)
               STATIC
                 PROCEDURE Init*(p0 : java_math.BigInteger) : ECFieldFp,CONSTRUCTOR;
               END;

  ECGenParameterSpec* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + AlgorithmParameterSpec)    (* Typebound Procedures *)
                        STATIC
                          PROCEDURE Init*(p0 : java_lang.String) : ECGenParameterSpec,CONSTRUCTOR;
                        END;

  ECParameterSpec* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + AlgorithmParameterSpec)    (* Typebound Procedures *)
                     STATIC
                       PROCEDURE Init*(p0 : EllipticCurve;
                                       p1 : ECPoint;
                                       p2 : java_math.BigInteger;
                                       p3 : INTEGER) : ECParameterSpec,CONSTRUCTOR;
                     END;

  ECPoint* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)    (* Typebound Procedures *)
             STATIC
               POINT_INFINITY* : ECPoint;
               PROCEDURE Init*(p0 : java_math.BigInteger;
                               p1 : java_math.BigInteger) : ECPoint,CONSTRUCTOR;
             END;

  ECPrivateKeySpec* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + KeySpec)    (* Typebound Procedures *)
                      STATIC
                        PROCEDURE Init*(p0 : java_math.BigInteger;
                                        p1 : ECParameterSpec) : ECPrivateKeySpec,CONSTRUCTOR;
                      END;

  ECPublicKeySpec* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + KeySpec)    (* Typebound Procedures *)
                     STATIC
                       PROCEDURE Init*(p0 : ECPoint;
                                       p1 : ECParameterSpec) : ECPublicKeySpec,CONSTRUCTOR;
                     END;

  EllipticCurve* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)    (* Typebound Procedures *)
                   STATIC
                     PROCEDURE Init*(    p0 : ECField;
                                         p1 : java_math.BigInteger;
                                         p2 : java_math.BigInteger;
                                     IN  p3 : ARRAY OF BYTE) : EllipticCurve,CONSTRUCTOR;
                     PROCEDURE Init*(p0 : ECField;
                                     p1 : java_math.BigInteger;
                                     p2 : java_math.BigInteger) : EllipticCurve,CONSTRUCTOR;
                   END;

  EncodedKeySpec* = POINTER TO ABSTRACT RECORD (java_lang.Object + KeySpec)    (* Typebound Procedures *)
                    STATIC
                      PROCEDURE Init*(IN  p0 : ARRAY OF BYTE) : EncodedKeySpec,CONSTRUCTOR;
                    END;

  InvalidKeySpecException* = POINTER TO EXTENSIBLE RECORD (java_security.GeneralSecurityException)
                             STATIC
                               PROCEDURE Init*(p0 : java_lang.String;
                                               p1 : java_lang.Throwable) : InvalidKeySpecException,CONSTRUCTOR;
                               PROCEDURE Init*(p0 : java_lang.Throwable) : InvalidKeySpecException,CONSTRUCTOR;
                               PROCEDURE Init*() : InvalidKeySpecException,CONSTRUCTOR;
                               PROCEDURE Init*(p0 : java_lang.String) : InvalidKeySpecException,CONSTRUCTOR;
                             END;

  InvalidParameterSpecException* = POINTER TO EXTENSIBLE RECORD (java_security.GeneralSecurityException)
                                   STATIC
                                     PROCEDURE Init*(p0 : java_lang.String) : InvalidParameterSpecException,CONSTRUCTOR;
                                     PROCEDURE Init*() : InvalidParameterSpecException,CONSTRUCTOR;
                                   END;

  KeySpec* = POINTER TO INTERFACE RECORD (java_lang.Object)
             END;

  MGF1ParameterSpec* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + AlgorithmParameterSpec)    (* Typebound Procedures *)
                       STATIC
                         SHA1*   : MGF1ParameterSpec;
                         SHA256* : MGF1ParameterSpec;
                         SHA384* : MGF1ParameterSpec;
                         SHA512* : MGF1ParameterSpec;
                         PROCEDURE Init*(p0 : java_lang.String) : MGF1ParameterSpec,CONSTRUCTOR;
                       END;

  PKCS8EncodedKeySpec* = POINTER TO EXTENSIBLE RECORD (EncodedKeySpec)    (* Typebound Procedures *)
                         STATIC
                           PROCEDURE Init*(IN  p0 : ARRAY OF BYTE) : PKCS8EncodedKeySpec,CONSTRUCTOR;
                         END;

  PSSParameterSpec* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + AlgorithmParameterSpec)    (* Typebound Procedures *)
                      STATIC
                        DEFAULT* : PSSParameterSpec;
                        PROCEDURE Init*(p0 : INTEGER) : PSSParameterSpec,CONSTRUCTOR;
                        PROCEDURE Init*(p0 : java_lang.String;
                                        p1 : java_lang.String;
                                        p2 : AlgorithmParameterSpec;
                                        p3 : INTEGER;
                                        p4 : INTEGER) : PSSParameterSpec,CONSTRUCTOR;
                      END;

  RSAKeyGenParameterSpec* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + AlgorithmParameterSpec)    (* Typebound Procedures *)
                            STATIC
                              F0*   : java_math.BigInteger;
                              F4*   : java_math.BigInteger;
                              PROCEDURE Init*(p0 : INTEGER;
                                              p1 : java_math.BigInteger) : RSAKeyGenParameterSpec,CONSTRUCTOR;
                            END;

  RSAMultiPrimePrivateCrtKeySpec* = POINTER TO EXTENSIBLE RECORD (RSAPrivateKeySpec)    (* Typebound Procedures *)
                                    STATIC
                                      PROCEDURE Init*(    p0 : java_math.BigInteger;
                                                          p1 : java_math.BigInteger;
                                                          p2 : java_math.BigInteger;
                                                          p3 : java_math.BigInteger;
                                                          p4 : java_math.BigInteger;
                                                          p5 : java_math.BigInteger;
                                                          p6 : java_math.BigInteger;
                                                          p7 : java_math.BigInteger;
                                                      IN  p8 : ARRAY OF RSAOtherPrimeInfo) : RSAMultiPrimePrivateCrtKeySpec,CONSTRUCTOR;
                                    END;

  RSAOtherPrimeInfo* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)    (* Typebound Procedures *)
                       STATIC
                         PROCEDURE Init*(p0 : java_math.BigInteger;
                                         p1 : java_math.BigInteger;
                                         p2 : java_math.BigInteger) : RSAOtherPrimeInfo,CONSTRUCTOR;
                       END;

  RSAPrivateCrtKeySpec* = POINTER TO EXTENSIBLE RECORD (RSAPrivateKeySpec)    (* Typebound Procedures *)
                          STATIC
                            PROCEDURE Init*(p0 : java_math.BigInteger;
                                            p1 : java_math.BigInteger;
                                            p2 : java_math.BigInteger;
                                            p3 : java_math.BigInteger;
                                            p4 : java_math.BigInteger;
                                            p5 : java_math.BigInteger;
                                            p6 : java_math.BigInteger;
                                            p7 : java_math.BigInteger) : RSAPrivateCrtKeySpec,CONSTRUCTOR;
                          END;

  RSAPrivateKeySpec* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + KeySpec)    (* Typebound Procedures *)
                       STATIC
                         PROCEDURE Init*(p0 : java_math.BigInteger;
                                         p1 : java_math.BigInteger) : RSAPrivateKeySpec,CONSTRUCTOR;
                       END;

  RSAPublicKeySpec* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + KeySpec)    (* Typebound Procedures *)
                      STATIC
                        PROCEDURE Init*(p0 : java_math.BigInteger;
                                        p1 : java_math.BigInteger) : RSAPublicKeySpec,CONSTRUCTOR;
                      END;

  X509EncodedKeySpec* = POINTER TO EXTENSIBLE RECORD (EncodedKeySpec)    (* Typebound Procedures *)
                        STATIC
                          PROCEDURE Init*(IN  p0 : ARRAY OF BYTE) : X509EncodedKeySpec,CONSTRUCTOR;
                        END;




PROCEDURE (self:DSAParameterSpec) getG*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:DSAParameterSpec) getP*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:DSAParameterSpec) getQ*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:DSAPrivateKeySpec) getG*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:DSAPrivateKeySpec) getP*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:DSAPrivateKeySpec) getQ*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:DSAPrivateKeySpec) getX*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:DSAPublicKeySpec) getG*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:DSAPublicKeySpec) getP*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:DSAPublicKeySpec) getQ*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:DSAPublicKeySpec) getY*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:ECField) getFieldSize*() : INTEGER,NEW,ABSTRACT;

PROCEDURE (self:ECFieldF2m) equals*(p0 : java_lang.Object) : BOOLEAN,EXTENSIBLE;

PROCEDURE (self:ECFieldF2m) getFieldSize*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:ECFieldF2m) getM*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:ECFieldF2m) getMidTermsOfReductionPolynomial*() : POINTER TO ARRAY OF INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:ECFieldF2m) getReductionPolynomial*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:ECFieldF2m) hashCode*() : INTEGER,EXTENSIBLE;

PROCEDURE (self:ECFieldFp) equals*(p0 : java_lang.Object) : BOOLEAN,EXTENSIBLE;

PROCEDURE (self:ECFieldFp) getFieldSize*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:ECFieldFp) getP*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:ECFieldFp) hashCode*() : INTEGER,EXTENSIBLE;

PROCEDURE (self:ECGenParameterSpec) getName*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:ECParameterSpec) getCofactor*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:ECParameterSpec) getCurve*() : EllipticCurve,NEW,EXTENSIBLE;

PROCEDURE (self:ECParameterSpec) getGenerator*() : ECPoint,NEW,EXTENSIBLE;

PROCEDURE (self:ECParameterSpec) getOrder*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:ECPoint) equals*(p0 : java_lang.Object) : BOOLEAN,EXTENSIBLE;

PROCEDURE (self:ECPoint) getAffineX*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:ECPoint) getAffineY*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:ECPoint) hashCode*() : INTEGER,EXTENSIBLE;

PROCEDURE (self:ECPrivateKeySpec) getParams*() : ECParameterSpec,NEW,EXTENSIBLE;

PROCEDURE (self:ECPrivateKeySpec) getS*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:ECPublicKeySpec) getParams*() : ECParameterSpec,NEW,EXTENSIBLE;

PROCEDURE (self:ECPublicKeySpec) getW*() : ECPoint,NEW,EXTENSIBLE;

PROCEDURE (self:EllipticCurve) equals*(p0 : java_lang.Object) : BOOLEAN,EXTENSIBLE;

PROCEDURE (self:EllipticCurve) getA*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:EllipticCurve) getB*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:EllipticCurve) getField*() : ECField,NEW,EXTENSIBLE;

PROCEDURE (self:EllipticCurve) getSeed*() : POINTER TO ARRAY OF BYTE,NEW,EXTENSIBLE;

PROCEDURE (self:EllipticCurve) hashCode*() : INTEGER,EXTENSIBLE;

PROCEDURE (self:EncodedKeySpec) getEncoded*() : POINTER TO ARRAY OF BYTE,NEW,EXTENSIBLE;

PROCEDURE (self:EncodedKeySpec) getFormat*() : java_lang.String,NEW,ABSTRACT;

PROCEDURE (self:MGF1ParameterSpec) getDigestAlgorithm*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:PKCS8EncodedKeySpec) getEncoded*() : POINTER TO ARRAY OF BYTE,EXTENSIBLE;

PROCEDURE (self:PKCS8EncodedKeySpec) getFormat*() : java_lang.String;

PROCEDURE (self:PSSParameterSpec) getDigestAlgorithm*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:PSSParameterSpec) getMGFAlgorithm*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:PSSParameterSpec) getMGFParameters*() : AlgorithmParameterSpec,NEW,EXTENSIBLE;

PROCEDURE (self:PSSParameterSpec) getSaltLength*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:PSSParameterSpec) getTrailerField*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:RSAKeyGenParameterSpec) getKeysize*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:RSAKeyGenParameterSpec) getPublicExponent*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAMultiPrimePrivateCrtKeySpec) getCrtCoefficient*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAMultiPrimePrivateCrtKeySpec) getOtherPrimeInfo*() : POINTER TO ARRAY OF RSAOtherPrimeInfo,NEW,EXTENSIBLE;

PROCEDURE (self:RSAMultiPrimePrivateCrtKeySpec) getPrimeExponentP*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAMultiPrimePrivateCrtKeySpec) getPrimeExponentQ*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAMultiPrimePrivateCrtKeySpec) getPrimeP*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAMultiPrimePrivateCrtKeySpec) getPrimeQ*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAMultiPrimePrivateCrtKeySpec) getPublicExponent*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAOtherPrimeInfo) getCrtCoefficient*() : java_math.BigInteger,NEW;

PROCEDURE (self:RSAOtherPrimeInfo) getExponent*() : java_math.BigInteger,NEW;

PROCEDURE (self:RSAOtherPrimeInfo) getPrime*() : java_math.BigInteger,NEW;

PROCEDURE (self:RSAPrivateCrtKeySpec) getCrtCoefficient*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAPrivateCrtKeySpec) getPrimeExponentP*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAPrivateCrtKeySpec) getPrimeExponentQ*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAPrivateCrtKeySpec) getPrimeP*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAPrivateCrtKeySpec) getPrimeQ*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAPrivateCrtKeySpec) getPublicExponent*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAPrivateKeySpec) getModulus*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAPrivateKeySpec) getPrivateExponent*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAPublicKeySpec) getModulus*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:RSAPublicKeySpec) getPublicExponent*() : java_math.BigInteger,NEW,EXTENSIBLE;

PROCEDURE (self:X509EncodedKeySpec) getEncoded*() : POINTER TO ARRAY OF BYTE,EXTENSIBLE;

PROCEDURE (self:X509EncodedKeySpec) getFormat*() : java_lang.String;

END java_security_spec.