KeyGenerator AES implementation not found

1.021 προβολές
Παράβλεψη και μετάβαση στο πρώτο μη αναγνωσμένο μήνυμα

CremaGames Studios

μη αναγνωσμένη,
14 Οκτ 2013, 5:20:58 π.μ.14/10/13
ως rob...@googlegroups.com
Hi,

I'm trying to use AES for encyption and it seems that Robo isn't loading this implementation:

java.security.NoSuchAlgorithmException: KeyGenerator AES implementation not found
at org.apache.harmony.security.fortress.Engine.notFound(Engine.java)
at org.apache.harmony.security.fortress.Engine.getInstance(Engine.java)
at javax.crypto.KeyGenerator.getInstance(KeyGenerator.java)


I've tried adding some packages to the robo.xml but I can't find where is the one that has AES:

  <forceLinkClasses>
  <pattern>org.apache.harmony.xnet.provider.jsse.*</pattern>
  <pattern>com.android.org.bouncycastle.jce.provider.BouncyCastleProvider</pattern>
  <pattern>com.android.org.bouncycastle.jce.provider.JCERSACipher</pattern>
  <pattern>org.apache.harmony.security.*</pattern>
  <pattern>org.apache.harmony.security.fortress.*</pattern>
  <pattern>org.apache.harmony.security.fortress.Engine*</pattern>
  </forceLinkClasses>

Here is the relevant code:

KeyGenerator kgen = KeyGenerator.getInstance("AES"); 
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); 
try
  sr = SecureRandom.getInstance("SHA1PRNG", "Crypto"); 
}catch(NoSuchProviderException ex){ 
  sr = SecureRandom.getInstance("SHA1PRNG"); 
}

Niklas Therning

μη αναγνωσμένη,
14 Οκτ 2013, 7:06:49 π.μ.14/10/13
ως CremaGames Studios, rob...@googlegroups.com
You should see a WARN in the console when Class.forName() fails to load a class.

Another way to determine what you need to add to forceLinkClasses is to temporarily use **.* as pattern, i.e. link in everything, and then print out the name of the class returned by KeyGenerator.getInstance()


--
You received this message because you are subscribed to the Google Groups "RoboVM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to robovm+un...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

CremaGames Studios

μη αναγνωσμένη,
14 Οκτ 2013, 9:23:21 π.μ.14/10/13
ως rob...@googlegroups.com, CremaGames Studios
I've tried that but with no luck. With the pattern **.* the encrypt works, and here is the name of the class generated by KeyGenerator:

kgen.getClass().getName(): javax.crypto.KeyGenerator
kgen.getProvider().getInfo(): BouncyCastle Security Provider v1.46
kgen.getProvider().getName(): BC
kgen.getProvider().getClass().getName(): com.android.org.bouncycastle.jce.provider.BouncyCastleProvider
sr.getProvider().getClass().getCanonicalName(): org.apache.harmony.security.provider.crypto.CryptoProvider


Code:

KeyGenerator kgen = KeyGenerator.getInstance("AES");
System.out.println(kgen.getClass().getName());
System.out.println(kgen.getProvider().getInfo());
System.out.println(kgen.getProvider().getName());
System.out.println(kgen.getProvider().getClass().getName());
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
try{
sr = SecureRandom.getInstance("SHA1PRNG", "Crypto");
}catch (NoSuchProviderException ex){
sr = SecureRandom.getInstance("SHA1PRNG");
}
System.out.println(sr.getProvider().getClass().getCanonicalName());

So I put the patterns:

  <forceLinkClasses>
<pattern>javax.crypto.KeyGenerator</pattern>
<pattern>com.android.org.bouncycastle.jce.provider.BouncyCastleProvider</pattern>
    <pattern>org.apache.harmony.security.provider.crypto.CryptoProvider</pattern>
  </forceLinkClasses>

But still don't work and the same error as before.

Niklas Therning

μη αναγνωσμένη,
15 Οκτ 2013, 2:35:44 π.μ.15/10/13
ως CremaGames Studios, rob...@googlegroups.com
Symmetric cryptos such as AES are in the com.android.org.bouncycastle.jce.provider.symmetric package. Please try:

<forceLinkClasses>
  <pattern>com.android.org.bouncycastle.jce.provider.BouncyCastleProvider</pattern>
  <pattern>com.android.org.bouncycastle.jce.provider.symmetric.AES*</pattern>
</forceLinkClasses>

Let me know if it works.

CremaGames Studios

μη αναγνωσμένη,
15 Οκτ 2013, 3:56:28 π.μ.15/10/13
ως rob...@googlegroups.com, CremaGames Studios
Thanks Niklas, it works.
Απάντηση σε όλους
Απάντηση στον συντάκτη
Προώθηση
0 νέα μηνύματα