Project

General

Profile

Actions

Bug #2498

closed

voms plugin doesn't work with openjdk 7

Added by Reuillon Romain about 13 years ago. Updated over 11 years ago.

Status:
Resolved
Priority:
High
Assigned To:
Category:
gLite adaptors
Target version:
-
Start date:
02/20/2012
Due date:
% Done:

0%

Estimated time:

Description

VOMS plugin depend on a crypto algorthim which is not provided by OpenJDK 7:

java.security.NoSuchAlgorithmException: algorithm RSA/ECB/PKCS1Padding is not available from provider Cryptix
at xjava.security.IJCE.getClassCandidate(IJCE.java:463)
at xjava.security.IJCE.getImplementationClass(IJCE.java:416)
at xjava.security.IJCE.getImplementation(IJCE.java:373)
at xjava.security.Cipher.getInstance(Cipher.java:492)
at xjava.security.Cipher.getInstance(Cipher.java:455)
at COM.claymoresystems.ptls.SSLClientKeyExchange.encode(SSLClientKeyExchange.java:77)
at COM.claymoresystems.ptls.SSLHandshake.sendHandshakeMsg(SSLHandshake.java:149)
at COM.claymoresystems.ptls.SSLHandshake.sendHandshakeMsg(SSLHandshake.java:144)
at COM.claymoresystems.ptls.SSLHandshakeClient.sendClientKeyExchange(SSLHandshakeClient.java:400)
at COM.claymoresystems.ptls.SSLHandshakeClient.processTokens(SSLHandshakeClient.java:148)
at COM.claymoresystems.ptls.SSLHandshake.processHandshake(SSLHandshake.java:135)
at org.globus.gsi.gssapi.GlobusGSSContextImpl.initSecContext(GlobusGSSContextImpl.java:510)
at org.globus.gsi.gssapi.net.GssSocket.authenticateClient(GssSocket.java:107)
at org.globus.gsi.gssapi.net.GssSocket.startHandshake(GssSocket.java:145)
at org.globus.gsi.gssapi.net.GssSocket.getOutputStream(GssSocket.java:166)
at org.glite.voms.contact.VOMSSocket.getOutputStream(VOMSSocket.java:185)
at org.glite.voms.contact.VOMSProxyInit.contactServer(VOMSProxyInit.java:379)
at org.glite.voms.contact.VOMSProxyInit.getVomsAC(VOMSProxyInit.java:167)
at org.glite.voms.contact.VOMSProxyInit.getVomsProxy(VOMSProxyInit.java:292)
at fr.in2p3.jsaga.adaptor.security.VOMSProxyFactory.createProxy(VOMSProxyFactory.java:145)
at fr.in2p3.jsaga.adaptor.security.VOMSSecurityAdaptor.createSecurityCredential(VOMSSecurityAdaptor.java:142)
at fr.in2p3.jsaga.impl.context.ContextImpl.createCredential(ContextImpl.java:282)
at fr.in2p3.jsaga.impl.session.SessionImpl.addContext(SessionImpl.java:63)
at org.openmole.core.batch.jsaga.JSAGASessionService$.addContext(JSAGASessionService.scala:62)
at org.openmole.plugin.environment.glite.GliteAuthentication$.addContext(GliteAuthentication.scala:108)
at org.openmole.plugin.environment.glite.GliteAuthentication.reinit(GliteAuthentication.scala:146)
at org.openmole.plugin.environment.glite.GliteAuthentication.initialize(GliteAuthentication.scala:137)
at org.openmole.core.batch.environment.AuthenticationRegistry$.liftedTree1$1(AuthenticationRegistry.scala:36)
at org.openmole.core.batch.environment.AuthenticationRegistry$.initAndRegisterIfNotAllreadyIs(AuthenticationRegistry.scala:34)
at org.openmole.core.batch.environment.BatchEnvironment.<init>(BatchEnvironment.scala:92)
at org.openmole.plugin.environment.jsaga.JSAGAEnvironment.<init>(JSAGAEnvironment.scala:33)
at org.openmole.plugin.environment.glite.GliteEnvironment.<init>(GliteEnvironment.scala:85)
at org.openmole.plugin.environment.glite.GliteEnvironment.<init>(GliteEnvironment.scala:95)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:206)
at groovysh_evaluate.run(groovysh_evaluate:18)
at groovysh_evaluate$run.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
at groovysh_evaluate$run.call(Unknown Source)
at org.codehaus.groovy.tools.shell.Interpreter.evaluate(Interpreter.groovy:67)
at org.codehaus.groovy.tools.shell.Interpreter$evaluate.call(Unknown Source)
at org.codehaus.groovy.tools.shell.Groovysh.execute(Groovysh.groovy:153)
at org.codehaus.groovy.tools.shell.Groovysh$execute.callCurrent(Unknown Source)
at org.codehaus.groovy.tools.shell.Shell.leftShift(Shell.groovy:114)
at org.codehaus.groovy.tools.shell.Shell$leftShift$0.call(Unknown Source)
at org.codehaus.groovy.tools.shell.ShellRunner.work(ShellRunner.groovy:88)
at sun.reflect.GeneratedMethodAccessor39.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:266)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:51)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)
at org.codehaus.groovy.tools.shell.ShellRunner.run(ShellRunner.groovy:57)
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$2$run(InteractiveShellRunner.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:127)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:147)
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.run(InteractiveShellRunner.groovy:64)
at java_lang_Runnable$run.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at org.codehaus.groovy.tools.shell.Groovysh.run(Groovysh.groovy:442)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:225)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:51)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)
at org.codehaus.groovy.tools.shell.Groovysh.run(Groovysh.groovy:381)
at org.openmole.ui.console.Application.start(Application.java:79)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
at org.eclipse.equinox.launcher.Main.main(Main.java:1384)
ERROR java.lang.InternalError:
java.security.NoSuchAlgorithmException: algorithm RSA/ECB/PKCS1Padding is not available from provider Cryptix
at COM.claymoresystems.ptls.SSLClientKeyExchange.encode (SSLClientKeyExchange.java:105)
at COM.claymoresystems.ptls.SSLHandshake.sendHandshakeMsg (SSLHandshake.java:149)
at COM.claymoresystems.ptls.SSLHandshake.sendHandshakeMsg (SSLHandshake.java:144)
at COM.claymoresystems.ptls.SSLHandshakeClient.sendClientKeyExchange (SSLHandshakeClient.java:400)
at COM.claymoresystems.ptls.SSLHandshakeClient.processTokens (SSLHandshakeClient.java:148)
at COM.claymoresystems.ptls.SSLHandshake.processHandshake (SSLHandshake.java:135)
at org.globus.gsi.gssapi.GlobusGSSContextImpl.initSecContext (GlobusGSSContextImpl.java:510)
at org.globus.gsi.gssapi.net.GssSocket.authenticateClient (GssSocket.java:107)
at org.globus.gsi.gssapi.net.GssSocket.startHandshake (GssSocket.java:145)
at org.globus.gsi.gssapi.net.GssSocket.getOutputStream (GssSocket.java:166)
at org.glite.voms.contact.VOMSSocket.getOutputStream (VOMSSocket.java:185)
at org.glite.voms.contact.VOMSProxyInit.contactServer (VOMSProxyInit.java:379)
at org.glite.voms.contact.VOMSProxyInit.getVomsAC (VOMSProxyInit.java:167)
at org.glite.voms.contact.VOMSProxyInit.getVomsProxy (VOMSProxyInit.java:292)
at fr.in2p3.jsaga.adaptor.security.VOMSProxyFactory.createProxy (VOMSProxyFactory.java:145)
at fr.in2p3.jsaga.adaptor.security.VOMSSecurityAdaptor.createSecurityCredential (VOMSSecurityAdaptor.java:142)
at fr.in2p3.jsaga.impl.context.ContextImpl.createCredential (ContextImpl.java:282)
at fr.in2p3.jsaga.impl.session.SessionImpl.addContext (SessionImpl.java:63)
at org.openmole.core.batch.jsaga.JSAGASessionService$.addContext (JSAGASessionService.scala:62)
at org.openmole.plugin.environment.glite.GliteAuthentication$.addContext (GliteAuthentication.scala:108)
at org.openmole.plugin.environment.glite.GliteAuthentication.reinit (GliteAuthentication.scala:146)
at org.openmole.plugin.environment.glite.GliteAuthentication.initialize (GliteAuthentication.scala:137)
at org.openmole.core.batch.environment.AuthenticationRegistry$.liftedTree1$1 (AuthenticationRegistry.scala:36)
at org.openmole.core.batch.environment.AuthenticationRegistry$.initAndRegisterIfNotAllreadyIs (AuthenticationRegistry.scala:34)
at org.openmole.core.batch.environment.BatchEnvironment.<init> (BatchEnvironment.scala:92)
at org.openmole.plugin.environment.jsaga.JSAGAEnvironment.<init> (JSAGAEnvironment.scala:33)
at org.openmole.plugin.environment.glite.GliteEnvironment.<init> (GliteEnvironment.scala:85)
at org.openmole.plugin.environment.glite.GliteEnvironment.<init> (GliteEnvironment.scala:95)
at groovysh_evaluate.run (groovysh_evaluate:18)
...

