    FOREIGN MODULE java_security_spec;

    IMPORT
        java_lang,
        java_security_interfaces,
        java_math,
        java_security,
        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)
                          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)
                           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)
                          STATIC
                            PROCEDURE Init*(p0 : java_math.BigInteger;
                                            p1 : java_math.BigInteger;
                                            p2 : java_math.BigInteger;
                                            p3 : java_math.BigInteger) : DSAPublicKeySpec,CONSTRUCTOR;
                          END;

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

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

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

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

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

      RSAPrivateCrtKeySpec* = POINTER TO EXTENSIBLE RECORD (RSAPrivateKeySpec)
                              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)
                           STATIC
                             PROCEDURE Init*(p0 : java_math.BigInteger;
                                             p1 : java_math.BigInteger) : RSAPrivateKeySpec,CONSTRUCTOR;
                           END;

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

      X509EncodedKeySpec* = POINTER TO EXTENSIBLE RECORD (EncodedKeySpec)
                            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:EncodedKeySpec) getEncoded*() : POINTER TO ARRAY OF BYTE,NEW,EXTENSIBLE;

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

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

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

    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.