    FOREIGN MODULE java_security_cert;

    IMPORT
        java_lang,
        java_security,
        java_io,
        java_lang_reflect,
        java_util,
        java_math;

    TYPE

      Certificate* = POINTER TO ABSTRACT RECORD (java_lang.Object)
                     STATIC
                       PROCEDURE Init!(p0 : java_lang.String) : Certificate,CONSTRUCTOR;
                     END;

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

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

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

      CertificateFactory* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)
                            STATIC
                              PROCEDURE Init!(p0 : CertificateFactorySpi;
                                              p1 : java_security.Provider;
                                              p2 : java_lang.String) : CertificateFactory,CONSTRUCTOR;
                              PROCEDURE getInstance*(p0 : java_lang.String) : CertificateFactory;
                              PROCEDURE getInstance*(p0 : java_lang.String;
                                                     p1 : java_lang.String) : CertificateFactory;
                            END;

      CertificateFactorySpi* = POINTER TO ABSTRACT RECORD (java_lang.Object)
                               STATIC
                                 PROCEDURE Init*() : CertificateFactorySpi,CONSTRUCTOR;
                               END;

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

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

      CRL* = POINTER TO ABSTRACT RECORD (java_lang.Object)
             STATIC
               PROCEDURE Init!(p0 : java_lang.String) : CRL,CONSTRUCTOR;
             END;

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

      X509Certificate* = POINTER TO ABSTRACT RECORD (Certificate + X509Extension)
                         STATIC
                           PROCEDURE Init!() : X509Certificate,CONSTRUCTOR;
                         END;

      X509CRL* = POINTER TO ABSTRACT RECORD (CRL + X509Extension)
                 STATIC
                   PROCEDURE Init!() : X509CRL,CONSTRUCTOR;
                 END;

      X509CRLEntry* = POINTER TO ABSTRACT RECORD (java_lang.Object + X509Extension)
                      STATIC
                        PROCEDURE Init*() : X509CRLEntry,CONSTRUCTOR;
                      END;

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

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

    PROCEDURE (self:Certificate) getEncoded*() : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:Certificate) getPublicKey*() : java_security.PublicKey,NEW,ABSTRACT;

    PROCEDURE (self:Certificate) getType*() : java_lang.String,NEW;

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

    PROCEDURE (self:Certificate) toString*() : java_lang.String,ABSTRACT;

    PROCEDURE (self:Certificate) verify*(p0 : java_security.PublicKey),NEW,ABSTRACT;

    PROCEDURE (self:Certificate) verify*(p0 : java_security.PublicKey;
                                         p1 : java_lang.String),NEW,ABSTRACT;

    PROCEDURE (self:CertificateFactory) generateCRL*(p0 : java_io.InputStream) : CRL,NEW;

    PROCEDURE (self:CertificateFactory) generateCRLs*(p0 : java_io.InputStream) : java_util.Collection,NEW;

    PROCEDURE (self:CertificateFactory) generateCertificate*(p0 : java_io.InputStream) : Certificate,NEW;

    PROCEDURE (self:CertificateFactory) generateCertificates*(p0 : java_io.InputStream) : java_util.Collection,NEW;

    PROCEDURE (self:CertificateFactory) getProvider*() : java_security.Provider,NEW;

    PROCEDURE (self:CertificateFactory) getType*() : java_lang.String,NEW;

    PROCEDURE (self:CertificateFactorySpi) engineGenerateCRL*(p0 : java_io.InputStream) : CRL,NEW,ABSTRACT;

    PROCEDURE (self:CertificateFactorySpi) engineGenerateCRLs*(p0 : java_io.InputStream) : java_util.Collection,NEW,ABSTRACT;

    PROCEDURE (self:CertificateFactorySpi) engineGenerateCertificate*(p0 : java_io.InputStream) : Certificate,NEW,ABSTRACT;

    PROCEDURE (self:CertificateFactorySpi) engineGenerateCertificates*(p0 : java_io.InputStream) : java_util.Collection,NEW,ABSTRACT;

    PROCEDURE (self:CRL) getType*() : java_lang.String,NEW;

    PROCEDURE (self:CRL) isRevoked*(p0 : Certificate) : BOOLEAN,NEW,ABSTRACT;

    PROCEDURE (self:CRL) toString*() : java_lang.String,ABSTRACT;

    PROCEDURE (self:X509Certificate) checkValidity*(),NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) checkValidity*(p0 : java_util.Date),NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getBasicConstraints*() : INTEGER,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getCriticalExtensionOIDs*() : java_util.Set,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getExtensionValue*(p0 : java_lang.String) : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getIssuerDN*() : java_security.Principal,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getIssuerUniqueID*() : POINTER TO ARRAY OF BOOLEAN,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getKeyUsage*() : POINTER TO ARRAY OF BOOLEAN,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getNonCriticalExtensionOIDs*() : java_util.Set,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getNotAfter*() : java_util.Date,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getNotBefore*() : java_util.Date,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getSerialNumber*() : java_math.BigInteger,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getSigAlgName*() : java_lang.String,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getSigAlgOID*() : java_lang.String,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getSigAlgParams*() : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getSignature*() : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getSubjectDN*() : java_security.Principal,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getSubjectUniqueID*() : POINTER TO ARRAY OF BOOLEAN,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getTBSCertificate*() : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) getVersion*() : INTEGER,NEW,ABSTRACT;

    PROCEDURE (self:X509Certificate) hasUnsupportedCriticalExtension*() : BOOLEAN,NEW,ABSTRACT;

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

    PROCEDURE (self:X509CRL) getCriticalExtensionOIDs*() : java_util.Set,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getEncoded*() : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getExtensionValue*(p0 : java_lang.String) : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getIssuerDN*() : java_security.Principal,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getNextUpdate*() : java_util.Date,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getNonCriticalExtensionOIDs*() : java_util.Set,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getRevokedCertificate*(p0 : java_math.BigInteger) : X509CRLEntry,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getRevokedCertificates*() : java_util.Set,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getSigAlgName*() : java_lang.String,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getSigAlgOID*() : java_lang.String,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getSigAlgParams*() : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getSignature*() : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getTBSCertList*() : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getThisUpdate*() : java_util.Date,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) getVersion*() : INTEGER,NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) hasUnsupportedCriticalExtension*() : BOOLEAN,NEW,ABSTRACT;

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

    PROCEDURE (self:X509CRL) verify*(p0 : java_security.PublicKey),NEW,ABSTRACT;

    PROCEDURE (self:X509CRL) verify*(p0 : java_security.PublicKey;
                                     p1 : java_lang.String),NEW,ABSTRACT;

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

    PROCEDURE (self:X509CRLEntry) getCriticalExtensionOIDs*() : java_util.Set,NEW,ABSTRACT;

    PROCEDURE (self:X509CRLEntry) getEncoded*() : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:X509CRLEntry) getExtensionValue*(p0 : java_lang.String) : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:X509CRLEntry) getNonCriticalExtensionOIDs*() : java_util.Set,NEW,ABSTRACT;

    PROCEDURE (self:X509CRLEntry) getRevocationDate*() : java_util.Date,NEW,ABSTRACT;

    PROCEDURE (self:X509CRLEntry) getSerialNumber*() : java_math.BigInteger,NEW,ABSTRACT;

    PROCEDURE (self:X509CRLEntry) hasExtensions*() : BOOLEAN,NEW,ABSTRACT;

    PROCEDURE (self:X509CRLEntry) hasUnsupportedCriticalExtension*() : BOOLEAN,NEW,ABSTRACT;

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

    PROCEDURE (self:X509CRLEntry) toString*() : java_lang.String,ABSTRACT;

    PROCEDURE (self:X509Extension) getCriticalExtensionOIDs*() : java_util.Set,NEW,ABSTRACT;

    PROCEDURE (self:X509Extension) getExtensionValue*(p0 : java_lang.String) : POINTER TO ARRAY OF BYTE,NEW,ABSTRACT;

    PROCEDURE (self:X509Extension) getNonCriticalExtensionOIDs*() : java_util.Set,NEW,ABSTRACT;

    PROCEDURE (self:X509Extension) hasUnsupportedCriticalExtension*() : BOOLEAN,NEW,ABSTRACT;

    END java_security_cert.