FOREIGN MODULE sun_security_jca;

IMPORT
    java_lang := "java.lang",
    java_security := "java.security",
    java_util := "java.util",
    sun_security_util := "sun.security.util",
    java_io := "java.io";

TYPE

  GetInstance* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)
                 STATIC
                   PROCEDURE checkSuperClass*(p0 : java_security.Provider$Service;
                                              p1 : java_lang.Class;
                                              p2 : java_lang.Class);
                   PROCEDURE getInstance*(p0 : java_lang.String;
                                          p1 : java_lang.Class;
                                          p2 : java_lang.String;
                                          p3 : java_security.Provider) : GetInstance$Instance;
                   PROCEDURE getInstance*(p0 : java_lang.String;
                                          p1 : java_lang.Class;
                                          p2 : java_lang.String;
                                          p3 : java_lang.Object;
                                          p4 : java_lang.String) : GetInstance$Instance;
                   PROCEDURE getInstance*(p0 : java_lang.String;
                                          p1 : java_lang.Class;
                                          p2 : java_lang.String;
                                          p3 : java_lang.String) : GetInstance$Instance;
                   PROCEDURE getInstance*(p0 : java_security.Provider$Service;
                                          p1 : java_lang.Class;
                                          p2 : java_lang.Object) : GetInstance$Instance;
                   PROCEDURE getInstance*(p0 : java_security.Provider$Service;
                                          p1 : java_lang.Class) : GetInstance$Instance;
                   PROCEDURE getInstance*(p0 : java_lang.String;
                                          p1 : java_lang.Class;
                                          p2 : java_lang.String;
                                          p3 : java_lang.Object;
                                          p4 : java_security.Provider) : GetInstance$Instance;
                   PROCEDURE getInstance*(p0 : java_lang.String;
                                          p1 : java_lang.Class;
                                          p2 : java_lang.String;
                                          p3 : java_lang.Object) : GetInstance$Instance;
                   PROCEDURE getInstance*(p0 : java_lang.String;
                                          p1 : java_lang.Class;
                                          p2 : java_lang.String) : GetInstance$Instance;
                   PROCEDURE getService*(p0 : java_lang.String;
                                         p1 : java_lang.String;
                                         p2 : java_security.Provider) : java_security.Provider$Service;
                   PROCEDURE getService*(p0 : java_lang.String;
                                         p1 : java_lang.String;
                                         p2 : java_lang.String) : java_security.Provider$Service;
                   PROCEDURE getService*(p0 : java_lang.String;
                                         p1 : java_lang.String) : java_security.Provider$Service;
                   PROCEDURE getServices*(p0 : java_util.List) : java_util.List;
                   PROCEDURE getServices*(p0 : java_lang.String;
                                          p1 : java_util.List) : java_util.List;
                   PROCEDURE getServices*(p0 : java_lang.String;
                                          p1 : java_lang.String) : java_util.List;
                 END;

  GetInstance$Instance* = POINTER TO RECORD (java_lang.Object)    (* Typebound Procedures *)
                            provider* : java_security.Provider;
                            impl*     : java_lang.Object;
                          END;

  JCAUtil* = POINTER TO RECORD (java_lang.Object)
             STATIC
               PROCEDURE getSecureRandom*() : java_security.SecureRandom;
               PROCEDURE getTempArraySize*(p0 : INTEGER) : INTEGER;
             END;

  ProviderList* = POINTER TO RECORD (java_lang.Object)    (* Typebound Procedures *)
                  STATIC
                    PROCEDURE add*(p0 : ProviderList;
                                   p1 : java_security.Provider) : ProviderList;
                    PROCEDURE insertAt*(p0 : ProviderList;
                                        p1 : java_security.Provider;
                                        p2 : INTEGER) : ProviderList;
                    PROCEDURE newList*(IN  p0 : ARRAY OF java_security.Provider) : ProviderList;
                    PROCEDURE remove*(p0 : ProviderList;
                                      p1 : java_lang.String) : ProviderList;
                  END;

  Providers* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)
               STATIC
                 PROCEDURE beginThreadProviderList*(p0 : ProviderList) : ProviderList;
                 PROCEDURE endThreadProviderList*(p0 : ProviderList);
                 PROCEDURE getFullProviderList*() : ProviderList;
                 PROCEDURE getProviderList*() : ProviderList;
                 PROCEDURE getThreadProviderList*() : ProviderList;
                 PROCEDURE setProviderList*(p0 : ProviderList);
                 PROCEDURE startJarVerification*() : java_lang.Object;
                 PROCEDURE stopJarVerification*(p0 : java_lang.Object);
               END;

  ServiceId* = POINTER TO RECORD (java_lang.Object)
                 type*      : java_lang.String;
                 algorithm* : java_lang.String;
               STATIC
                 PROCEDURE Init*(p0 : java_lang.String;
                                 p1 : java_lang.String) : ServiceId,CONSTRUCTOR;
               END;




PROCEDURE (self:GetInstance$Instance) toArray*() : POINTER TO ARRAY OF java_lang.Object,NEW,EXTENSIBLE;

PROCEDURE (self:ProviderList) getIndex*(p0 : java_lang.String) : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:ProviderList) getProvider*(p0 : java_lang.String) : java_security.Provider,NEW,EXTENSIBLE;

PROCEDURE (self:ProviderList) getService*(p0 : java_lang.String;
                                          p1 : java_lang.String) : java_security.Provider$Service,NEW,EXTENSIBLE;

PROCEDURE (self:ProviderList) getServices*(p0 : java_lang.String;
                                           p1 : java_util.List) : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:ProviderList) getServices*(p0 : java_lang.String;
                                           p1 : java_lang.String) : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:ProviderList) getServices*(p0 : java_util.List) : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:ProviderList) providers*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:ProviderList) size*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:ProviderList) toArray*() : POINTER TO ARRAY OF java_security.Provider,NEW,EXTENSIBLE;

PROCEDURE (self:ProviderList) toString*() : java_lang.String,EXTENSIBLE;

END sun_security_jca.