Hi,

I do one more test about the problem. I change the output port type (in
MyProxy actor) from BaseType.STRING to BaseType.OBJECT and i send the
byte[] array (stores credential information) from output port and i also
modify GridFTP to accept BaseType.OBJECT from its input port. After
changing token to byte array in GridFTP,

        ObjectToken o = (ObjectToken) input.get(0);
        byte[] data = (byte[]) o.getValue();

i use same code for creating credential,

        // load credential
        ExtendedGSSManager manager = (ExtendedGSSManager)
ExtendedGSSManager.getInstance();

        GSSCredential cred = null;
        try {
                cred = manager.createCredential(
                                data,
                                ExtendedGSSCredential.IMPEXP_OPAQUE,
                                GSSCredential.DEFAULT_LIFETIME,
                                null,
                                GSSCredential.INITIATE_AND_ACCEPT);
        } catch (GSSException e) {
                e.printStackTrace();
                //throw new IllegalActionException("MyGramJob: GSS exception.");
        }

and it works ! I think the data lost in conversation into
ByteArrayOutputStream and than to string. Anyway, i will create new actor
sets that accept proxy information as in Object type.

Best regards,
Thanks for your helps,

--ufuk

> Hi ufuk,
>
>     As far as I know, current GlobusJob actor was implemented long time
> ago and does not support Globus 4.2. Probably also for GridFTP. Sorry
> about the that.
>
>     I'm working on new version of these actor. I'll let you know once I
> finish them.
>
> Best wishes
>
> Sincerely yours
>
> Jianwu Wang
> jianwu at sdsc.edu
>
> Scientific Workflow Automation Technologies (SWAT) Laboratory
> San Diego Supercomputer Center
> University of California, San Diego
> San Diego, CA, U.S.A.
>
>
>
> turuncu at be.itu.edu.tr wrote:
>> Hi,
>>
>> I try to transfer proxy information from custom MyProxy actor to GridFTP
>> and GlobusJob actors but it gives error. I done following tests,
>>
>> 1 - I modify GridFTP actor to get proxy information directly from
>> MyProxy
>> file (such as, /tmp/x509up_u501) and it is working successfully. So, it
>> is
>> possible to use MyProxy credential with Kepler grid actors. I just only
>> add "getGSSCredential " method (which is return GSSCredential info) and
>> modify code as follows;
>>
>>                      //ExtendedGSSManager manager = (ExtendedGSSManager)
>> ExtendedGSSManager
>>                      //              .getInstance();
>>                      //_proxy = 
>> manager.createCredential((token.toString()).getBytes(),
>>                      //              ExtendedGSSCredential.IMPEXP_OPAQUE,
>>                      //              GSSCredential.DEFAULT_LIFETIME, null, 
>> // use default
>>                      //                                                      
>>                                         // mechanism - GSI
>>                      //              GSSCredential.INITIATE_AND_ACCEPT);
>>                      _proxy = getGSSCredential("/tmp/x509up_u501");
>>
>> 2 - I also test to modify output of custom MyProxy actor to send proxy
>> info as String data type which is compatible with current version of
>> GridFTP and GlobusJob actors (i don't want to modify current Kepler grid
>> actors),
>>
>>        // read myproxy file
>>      File inFile = new File(filename);
>>      byte [] data = new byte[(int)inFile.length()];
>>
>>      FileInputStream inStream = null;
>>      try {
>>              inStream = new FileInputStream(inFile);
>>              inStream.read(data);
>>              inStream.close();
>>      } catch (FileNotFoundException e) {
>>              e.printStackTrace();
>>      } catch (IOException e) {
>>              e.printStackTrace();
>>      }
>>
>>      ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
>>      try {
>>              byteStream.write(data);
>>      } catch (IOException e) {
>>              e.printStackTrace();
>>      }
>>      output.send(0, new StringToken(byteStream.toString()));
>>
>> but GridFTP actor gives following error,
>>
>> ....
>> Caused by: ptolemy.kernel.util.IllegalActionException: GridFTP transfer
>> failed because of: GSSException: Defective credential detected [Caused
>> by:
>> Failed to load credentials. [Caused by: PEM footer missing]]
>>      at org.nmiworkflow.GridFTP.fire(GridFTP.java:212)
>> ....
>>
>> It must be work but the information lost between conversion and
>> transfer.
>> I also try to add encoding information in both side to ensure that
>> problem
>> is not related with encoding problem and the result is same.
>>
>> 3 - I also try to generate proxy info with ProxyInitTool but the result
>> is
>> same.
>>
>> So, i will use the newer version of cog-jglobus api, jce-jdk and cryptix
>> in my new suite. Is problem realted with that. If i use the same version
>> with Kepler grid actors i get,
>>
>> ptolemy.kernel.util.IllegalActionException:   in
>> .01-teragrid-myproxy.manager
>> Because:
>> org.bouncycastle.jce.PKCS10CertificationRequest.<init>(Ljava/lang/String;Lorg/bouncycastle/asn1/x509/X509Name;Ljava/security/PublicKey;Lorg/bouncycastle/asn1/DERConstructedSet;Ljava/security/PrivateKey;Ljava/lang/String;)V
>>      at ptolemy.actor.Manager.execute(Manager.java:465)
>>      at ptolemy.actor.Manager.run(Manager.java:1147)
>>      at ptolemy.actor.Manager$3.run(Manager.java:1188)
>> Caused by: java.lang.NoSuchMethodError:
>> org.bouncycastle.jce.PKCS10CertificationRequest.<init>(Ljava/lang/String;Lorg/bouncycastle/asn1/x509/X509Name;Ljava/security/PublicKey;Lorg/bouncycastle/asn1/DERConstructedSet;Ljava/security/PrivateKey;Ljava/lang/String;)V
>>      at
>> org.earth.actors.globus.MyProxyLogon.getCredentials(MyProxyLogon.java:621)
>>      at org.earth.actors.globus.GlobusMyProxy.fire(GlobusMyProxy.java:196)
>>      at ptolemy.actor.AtomicActor.iterate(AtomicActor.java:434)
>>      at
>> ptolemy.actor.sched.StaticSchedulingDirector.fire(StaticSchedulingDirector.java:188)
>>      at ptolemy.actor.CompositeActor.fire(CompositeActor.java:417)
>>      at ptolemy.actor.Manager.iterate(Manager.java:725)
>>      at ptolemy.actor.Manager.execute(Manager.java:349)
>>      ... 2 more
>>
>> error messages which is related with incompatibilities of the libraries.
>> Any comments will be helpful to solve the problem.
>>
>> Thanks,
>>
>> --ufuk
>>
>>
>>
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>



-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

Reply via email to