/projs./apk/samsung-SGH-I717-KJ5-Email/src/myorg/bouncycastle/jce/provider/PBE.java

https://github.com/xl8or/- · Java · 238 lines · 211 code · 27 blank · 0 comment · 42 complexity · 551a59c4a284e2b77becd6c3c6101125 MD5 · raw file

  1. package myorg.bouncycastle.jce.provider;
  2. import java.security.spec.AlgorithmParameterSpec;
  3. import javax.crypto.spec.PBEKeySpec;
  4. import javax.crypto.spec.PBEParameterSpec;
  5. import myorg.bouncycastle.crypto.CipherParameters;
  6. import myorg.bouncycastle.crypto.PBEParametersGenerator;
  7. import myorg.bouncycastle.crypto.digests.MD2Digest;
  8. import myorg.bouncycastle.crypto.digests.MD5Digest;
  9. import myorg.bouncycastle.crypto.digests.RIPEMD160Digest;
  10. import myorg.bouncycastle.crypto.digests.SHA1Digest;
  11. import myorg.bouncycastle.crypto.digests.SHA256Digest;
  12. import myorg.bouncycastle.crypto.digests.TigerDigest;
  13. import myorg.bouncycastle.crypto.generators.OpenSSLPBEParametersGenerator;
  14. import myorg.bouncycastle.crypto.generators.PKCS12ParametersGenerator;
  15. import myorg.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator;
  16. import myorg.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator;
  17. import myorg.bouncycastle.crypto.params.DESParameters;
  18. import myorg.bouncycastle.crypto.params.KeyParameter;
  19. import myorg.bouncycastle.crypto.params.ParametersWithIV;
  20. import myorg.bouncycastle.jce.provider.JCEPBEKey;
  21. public interface PBE {
  22. int MD2 = 5;
  23. int MD5 = 0;
  24. int OPENSSL = 3;
  25. int PKCS12 = 2;
  26. int PKCS5S1 = 0;
  27. int PKCS5S2 = 1;
  28. int RIPEMD160 = 2;
  29. int SHA1 = 1;
  30. int SHA256 = 4;
  31. int TIGER = 3;
  32. public static class Util {
  33. public Util() {}
  34. private static PBEParametersGenerator makePBEGenerator(int var0, int var1) {
  35. Object var3;
  36. if(var0 == 0) {
  37. switch(var1) {
  38. case 0:
  39. MD5Digest var4 = new MD5Digest();
  40. var3 = new PKCS5S1ParametersGenerator(var4);
  41. break;
  42. case 1:
  43. SHA1Digest var5 = new SHA1Digest();
  44. var3 = new PKCS5S1ParametersGenerator(var5);
  45. break;
  46. case 2:
  47. case 3:
  48. case 4:
  49. default:
  50. throw new IllegalStateException("PKCS5 scheme 1 only supports MD2, MD5 and SHA1.");
  51. case 5:
  52. MD2Digest var2 = new MD2Digest();
  53. var3 = new PKCS5S1ParametersGenerator(var2);
  54. }
  55. } else if(var0 == 1) {
  56. var3 = new PKCS5S2ParametersGenerator();
  57. } else if(var0 == 2) {
  58. switch(var1) {
  59. case 0:
  60. MD5Digest var7 = new MD5Digest();
  61. var3 = new PKCS12ParametersGenerator(var7);
  62. break;
  63. case 1:
  64. SHA1Digest var8 = new SHA1Digest();
  65. var3 = new PKCS12ParametersGenerator(var8);
  66. break;
  67. case 2:
  68. RIPEMD160Digest var9 = new RIPEMD160Digest();
  69. var3 = new PKCS12ParametersGenerator(var9);
  70. break;
  71. case 3:
  72. TigerDigest var10 = new TigerDigest();
  73. var3 = new PKCS12ParametersGenerator(var10);
  74. break;
  75. case 4:
  76. SHA256Digest var11 = new SHA256Digest();
  77. var3 = new PKCS12ParametersGenerator(var11);
  78. break;
  79. case 5:
  80. MD2Digest var6 = new MD2Digest();
  81. var3 = new PKCS12ParametersGenerator(var6);
  82. break;
  83. default:
  84. throw new IllegalStateException("unknown digest scheme for PBE encryption.");
  85. }
  86. } else {
  87. var3 = new OpenSSLPBEParametersGenerator();
  88. }
  89. return (PBEParametersGenerator)var3;
  90. }
  91. static CipherParameters makePBEMacParameters(PBEKeySpec var0, int var1, int var2, int var3) {
  92. PBEParametersGenerator var4 = makePBEGenerator(var1, var2);
  93. byte[] var5;
  94. if(var1 == 2) {
  95. var5 = PBEParametersGenerator.PKCS12PasswordToBytes(var0.getPassword());
  96. } else {
  97. var5 = PBEParametersGenerator.PKCS5PasswordToBytes(var0.getPassword());
  98. }
  99. byte[] var6 = var0.getSalt();
  100. int var7 = var0.getIterationCount();
  101. var4.init(var5, var6, var7);
  102. CipherParameters var8 = var4.generateDerivedMacParameters(var3);
  103. int var9 = 0;
  104. while(true) {
  105. int var10 = var5.length;
  106. if(var9 == var10) {
  107. return var8;
  108. }
  109. var5[var9] = 0;
  110. ++var9;
  111. }
  112. }
  113. static CipherParameters makePBEMacParameters(JCEPBEKey var0, AlgorithmParameterSpec var1) {
  114. if(var1 != null && var1 instanceof PBEParameterSpec) {
  115. PBEParameterSpec var2 = (PBEParameterSpec)var1;
  116. int var3 = var0.getType();
  117. int var4 = var0.getDigest();
  118. PBEParametersGenerator var5 = makePBEGenerator(var3, var4);
  119. byte[] var6 = var0.getEncoded();
  120. if(var0.shouldTryWrongPKCS12()) {
  121. var6 = new byte[2];
  122. }
  123. byte[] var7 = var2.getSalt();
  124. int var8 = var2.getIterationCount();
  125. var5.init(var6, var7, var8);
  126. int var9 = var0.getKeySize();
  127. CipherParameters var10 = var5.generateDerivedMacParameters(var9);
  128. int var11 = 0;
  129. while(true) {
  130. int var12 = var6.length;
  131. if(var11 == var12) {
  132. return var10;
  133. }
  134. var6[var11] = 0;
  135. ++var11;
  136. }
  137. } else {
  138. throw new IllegalArgumentException("Need a PBEParameter spec with a PBE key.");
  139. }
  140. }
  141. static CipherParameters makePBEParameters(PBEKeySpec var0, int var1, int var2, int var3, int var4) {
  142. PBEParametersGenerator var5 = makePBEGenerator(var1, var2);
  143. byte[] var6;
  144. if(var1 == 2) {
  145. var6 = PBEParametersGenerator.PKCS12PasswordToBytes(var0.getPassword());
  146. } else {
  147. var6 = PBEParametersGenerator.PKCS5PasswordToBytes(var0.getPassword());
  148. }
  149. byte[] var7 = var0.getSalt();
  150. int var8 = var0.getIterationCount();
  151. var5.init(var6, var7, var8);
  152. CipherParameters var9;
  153. if(var4 != 0) {
  154. var9 = var5.generateDerivedParameters(var3, var4);
  155. } else {
  156. var9 = var5.generateDerivedParameters(var3);
  157. }
  158. int var10 = 0;
  159. while(true) {
  160. int var11 = var6.length;
  161. if(var10 == var11) {
  162. return var9;
  163. }
  164. var6[var10] = 0;
  165. ++var10;
  166. }
  167. }
  168. static CipherParameters makePBEParameters(JCEPBEKey var0, AlgorithmParameterSpec var1, String var2) {
  169. if(var1 != null && var1 instanceof PBEParameterSpec) {
  170. PBEParameterSpec var3 = (PBEParameterSpec)var1;
  171. int var4 = var0.getType();
  172. int var5 = var0.getDigest();
  173. PBEParametersGenerator var6 = makePBEGenerator(var4, var5);
  174. byte[] var7 = var0.getEncoded();
  175. if(var0.shouldTryWrongPKCS12()) {
  176. var7 = new byte[2];
  177. }
  178. byte[] var8 = var3.getSalt();
  179. int var9 = var3.getIterationCount();
  180. var6.init(var7, var8, var9);
  181. CipherParameters var12;
  182. if(var0.getIvSize() != 0) {
  183. int var10 = var0.getKeySize();
  184. int var11 = var0.getIvSize();
  185. var12 = var6.generateDerivedParameters(var10, var11);
  186. } else {
  187. int var15 = var0.getKeySize();
  188. var12 = var6.generateDerivedParameters(var15);
  189. }
  190. if(var2.startsWith("DES")) {
  191. if(var12 instanceof ParametersWithIV) {
  192. DESParameters.setOddParity(((KeyParameter)((ParametersWithIV)var12).getParameters()).getKey());
  193. } else {
  194. DESParameters.setOddParity(((KeyParameter)var12).getKey());
  195. }
  196. }
  197. int var13 = 0;
  198. while(true) {
  199. int var14 = var7.length;
  200. if(var13 == var14) {
  201. return var12;
  202. }
  203. var7[var13] = 0;
  204. ++var13;
  205. }
  206. } else {
  207. throw new IllegalArgumentException("Need a PBEParameter spec with a PBE key.");
  208. }
  209. }
  210. }
  211. }