This algorithm is however provided by bouncycastle. OpenJDK 7 is the jvm by default on many linux distribution. The claymoresystems library should be patched to use the BC implementation of the algorithm instead of the cryptix implementation.

Actions #1

Updated by Reuillon Romain about 13 years ago

It seems that jglobus 2.0 as dropped the ptls library (not updated since 2005):
https://twiki.grid.iu.edu/bin/view/Security/HashAlgorithms

This solution would be a lot more sustainable than patching ptls. What do you think about it ?

Actions #2

Updated by Schwarz Lionel about 13 years ago

  • Status changed from New to Assigned
  • Assigned To changed from Reynaud Sylvain to Schwarz Lionel

Romain, the upgrade to JGlobus 2 has already been studied and postponed because at least the gridftp adaptor
and the GlobusCredential would need to be rewritten. Plus ASAIK JGlobus-2 is still in beta version.
I will try to find a quicker solution for the OpenJDK issue. Otherwise we will consider moving to JGlobus2
Lionel

Actions #3

Updated by Reuillon Romain about 13 years ago

Any progress on that bug ? It is realy painfull for us as most of our users are using linux.

Actions #4

Updated by Schwarz Lionel over 11 years ago

  • Status changed from Assigned to Resolved

Fixed in 0.9.17 snapshot

Actions

Also available in: Atom PDF