ws-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jacobo Fernandez (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WSS-574) IllegalArgumentException thrown in WSSecEncryptedKey due to incorrect keyAlgorithm
Date Wed, 16 Mar 2016 08:23:33 GMT

    [ https://issues.apache.org/jira/browse/WSS-574?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15197000#comment-15197000
] 

Jacobo Fernandez commented on WSS-574:
--------------------------------------

As I commented previously, already tried with that version of bouncy castle -> "I've tried
with: bcprov-jdk15on (1.46, 1.53, 1.54)" and the result was the same.

> IllegalArgumentException thrown in WSSecEncryptedKey due to incorrect keyAlgorithm
> ----------------------------------------------------------------------------------
>
>                 Key: WSS-574
>                 URL: https://issues.apache.org/jira/browse/WSS-574
>             Project: WSS4J
>          Issue Type: Bug
>          Components: WSS4J Core
>         Environment: Windows 7 64 bit, java jdk 7.0_79, wss4j 1.6.18
>            Reporter: Jacobo Fernandez
>            Assignee: Colm O hEigeartaigh
>
> This is hard to explain to me because I'm not expert in WSS, but this is what I found:
> In {{WSSecEncryptedKey.prepareInternal}}, when {{WSSecurityUtil.getCipherInstance(keyEncAlgo)}}
is called, and {{keyEncAlgo}} value is {{WSConstants.KEYTRANSPORT_RSAOEP}}, the {{JCEMapper.translateURItoJCEID(cipherAlgo)}}
is returning (in my case) {{"RSA/ECB/OAEPPadding"}}. Then, oaepParameterSpec is not null and
it leads to the else, where it calls to {{cipher.init(Cipher.WRAP_MODE, remoteCert.getPublicKey(),
oaepParameterSpec)}}. This method call throws the following exception:
> {{Caused by: java.lang.IllegalArgumentException: unknown parameter type.}}
> 	{{at org.bouncycastle.jce.provider.JCERSACipher.engineInit(Unknown Source)}}
> 	{{at javax.crypto.Cipher.implInit(Cipher.java:791)}}
> 	{{at javax.crypto.Cipher.chooseProvider(Cipher.java:849)}}
> 	{{at javax.crypto.Cipher.init(Cipher.java:1348)}}
> 	{{at javax.crypto.Cipher.init(Cipher.java:1282)}}
> 	{{at org.apache.ws.security.message.WSSecEncryptedKey.prepareInternal(WSSecEncryptedKey.java:257)}}
> If I modify the first lines of {{getCipherInstance}} to this:
> 	public static Cipher getCipherInstance(String cipherAlgo)
> 			throws WSSecurityException {
> 		try {
> 			String keyAlgorithm = JCEMapper.translateURItoJCEID(cipherAlgo);
>             if (WSConstants.KEYTRANSPORT_RSAOEP.equals(cipherAlgo)) {
> 				try {
> 					return Cipher.getInstance("RSA/ECB/OAEPWithSHA1AndMGF1Padding");
> 				} catch (Exception e) {
> 					throw new WSSecurityException(
> 						WSSecurityException.UNSUPPORTED_ALGORITHM, "unsupportedKeyTransp",
>                         new Object[] { "No such algorithm: " + cipherAlgo }, e);
>                 }
>             }
>             String provider = JCEMapper.getProviderId();
>             if (provider == null) {
>                 return Cipher.getInstance(keyAlgorithm);
>             }
> 		...
> it works. Don't know if this is a problem with the JCEMapper or wss4j itself.
> Sorry for the bad explanation. Hope it helps.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
For additional commands, e-mail: dev-help@ws.apache.org


Mime
View raw message