Crypto-View

bcgit/bc-java

Cryptographic posture

21403 cryptographic locations: 1454 already broken, 11779 quantum-vulnerable, 1976 reduced-margin, 3828 undetermined, 2366 quantum-safe

3184 establish keys, so traffic protected by them and recorded today becomes readable once the algorithm falls. 226 imported cryptographic libraries are listed separately. 8450 files analysed.

Quantum-vulnerable 11779 Already broken 1454 Reduced margin 1976 Could not be determined 3828 Quantum-safe 2366
To address7697
Key establishment3184
Inventory only226
Total findings21629
What was analysed
Branch main
Commit ab16374d37c7e18c4090eb8838ebbd72a92593f2 Clarify PKIXNameConstraints divergence from bc-csharp
Committed 2026-09-13 12:31 UTC
Scanned 2026-09-21 10:55 UTC 9 hours ago
Coverage 8450 files, 8113 java

List of cryptographic assets

RSAES-PKCS1v15 Already broken Recorded traffic 327 places See details

TLS cipher suite named in source

A cipher suite written into the code rather than into a configuration file - `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`, or the OpenSSL spelling `ECDHE-RSA-AES128-GCM-SHA256`. The key exchange is reported, and the bulk cipher separately when it is one of the broken ones.

This code names the exact cryptography its TLS connections may use. Because the list is in the program rather than in a settings file, changing it needs a new release - which is the thing that makes a migration slow.

What to do. A hardcoded suite list ships with the binary and cannot be changed without a release, so move it to configuration first. The key exchange changes when the TLS library offers a hybrid group, not before.

  1. test/src/test/java/org/bouncycastle/test/est/TestCACertsFetch.java:1337 test path "TLS_RSA_WITH_NULL_SHA256",
  2. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:883 test path "TLS_RSA_WITH_AES_128_CCM",
  3. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:884 test path "TLS_RSA_WITH_AES_256_CBC_SHA",
  4. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:891 test path "TLS_RSA_WITH_AES_256_CBC_SHA256",
  5. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:897 test path "TLS_RSA_WITH_AES_256_CCM_8",
  6. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:900 test path "TLS_RSA_WITH_NULL_SHA256",
  7. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:902 test path "TLS_RSA_WITH_AES_128_CBC_SHA256",
  8. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:903 test path "TLS_RSA_WITH_AES_128_GCM_SHA256",
  9. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:904 test path "TLS_RSA_WITH_AES_256_CCM",
  10. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:905 test path "TLS_RSA_WITH_AES_256_GCM_SHA384",
  11. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:913 test path "TLS_RSA_WITH_AES_128_CBC_SHA",
  12. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:915 test path "TLS_RSA_WITH_NULL_SHA",
  13. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:917 test path "TLS_RSA_WITH_3DES_EDE_CBC_SHA",
  14. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:919 test path "TLS_RSA_WITH_AES_128_CCM_8",
  15. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:331 case CipherSuite.TLS_RSA_WITH_3DES_EDE_CBC_SHA:
  16. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:332 case CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA:
  17. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:333 case CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA:
  18. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:334 case CipherSuite.TLS_RSA_WITH_CAMELLIA_128_CBC_SHA:
  19. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:335 case CipherSuite.TLS_RSA_WITH_CAMELLIA_256_CBC_SHA:
  20. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:336 case CipherSuite.TLS_RSA_WITH_NULL_SHA:
  21. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:394 case CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA256:
  22. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:395 case CipherSuite.TLS_RSA_WITH_AES_128_CCM:
  23. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:396 case CipherSuite.TLS_RSA_WITH_AES_128_CCM_8:
  24. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:397 case CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256:
  25. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:398 case CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA256:
  26. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:399 case CipherSuite.TLS_RSA_WITH_AES_256_CCM:
  27. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:400 case CipherSuite.TLS_RSA_WITH_AES_256_CCM_8:
  28. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:401 case CipherSuite.TLS_RSA_WITH_ARIA_128_CBC_SHA256:
  29. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:402 case CipherSuite.TLS_RSA_WITH_ARIA_128_GCM_SHA256:
  30. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:403 case CipherSuite.TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256:
  31. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:404 case CipherSuite.TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256:
  32. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:405 case CipherSuite.TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256:
  33. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:406 case CipherSuite.TLS_RSA_WITH_NULL_SHA256:
  34. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:435 case CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384:
  35. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:436 case CipherSuite.TLS_RSA_WITH_ARIA_256_CBC_SHA384:
  36. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:437 case CipherSuite.TLS_RSA_WITH_ARIA_256_GCM_SHA384:
  37. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:438 case CipherSuite.TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384:
  38. tls/src/main/java/org/bouncycastle/jsse/provider/FipsUtils.java:114 cs.add("TLS_RSA_WITH_AES_128_CBC_SHA");
  39. tls/src/main/java/org/bouncycastle/jsse/provider/FipsUtils.java:115 cs.add("TLS_RSA_WITH_AES_128_CBC_SHA256");
  40. tls/src/main/java/org/bouncycastle/jsse/provider/FipsUtils.java:116 cs.add("TLS_RSA_WITH_AES_128_CCM");
  41. tls/src/main/java/org/bouncycastle/jsse/provider/FipsUtils.java:117 cs.add("TLS_RSA_WITH_AES_128_CCM_8");
  42. tls/src/main/java/org/bouncycastle/jsse/provider/FipsUtils.java:118 cs.add("TLS_RSA_WITH_AES_256_CBC_SHA");
  43. tls/src/main/java/org/bouncycastle/jsse/provider/FipsUtils.java:119 cs.add("TLS_RSA_WITH_AES_256_CBC_SHA256");
  44. tls/src/main/java/org/bouncycastle/jsse/provider/FipsUtils.java:120 cs.add("TLS_RSA_WITH_AES_256_CCM");
  45. tls/src/main/java/org/bouncycastle/jsse/provider/FipsUtils.java:121 cs.add("TLS_RSA_WITH_AES_256_CCM_8");
  46. tls/src/main/java/org/bouncycastle/jsse/provider/FipsUtils.java:125 cs.add("TLS_RSA_WITH_AES_128_GCM_SHA256");
  47. tls/src/main/java/org/bouncycastle/jsse/provider/FipsUtils.java:126 cs.add("TLS_RSA_WITH_AES_256_GCM_SHA384");
  48. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:293 addCipherSuite(cs, "TLS_RSA_WITH_3DES_EDE_CBC_SHA", CipherSuite.TLS_RSA_WITH_3DES_EDE_CBC_SHA);
  49. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:294 addCipherSuite(cs, "TLS_RSA_WITH_AES_128_CBC_SHA", CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA);
  50. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:295 addCipherSuite(cs, "TLS_RSA_WITH_AES_128_CBC_SHA256", CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA256);
  51. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:296 addCipherSuite(cs, "TLS_RSA_WITH_AES_128_CCM", CipherSuite.TLS_RSA_WITH_AES_128_CCM);
  52. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:297 addCipherSuite(cs, "TLS_RSA_WITH_AES_128_CCM_8", CipherSuite.TLS_RSA_WITH_AES_128_CCM_8);
  53. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:298 addCipherSuite(cs, "TLS_RSA_WITH_AES_128_GCM_SHA256", CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256);
  54. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:299 addCipherSuite(cs, "TLS_RSA_WITH_AES_256_CBC_SHA", CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA);
  55. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:300 addCipherSuite(cs, "TLS_RSA_WITH_AES_256_CBC_SHA256", CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA256);
  56. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:301 addCipherSuite(cs, "TLS_RSA_WITH_AES_256_CCM", CipherSuite.TLS_RSA_WITH_AES_256_CCM);
  57. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:302 addCipherSuite(cs, "TLS_RSA_WITH_AES_256_CCM_8", CipherSuite.TLS_RSA_WITH_AES_256_CCM_8);
  58. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:303 addCipherSuite(cs, "TLS_RSA_WITH_AES_256_GCM_SHA384", CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384);
  59. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:304 addCipherSuite(cs, "TLS_RSA_WITH_ARIA_128_CBC_SHA256", CipherSuite.TLS_RSA_WITH_ARIA_128_CBC_SHA256);
  60. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:305 addCipherSuite(cs, "TLS_RSA_WITH_ARIA_128_GCM_SHA256", CipherSuite.TLS_RSA_WITH_ARIA_128_GCM_SHA256);
  61. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:306 addCipherSuite(cs, "TLS_RSA_WITH_ARIA_256_CBC_SHA384", CipherSuite.TLS_RSA_WITH_ARIA_256_CBC_SHA384);
  62. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:307 addCipherSuite(cs, "TLS_RSA_WITH_ARIA_256_GCM_SHA384", CipherSuite.TLS_RSA_WITH_ARIA_256_GCM_SHA384);
  63. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:308 addCipherSuite(cs, "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA", CipherSuite.TLS_RSA_WITH_CAMELLIA_128_CBC_SHA);
  64. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:309 addCipherSuite(cs, "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256", CipherSuite.TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256);
  65. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:310 addCipherSuite(cs, "TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256", CipherSuite.TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256);
  66. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:311 addCipherSuite(cs, "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA", CipherSuite.TLS_RSA_WITH_CAMELLIA_256_CBC_SHA);
  67. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:312 addCipherSuite(cs, "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256", CipherSuite.TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256);
  68. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:313 addCipherSuite(cs, "TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384", CipherSuite.TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384);
  69. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:314 addCipherSuite(cs, "TLS_RSA_WITH_NULL_SHA", CipherSuite.TLS_RSA_WITH_NULL_SHA);
  70. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:315 addCipherSuite(cs, "TLS_RSA_WITH_NULL_SHA256", CipherSuite.TLS_RSA_WITH_NULL_SHA256);
  71. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:21 public static final int TLS_RSA_WITH_NULL_MD5 = 0x0001;
  72. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:22 public static final int TLS_RSA_WITH_NULL_SHA = 0x0002;
  73. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:23 public static final int TLS_RSA_EXPORT_WITH_RC4_40_MD5 = 0x0003;
  74. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:24 public static final int TLS_RSA_WITH_RC4_128_MD5 = 0x0004;
  75. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:25 public static final int TLS_RSA_WITH_RC4_128_SHA = 0x0005;
  76. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:26 public static final int TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = 0x0006;
  77. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:27 public static final int TLS_RSA_WITH_IDEA_CBC_SHA = 0x0007;
  78. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:28 public static final int TLS_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0008;
  79. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:29 public static final int TLS_RSA_WITH_DES_CBC_SHA = 0x0009;
  80. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:30 public static final int TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x000A;
  81. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:57 public static final int TLS_RSA_WITH_AES_128_CBC_SHA = 0x002F;
  82. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:63 public static final int TLS_RSA_WITH_AES_256_CBC_SHA = 0x0035;
  83. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:73 public static final int TLS_RSA_WITH_CAMELLIA_128_CBC_SHA = 0x0041;
  84. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:80 public static final int TLS_RSA_WITH_CAMELLIA_256_CBC_SHA = 0x0084;
  85. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:87 public static final int TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BA;
  86. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:94 public static final int TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C0;
  87. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:104 public static final int TLS_RSA_WITH_SEED_CBC_SHA = 0x0096;
  88. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:122 public static final int TLS_RSA_PSK_WITH_RC4_128_SHA = 0x0092;
  89. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:123 public static final int TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA = 0x0093;
  90. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:124 public static final int TLS_RSA_PSK_WITH_AES_128_CBC_SHA = 0x0094;
  91. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:125 public static final int TLS_RSA_PSK_WITH_AES_256_CBC_SHA = 0x0095;
  92. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:161 public static final int TLS_RSA_PSK_WITH_NULL_SHA = 0x002E;
  93. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:179 public static final int TLS_RSA_WITH_NULL_SHA256 = 0x003B;
  94. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:180 public static final int TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x003C;
  95. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:181 public static final int TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x003D;
  96. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:196 public static final int TLS_RSA_WITH_AES_128_GCM_SHA256 = 0x009C;
  97. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:197 public static final int TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x009D;
  98. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:236 public static final int TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 = 0x00AC;
  99. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:237 public static final int TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 = 0x00AD;
  100. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:246 public static final int TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 = 0x00B6;
  101. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:247 public static final int TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 = 0x00B7;
  102. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:248 public static final int TLS_RSA_PSK_WITH_NULL_SHA256 = 0x00B8;
  103. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:249 public static final int TLS_RSA_PSK_WITH_NULL_SHA384 = 0x00B9;
  104. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:272 public static final int TLS_RSA_WITH_ARIA_128_CBC_SHA256 = 0xC03C;
  105. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:273 public static final int TLS_RSA_WITH_ARIA_256_CBC_SHA384 = 0xC03D;
  106. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:294 public static final int TLS_RSA_WITH_ARIA_128_GCM_SHA256 = 0xC050;
  107. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:295 public static final int TLS_RSA_WITH_ARIA_256_GCM_SHA384 = 0xC051;
  108. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:320 public static final int TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 = 0xC068;
  109. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:321 public static final int TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 = 0xC069;
  110. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:326 public static final int TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 = 0xC06E;
  111. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:327 public static final int TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 = 0xC06F;
  112. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:343 public static final int TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC07A;
  113. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:344 public static final int TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC07B;
  114. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:368 public static final int TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 = 0xC092;
  115. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:369 public static final int TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 = 0xC093;
  116. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:374 public static final int TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 = 0xC098;
  117. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:375 public static final int TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 = 0xC099;
  118. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:382 public static final int TLS_RSA_WITH_AES_128_CCM = 0xC09C;
  119. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:383 public static final int TLS_RSA_WITH_AES_256_CCM = 0xC09D;
  120. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:386 public static final int TLS_RSA_WITH_AES_128_CCM_8 = 0xC0A0;
  121. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:387 public static final int TLS_RSA_WITH_AES_256_CCM_8 = 0xC0A1;
  122. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:421 public static final int TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 = 0xCCAE;
  123. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2180 case CipherSuite.TLS_RSA_PSK_WITH_AES_128_GCM_SHA256:
  124. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2181 case CipherSuite.TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256:
  125. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2182 case CipherSuite.TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256:
  126. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2183 case CipherSuite.TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256:
  127. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2184 case CipherSuite.TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256:
  128. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2185 case CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA256:
  129. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2186 case CipherSuite.TLS_RSA_WITH_AES_128_CCM:
  130. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2187 case CipherSuite.TLS_RSA_WITH_AES_128_CCM_8:
  131. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2188 case CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256:
  132. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2189 case CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA256:
  133. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2190 case CipherSuite.TLS_RSA_WITH_AES_256_CCM:
  134. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2191 case CipherSuite.TLS_RSA_WITH_AES_256_CCM_8:
  135. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2192 case CipherSuite.TLS_RSA_WITH_ARIA_128_CBC_SHA256:
  136. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2193 case CipherSuite.TLS_RSA_WITH_ARIA_128_GCM_SHA256:
  137. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2194 case CipherSuite.TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256:
  138. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2195 case CipherSuite.TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256:
  139. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2196 case CipherSuite.TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256:
  140. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2197 case CipherSuite.TLS_RSA_WITH_NULL_SHA256:
  141. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2260 case CipherSuite.TLS_RSA_PSK_WITH_AES_256_GCM_SHA384:
  142. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2261 case CipherSuite.TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384:
  143. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2262 case CipherSuite.TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384:
  144. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2263 case CipherSuite.TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384:
  145. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2264 case CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384:
  146. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2265 case CipherSuite.TLS_RSA_WITH_ARIA_256_CBC_SHA384:
  147. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2266 case CipherSuite.TLS_RSA_WITH_ARIA_256_GCM_SHA384:
  148. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2267 case CipherSuite.TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384:
  149. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2296 case CipherSuite.TLS_RSA_PSK_WITH_AES_256_CBC_SHA384:
  150. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2297 case CipherSuite.TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384:
  151. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2298 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA384:
  152. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2787 case CipherSuite.TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA:
  153. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2788 case CipherSuite.TLS_RSA_WITH_3DES_EDE_CBC_SHA:
  154. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2819 case CipherSuite.TLS_RSA_PSK_WITH_AES_128_CBC_SHA:
  155. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2820 case CipherSuite.TLS_RSA_PSK_WITH_AES_128_CBC_SHA256:
  156. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2821 case CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA:
  157. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2822 case CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA256:
  158. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2834 case CipherSuite.TLS_RSA_WITH_AES_128_CCM:
  159. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2843 case CipherSuite.TLS_RSA_WITH_AES_128_CCM_8:
  160. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2859 case CipherSuite.TLS_RSA_PSK_WITH_AES_128_GCM_SHA256:
  161. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2860 case CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256:
  162. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2888 case CipherSuite.TLS_RSA_PSK_WITH_AES_256_CBC_SHA:
  163. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2889 case CipherSuite.TLS_RSA_PSK_WITH_AES_256_CBC_SHA384:
  164. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2890 case CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA:
  165. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2891 case CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA256:
  166. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2901 case CipherSuite.TLS_RSA_WITH_AES_256_CCM:
  167. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2908 case CipherSuite.TLS_RSA_WITH_AES_256_CCM_8:
  168. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2924 case CipherSuite.TLS_RSA_PSK_WITH_AES_256_GCM_SHA384:
  169. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2925 case CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384:
  170. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2940 case CipherSuite.TLS_RSA_WITH_ARIA_128_CBC_SHA256:
  171. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2941 case CipherSuite.TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256:
  172. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2955 case CipherSuite.TLS_RSA_WITH_ARIA_128_GCM_SHA256:
  173. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2956 case CipherSuite.TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256:
  174. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2971 case CipherSuite.TLS_RSA_WITH_ARIA_256_CBC_SHA384:
  175. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2972 case CipherSuite.TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384:
  176. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2986 case CipherSuite.TLS_RSA_WITH_ARIA_256_GCM_SHA384:
  177. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2987 case CipherSuite.TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384:
  178. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3007 case CipherSuite.TLS_RSA_WITH_CAMELLIA_128_CBC_SHA:
  179. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3008 case CipherSuite.TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256:
  180. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3009 case CipherSuite.TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256:
  181. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3023 case CipherSuite.TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256:
  182. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3024 case CipherSuite.TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256:
  183. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3044 case CipherSuite.TLS_RSA_WITH_CAMELLIA_256_CBC_SHA:
  184. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3045 case CipherSuite.TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256:
  185. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3046 case CipherSuite.TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384:
  186. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3060 case CipherSuite.TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384:
  187. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3061 case CipherSuite.TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384:
  188. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3071 case CipherSuite.TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256:
  189. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3088 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA:
  190. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3089 case CipherSuite.TLS_RSA_WITH_NULL_SHA:
  191. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3095 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA256:
  192. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3096 case CipherSuite.TLS_RSA_WITH_NULL_SHA256:
  193. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3102 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA384:
  194. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3116 case CipherSuite.TLS_RSA_WITH_SEED_CBC_SHA:
  195. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3457 case CipherSuite.TLS_RSA_WITH_3DES_EDE_CBC_SHA:
  196. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3458 case CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA:
  197. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3459 case CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA256:
  198. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3460 case CipherSuite.TLS_RSA_WITH_AES_128_CCM:
  199. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3461 case CipherSuite.TLS_RSA_WITH_AES_128_CCM_8:
  200. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3462 case CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256:

Showing the first 200. The CBOM has every one.

config.cipher-suite · CWE-757
NULL Already broken 83 places See details

TLS cipher suite named in source

A cipher suite written into the code rather than into a configuration file - `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`, or the OpenSSL spelling `ECDHE-RSA-AES128-GCM-SHA256`. The key exchange is reported, and the bulk cipher separately when it is one of the broken ones.

This code names the exact cryptography its TLS connections may use. Because the list is in the program rather than in a settings file, changing it needs a new release - which is the thing that makes a migration slow.

What to do. A hardcoded suite list ships with the binary and cannot be changed without a release, so move it to configuration first. The key exchange changes when the TLS library offers a hybrid group, not before.

  1. test/src/test/java/org/bouncycastle/test/est/TestCACertsFetch.java:1337 test path "TLS_RSA_WITH_NULL_SHA256",
  2. test/src/test/java/org/bouncycastle/test/est/TestCACertsFetch.java:1338 test path "TLS_ECDHE_ECDSA_WITH_NULL_SHA",
  3. test/src/test/java/org/bouncycastle/test/est/TestCACertsFetch.java:1339 test path "TLS_ECDHE_RSA_WITH_NULL_SHA",
  4. test/src/test/java/org/bouncycastle/test/est/TestCACertsFetch.java:1341 test path "TLS_ECDH_ECDSA_WITH_NULL_SHA",
  5. test/src/test/java/org/bouncycastle/test/est/TestCACertsFetch.java:1342 test path "TLS_ECDH_RSA_WITH_NULL_SHA",
  6. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:882 test path "TLS_ECDHE_RSA_WITH_NULL_SHA",
  7. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:899 test path "TLS_ECDHE_ECDSA_WITH_NULL_SHA",
  8. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:900 test path "TLS_RSA_WITH_NULL_SHA256",
  9. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:915 test path "TLS_RSA_WITH_NULL_SHA",
  10. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:326 case CipherSuite.TLS_ECDHE_ECDSA_WITH_NULL_SHA:
  11. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:330 case CipherSuite.TLS_ECDHE_RSA_WITH_NULL_SHA:
  12. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:336 case CipherSuite.TLS_RSA_WITH_NULL_SHA:
  13. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:406 case CipherSuite.TLS_RSA_WITH_NULL_SHA256:
  14. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:273 addCipherSuite(cs, "TLS_ECDHE_ECDSA_WITH_NULL_SHA", CipherSuite.TLS_ECDHE_ECDSA_WITH_NULL_SHA);
  15. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:291 addCipherSuite(cs, "TLS_ECDHE_RSA_WITH_NULL_SHA", CipherSuite.TLS_ECDHE_RSA_WITH_NULL_SHA);
  16. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:314 addCipherSuite(cs, "TLS_RSA_WITH_NULL_SHA", CipherSuite.TLS_RSA_WITH_NULL_SHA);
  17. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:315 addCipherSuite(cs, "TLS_RSA_WITH_NULL_SHA256", CipherSuite.TLS_RSA_WITH_NULL_SHA256);
  18. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:21 public static final int TLS_RSA_WITH_NULL_MD5 = 0x0001;
  19. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:22 public static final int TLS_RSA_WITH_NULL_SHA = 0x0002;
  20. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:130 public static final int TLS_ECDH_ECDSA_WITH_NULL_SHA = 0xC001;
  21. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:135 public static final int TLS_ECDHE_ECDSA_WITH_NULL_SHA = 0xC006;
  22. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:140 public static final int TLS_ECDH_RSA_WITH_NULL_SHA = 0xC00B;
  23. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:145 public static final int TLS_ECDHE_RSA_WITH_NULL_SHA = 0xC010;
  24. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:160 public static final int TLS_DHE_PSK_WITH_NULL_SHA = 0x002D;
  25. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:161 public static final int TLS_RSA_PSK_WITH_NULL_SHA = 0x002E;
  26. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:179 public static final int TLS_RSA_WITH_NULL_SHA256 = 0x003B;
  27. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:244 public static final int TLS_DHE_PSK_WITH_NULL_SHA256 = 0x00B4;
  28. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:245 public static final int TLS_DHE_PSK_WITH_NULL_SHA384 = 0x00B5;
  29. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:248 public static final int TLS_RSA_PSK_WITH_NULL_SHA256 = 0x00B8;
  30. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:249 public static final int TLS_RSA_PSK_WITH_NULL_SHA384 = 0x00B9;
  31. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:260 public static final int TLS_ECDHE_PSK_WITH_NULL_SHA = 0xC039;
  32. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:261 public static final int TLS_ECDHE_PSK_WITH_NULL_SHA256 = 0xC03A;
  33. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:262 public static final int TLS_ECDHE_PSK_WITH_NULL_SHA384 = 0xC03B;
  34. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2197 case CipherSuite.TLS_RSA_WITH_NULL_SHA256:
  35. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2289 case CipherSuite.TLS_DHE_PSK_WITH_NULL_SHA384:
  36. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2292 case CipherSuite.TLS_ECDHE_PSK_WITH_NULL_SHA384:
  37. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2298 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA384:
  38. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3080 case CipherSuite.TLS_DHE_PSK_WITH_NULL_SHA:
  39. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3082 case CipherSuite.TLS_ECDH_ECDSA_WITH_NULL_SHA:
  40. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3083 case CipherSuite.TLS_ECDH_RSA_WITH_NULL_SHA:
  41. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3084 case CipherSuite.TLS_ECDHE_ECDSA_WITH_NULL_SHA:
  42. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3085 case CipherSuite.TLS_ECDHE_PSK_WITH_NULL_SHA:
  43. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3086 case CipherSuite.TLS_ECDHE_RSA_WITH_NULL_SHA:
  44. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3088 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA:
  45. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3089 case CipherSuite.TLS_RSA_WITH_NULL_SHA:
  46. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3092 case CipherSuite.TLS_DHE_PSK_WITH_NULL_SHA256:
  47. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3093 case CipherSuite.TLS_ECDHE_PSK_WITH_NULL_SHA256:
  48. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3095 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA256:
  49. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3096 case CipherSuite.TLS_RSA_WITH_NULL_SHA256:
  50. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3099 case CipherSuite.TLS_DHE_PSK_WITH_NULL_SHA384:
  51. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3100 case CipherSuite.TLS_ECDHE_PSK_WITH_NULL_SHA384:
  52. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3102 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA384:
  53. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3281 case CipherSuite.TLS_DHE_PSK_WITH_NULL_SHA:
  54. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3282 case CipherSuite.TLS_DHE_PSK_WITH_NULL_SHA256:
  55. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3283 case CipherSuite.TLS_DHE_PSK_WITH_NULL_SHA384:
  56. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3334 case CipherSuite.TLS_ECDH_ECDSA_WITH_NULL_SHA:
  57. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3352 case CipherSuite.TLS_ECDH_RSA_WITH_NULL_SHA:
  58. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3375 case CipherSuite.TLS_ECDHE_ECDSA_WITH_NULL_SHA:
  59. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3392 case CipherSuite.TLS_ECDHE_PSK_WITH_NULL_SHA:
  60. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3393 case CipherSuite.TLS_ECDHE_PSK_WITH_NULL_SHA256:
  61. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3394 case CipherSuite.TLS_ECDHE_PSK_WITH_NULL_SHA384:
  62. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3413 case CipherSuite.TLS_ECDHE_RSA_WITH_NULL_SHA:
  63. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3478 case CipherSuite.TLS_RSA_WITH_NULL_SHA:
  64. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3479 case CipherSuite.TLS_RSA_WITH_NULL_SHA256:
  65. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3499 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA:
  66. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3500 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA256:
  67. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3501 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA384:
  68. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3689 case CipherSuite.TLS_DHE_PSK_WITH_NULL_SHA:
  69. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3703 case CipherSuite.TLS_ECDH_ECDSA_WITH_NULL_SHA:
  70. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3707 case CipherSuite.TLS_ECDH_RSA_WITH_NULL_SHA:
  71. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3711 case CipherSuite.TLS_ECDHE_ECDSA_WITH_NULL_SHA:
  72. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3715 case CipherSuite.TLS_ECDHE_PSK_WITH_NULL_SHA:
  73. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3719 case CipherSuite.TLS_ECDHE_RSA_WITH_NULL_SHA:
  74. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3727 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA:
  75. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3733 case CipherSuite.TLS_RSA_WITH_NULL_SHA:
  76. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3769 case CipherSuite.TLS_DHE_PSK_WITH_NULL_SHA256:
  77. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3787 case CipherSuite.TLS_ECDHE_PSK_WITH_NULL_SHA256:
  78. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3798 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA256:
  79. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3804 case CipherSuite.TLS_RSA_WITH_NULL_SHA256:
  80. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3814 case CipherSuite.TLS_DHE_PSK_WITH_NULL_SHA384:
  81. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3828 case CipherSuite.TLS_ECDHE_PSK_WITH_NULL_SHA384:
  82. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3839 case CipherSuite.TLS_RSA_PSK_WITH_NULL_SHA384:
  83. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:4043 case CipherSuite.TLS_RSA_WITH_NULL_SHA256:
config.cipher-suite · CWE-757
3DES Already broken 63 places See details

TLS cipher suite named in source

A cipher suite written into the code rather than into a configuration file - `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`, or the OpenSSL spelling `ECDHE-RSA-AES128-GCM-SHA256`. The key exchange is reported, and the bulk cipher separately when it is one of the broken ones.

This code names the exact cryptography its TLS connections may use. Because the list is in the program rather than in a settings file, changing it needs a new release - which is the thing that makes a migration slow.

What to do. A hardcoded suite list ships with the binary and cannot be changed without a release, so move it to configuration first. The key exchange changes when the TLS library offers a hybrid group, not before.

  1. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:892 test path "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
  2. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:895 test path "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
  3. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:901 test path "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
  4. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:917 test path "TLS_RSA_WITH_3DES_EDE_CBC_SHA",
  5. test/src/test/java/org/bouncycastle/test/est/TestEnroll.java:928 test path "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
  6. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:310 case CipherSuite.TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA:
  7. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:315 case CipherSuite.TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
  8. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:323 case CipherSuite.TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:
  9. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:327 case CipherSuite.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:
  10. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:331 case CipherSuite.TLS_RSA_WITH_3DES_EDE_CBC_SHA:
  11. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:208 addCipherSuite(cs, "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA", CipherSuite.TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA);
  12. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:226 addCipherSuite(cs, "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA", CipherSuite.TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA);
  13. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:253 addCipherSuite(cs, "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", CipherSuite.TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA);
  14. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:275 addCipherSuite(cs, "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", CipherSuite.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA);
  15. tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java:293 addCipherSuite(cs, "TLS_RSA_WITH_3DES_EDE_CBC_SHA", CipherSuite.TLS_RSA_WITH_3DES_EDE_CBC_SHA);
  16. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:30 public static final int TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x000A;
  17. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:33 public static final int TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA = 0x000D;
  18. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:36 public static final int TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA = 0x0010;
  19. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:39 public static final int TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = 0x0013;
  20. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:42 public static final int TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x0016;
  21. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:119 public static final int TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA = 0x008F;
  22. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:123 public static final int TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA = 0x0093;
  23. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:132 public static final int TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA = 0xC003;
  24. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:137 public static final int TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA = 0xC008;
  25. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:142 public static final int TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA = 0xC00D;
  26. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:147 public static final int TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA = 0xC012;
  27. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:255 public static final int TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA = 0xC034;
  28. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2775 case CipherSuite.TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA:
  29. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2776 case CipherSuite.TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA:
  30. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2777 case CipherSuite.TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA:
  31. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2778 case CipherSuite.TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA:
  32. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2779 case CipherSuite.TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
  33. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2781 case CipherSuite.TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA:
  34. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2782 case CipherSuite.TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA:
  35. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2783 case CipherSuite.TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:
  36. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2784 case CipherSuite.TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA:
  37. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2785 case CipherSuite.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:
  38. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2787 case CipherSuite.TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA:
  39. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:2788 case CipherSuite.TLS_RSA_WITH_3DES_EDE_CBC_SHA:
  40. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3203 case CipherSuite.TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA:
  41. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3223 case CipherSuite.TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA:
  42. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3243 case CipherSuite.TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA:
  43. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3263 case CipherSuite.TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA:
  44. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3288 case CipherSuite.TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
  45. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3319 case CipherSuite.TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA:
  46. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3337 case CipherSuite.TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA:
  47. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3355 case CipherSuite.TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:
  48. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3378 case CipherSuite.TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA:
  49. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3397 case CipherSuite.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:
  50. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3457 case CipherSuite.TLS_RSA_WITH_3DES_EDE_CBC_SHA:
  51. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3483 case CipherSuite.TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA:
  52. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3668 case CipherSuite.TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA:
  53. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3674 case CipherSuite.TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA:
  54. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3680 case CipherSuite.TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA:
  55. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3686 case CipherSuite.TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA:
  56. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3690 case CipherSuite.TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
  57. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3700 case CipherSuite.TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA:
  58. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3704 case CipherSuite.TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA:
  59. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3708 case CipherSuite.TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:
  60. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3712 case CipherSuite.TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA:
  61. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3716 case CipherSuite.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:
  62. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3720 case CipherSuite.TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA:
  63. tls/src/main/java/org/bouncycastle/tls/TlsUtils.java:3728 case CipherSuite.TLS_RSA_WITH_3DES_EDE_CBC_SHA:
config.cipher-suite · CWE-757
SHA-1 Already broken 57 places See details

Hash algorithm through the JCA

`MessageDigest.getInstance()`. MD5 and SHA-1 are reported as already broken; SHA-256 is reported as a reduced margin rather than a defect.

This is already unsafe today, with no quantum computer involved. SHAttered and subsequent work produced practical collisions; NIST withdrew SHA-1 in 2030 guidance and it is already unacceptable for signatures.

What to do. SHA-256 as the floor, SHA-384 where the digest protects something that must remain verifiable for decades.

  1. mail/src/test/java/org/bouncycastle/mail/smime/test/MailGeneralTest.java:387 test path MessageDigest dig = MessageDigest.getInstance("SHA1", BC);
  2. mail/src/test/java/org/bouncycastle/mail/smime/test/MailGeneralTest.java:491 test path MessageDigest dig = MessageDigest.getInstance("SHA1", BC);
  3. mail/src/test/java/org/bouncycastle/mail/smime/test/NewSMIMEAuthEnvelopedTest.java:220 test path MessageDigest dig = MessageDigest.getInstance("SHA1", BC);
  4. mail/src/test/java/org/bouncycastle/mail/smime/test/NewSMIMEEnvelopedTest.java:285 test path MessageDigest dig = MessageDigest.getInstance("SHA1", BC);
  5. mail/src/test/java/org/bouncycastle/mail/smime/test/NewSMIMEEnvelopedTest.java:389 test path MessageDigest dig = MessageDigest.getInstance("SHA1", BC);
  6. mail/src/test/java/org/bouncycastle/mail/smime/test/NewSMIMESignedTest.java:407 test path MessageDigest dig = MessageDigest.getInstance("SHA1", BC);
  7. pg/src/main/java/org/bouncycastle/openpgp/operator/jcajce/SHA1PGPDigestCalculator.java:20 digest = MessageDigest.getInstance("SHA1");
  8. pkix/src/main/java/org/bouncycastle/cert/jcajce/JcaX509ExtensionUtils.java:55 super(new SHA1DigestCalculator(MessageDigest.getInstance("SHA1")));
  9. pkix/src/main/jdk1.3/org/bouncycastle/cert/jcajce/JcaX509ExtensionUtils.java:38 super(new SHA1DigestCalculator(MessageDigest.getInstance("SHA1")));
  10. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:172 test path Signature sig = Signature.getInstance("SHA1withRSA", "BC");
  11. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:213 test path Signature sig = Signature.getInstance("SHA1withRSA", "BC");
  12. pkix/src/test/java/org/bouncycastle/cms/test/BcSignedDataTest.java:576 test path MessageDigest sha1 = MessageDigest.getInstance("SHA1", BC);
  13. pkix/src/test/java/org/bouncycastle/cms/test/BcSignedDataTest.java:616 test path MessageDigest sha1 = MessageDigest.getInstance("SHA1", BC);
  14. pkix/src/test/java/org/bouncycastle/cms/test/BcSignedDataTest.java:763 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  15. pkix/src/test/java/org/bouncycastle/cms/test/BcSignedDataTest.java:792 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  16. pkix/src/test/java/org/bouncycastle/cms/test/BcSignedDataTest.java:848 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  17. pkix/src/test/java/org/bouncycastle/cms/test/BcSignedDataTest.java:856 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  18. pkix/src/test/java/org/bouncycastle/cms/test/BcSignedDataTest.java:900 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  19. pkix/src/test/java/org/bouncycastle/cms/test/BcSignedDataTest.java:947 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  20. pkix/src/test/java/org/bouncycastle/cms/test/MiscDataStreamTest.java:243 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  21. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataStreamTest.java:377 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  22. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataStreamTest.java:413 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  23. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataStreamTest.java:463 test path MessageDigest md1 = MessageDigest.getInstance("SHA1", BC);
  24. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataStreamTest.java:854 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  25. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataStreamTest.java:932 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  26. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataStreamTest.java:1015 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  27. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataStreamTest.java:1069 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  28. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataTest.java:1083 test path MessageDigest sha1 = MessageDigest.getInstance("SHA1", BC);
  29. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataTest.java:1321 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  30. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataTest.java:1412 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  31. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataTest.java:1441 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  32. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataTest.java:1484 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  33. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataTest.java:1500 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  34. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataTest.java:1846 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  35. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataTest.java:1896 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  36. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataTest.java:2071 test path MessageDigest md = MessageDigest.getInstance("SHA1", BC);
  37. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataTest.java:3812 test path Signature sig = Signature.getInstance("SHA1withRSA", BC);
  38. pkix/src/test/java/org/bouncycastle/cms/test/NullProviderTest.java:155 test path MessageDigest md = MessageDigest.getInstance("SHA1");
  39. pkix/src/test/java/org/bouncycastle/cms/test/SunProviderTest.java:157 test path MessageDigest md = MessageDigest.getInstance("SHA1", "SUN");
  40. pkix/src/test/java/org/bouncycastle/tsp/test/ERSTest.java:1079 test path MessageDigest sha1 = MessageDigest.getInstance("SHA1");
  41. prov/src/test/java/org/bouncycastle/jce/provider/test/HMacTest.java:156 test path mac = Mac.getInstance("HmacSHA1", "BC");
  42. prov/src/test/java/org/bouncycastle/jce/provider/test/PSSTest.java:111 test path Signature s = Signature.getInstance("SHA1withRSA/PSS", "BC");
  43. prov/src/test/java/org/bouncycastle/jce/provider/test/SigTest.java:43 test path MessageDigest sha1 = MessageDigest.getInstance("SHA1", "BC");
  44. prov/src/test/java/org/bouncycastle/jce/provider/test/SigTest.java:64 test path Signature verifier = Signature.getInstance("SHA1WithRSA", "BC");
  45. prov/src/test/java/org/bouncycastle/jce/provider/test/SigTest.java:221 test path sig = Signature.getInstance("SHA1WithRSA/ISO9796-2", "BC");
  46. prov/src/test/java/org/bouncycastle/jce/provider/test/SigTest.java:480 test path Signature signer = Signature.getInstance("SHA1withRSA/X9.31", "BC");
  47. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/PSSTest.java:75 test path Signature s = Signature.getInstance("SHA1withRSA/PSS", "BC");
  48. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/SigTest.java:43 test path MessageDigest sha1 = MessageDigest.getInstance("SHA1", "BC");
  49. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/SigTest.java:64 test path Signature verifier = Signature.getInstance("SHA1WithRSA", "BC");
  50. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/SigTest.java:221 test path sig = Signature.getInstance("SHA1WithRSA/ISO9796-2", "BC");
  51. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/SigTest.java:473 test path Signature signer = Signature.getInstance("SHA1withRSA/X9.31", "BC");
  52. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/PSSTest.java:80 test path Signature s = Signature.getInstance("SHA1withRSA/PSS", "BC");
  53. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/SigTest.java:43 test path MessageDigest sha1 = MessageDigest.getInstance("SHA1", "BC");
  54. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/SigTest.java:64 test path Signature verifier = Signature.getInstance("SHA1WithRSA", "BC");
  55. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/SigTest.java:221 test path sig = Signature.getInstance("SHA1WithRSA/ISO9796-2", "BC");
  56. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/SigTest.java:473 test path Signature signer = Signature.getInstance("SHA1withRSA/X9.31", "BC");
  57. tls/src/test/java/org/bouncycastle/jsse/provider/test/TestUtils.java:744 test path MessageDigest calc = MessageDigest.getInstance("SHA1");
java.messagedigest · CWE-328
RSA-1024512-bit Already broken Recorded traffic 52 places See details

Classical key pair generated through the JCA

`KeyPairGenerator.getInstance()` with a classical algorithm. The concrete family and, where an `initialize()` call is close enough to read, the key size are resolved from the source and reported on the finding.

This is already unsafe today, with no quantum computer involved. A modulus of 1024 bits or less is below the NIST SP 800-57 floor and is within reach of classical factorisation. Shor is not the nearest problem here.

What to do. Generate the classical key alongside an ML-KEM or ML-DSA key and carry both until relying parties accept the post-quantum one.

  1. pg/src/test/java/org/bouncycastle/openpgp/test/BcPGPKeyRingTest.java:1998 test path KeyPairGenerator rsaKpg = KeyPairGenerator.getInstance("RSA", "BC");
  2. pg/src/test/java/org/bouncycastle/openpgp/test/PGPKeyRingTest.java:2611 test path KeyPairGenerator rsaKpg = KeyPairGenerator.getInstance("RSA", "BC");
  3. pg/src/test/jdk1.1/org/bouncycastle/openpgp/test/BcPGPKeyRingTest.java:1996 test path KeyPairGenerator rsaKpg = KeyPairGenerator.getInstance("RSA", "BC");
  4. pg/src/test/jdk1.1/org/bouncycastle/openpgp/test/PGPKeyRingTest.java:2169 test path KeyPairGenerator rsaKpg = KeyPairGenerator.getInstance("RSA", "BC");
  5. pkix/src/test/java/org/bouncycastle/cert/cmp/test/AllTests.java:126 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  6. pkix/src/test/java/org/bouncycastle/cert/cmp/test/AllTests.java:154 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  7. pkix/src/test/java/org/bouncycastle/cert/cmp/test/AllTests.java:180 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  8. pkix/src/test/java/org/bouncycastle/cert/cmp/test/AllTests.java:208 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  9. pkix/src/test/java/org/bouncycastle/cert/cmp/test/AllTests.java:272 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  10. pkix/src/test/java/org/bouncycastle/cert/cmp/test/AllTests.java:305 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  11. pkix/src/test/java/org/bouncycastle/cert/cmp/test/AllTests.java:376 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  12. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:155 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  13. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:189 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  14. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:234 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  15. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:338 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  16. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:416 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  17. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:440 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  18. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:468 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  19. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:508 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  20. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:560 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  21. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:651 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  22. pkix/src/test/java/org/bouncycastle/cert/crmf/test/AllTests.java:673 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  23. pkix/src/test/java/org/bouncycastle/cert/test/CertPathLoopTest.java:147 test path kpg = KeyPairGenerator.getInstance("RSA");
  24. pkix/src/test/java/org/bouncycastle/cms/test/NullProviderTest.java:243 test path KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "SunRsaSign");
  25. pkix/src/test/java/org/bouncycastle/cms/test/SunProviderTest.java:246 test path KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "SunRsaSign");
  26. pkix/src/test/jdk1.3/org/bouncycastle/cert/crmf/test/AllTests.java:133 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  27. pkix/src/test/jdk1.3/org/bouncycastle/cert/crmf/test/AllTests.java:180 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  28. pkix/src/test/jdk1.3/org/bouncycastle/cert/crmf/test/AllTests.java:218 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  29. pkix/src/test/jdk1.3/org/bouncycastle/cert/crmf/test/AllTests.java:258 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  30. pkix/src/test/jdk1.3/org/bouncycastle/cert/crmf/test/AllTests.java:290 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  31. pkix/src/test/jdk1.3/org/bouncycastle/cert/crmf/test/AllTests.java:312 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  32. pkix/src/test/jdk1.4/org/bouncycastle/cert/crmf/test/AllTests.java:112 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  33. pkix/src/test/jdk1.4/org/bouncycastle/cert/crmf/test/AllTests.java:166 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  34. pkix/src/test/jdk1.4/org/bouncycastle/cert/crmf/test/AllTests.java:221 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  35. pkix/src/test/jdk1.4/org/bouncycastle/cert/crmf/test/AllTests.java:261 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  36. pkix/src/test/jdk1.4/org/bouncycastle/cert/crmf/test/AllTests.java:313 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  37. pkix/src/test/jdk1.4/org/bouncycastle/cert/crmf/test/AllTests.java:345 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  38. pkix/src/test/jdk1.4/org/bouncycastle/cert/crmf/test/AllTests.java:367 test path KeyPairGenerator kGen = KeyPairGenerator.getInstance("RSA", BC);
  39. prov/src/test/java/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:538 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  40. prov/src/test/java/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:724 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  41. prov/src/test/java/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:965 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  42. prov/src/test/java/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:1067 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  43. prov/src/test/java/org/bouncycastle/jce/provider/test/ECDSA5Test.java:925 test path kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  44. prov/src/test/java/org/bouncycastle/jce/provider/test/EncryptedPrivateKeyInfoTest.java:36 test path KeyPairGenerator fact = KeyPairGenerator.getInstance("RSA", "BC");
  45. prov/src/test/java/org/bouncycastle/jce/provider/test/EncryptedPrivateKeyInfoTest.java:129 test path KeyPairGenerator fact = KeyPairGenerator.getInstance("RSA", "BC");
  46. prov/src/test/java/org/bouncycastle/jce/provider/test/PKCS12StoreTest.java:2358 test path KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", BC);
  47. prov/src/test/java/org/bouncycastle/jce/provider/test/WrapTest.java:28 test path KeyPairGenerator fact = KeyPairGenerator.getInstance("RSA", "BC");
  48. prov/src/test/jdk1.1/org/bouncycastle/jce/provider/test/PKCS10CertRequestTest.java:36 test path KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
  49. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:201 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  50. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:358 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  51. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:201 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  52. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:358 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
java.keypairgenerator · CWE-327
RSA-10241024-bit Already broken Recorded traffic 32 places See details

Classical key pair generated through the JCA

`KeyPairGenerator.getInstance()` with a classical algorithm. The concrete family and, where an `initialize()` call is close enough to read, the key size are resolved from the source and reported on the finding.

This is already unsafe today, with no quantum computer involved. A modulus of 1024 bits or less is below the NIST SP 800-57 floor and is within reach of classical factorisation. Shor is not the nearest problem here.

What to do. Generate the classical key alongside an ML-KEM or ML-DSA key and carry both until relying parties accept the post-quantum one.

  1. mail/src/test/java/org/bouncycastle/mail/smime/test/CMSTestUtil.java:121 test path kpg = KeyPairGenerator.getInstance("RSA", "BC");
  2. mail/src/test/java/org/bouncycastle/mail/smime/test/CMSTestUtil.java:124 test path kpg = KeyPairGenerator.getInstance("RSA", "BC");
  3. mail/src/test/java/org/bouncycastle/mail/smime/test/JournalingSecureRandomEncryptTest.java:76 test path KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
  4. misc/src/main/java/org/bouncycastle/mail/smime/examples/CreateLargeSignedMail.java:96 test path KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
  5. misc/src/main/java/org/bouncycastle/mail/smime/examples/CreateSignedMail.java:113 test path KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
  6. misc/src/main/java/org/bouncycastle/mail/smime/examples/CreateSignedMultipartMail.java:93 test path KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
  7. misc/src/main/java/org/bouncycastle/mail/smime/examples/ValidateSignedMail.java:343 test path KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
  8. pg/src/test/java/org/bouncycastle/openpgp/test/OperatorBcTest.java:302 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  9. pg/src/test/java/org/bouncycastle/openpgp/test/OperatorJcajceTest.java:274 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  10. pg/src/test/java/org/bouncycastle/openpgp/test/OperatorJcajceTest.java:399 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  11. pg/src/test/java/org/bouncycastle/openpgp/test/PGPKeyRingTest.java:3170 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  12. pg/src/test/java/org/bouncycastle/openpgp/test/PGPRSATest.java:900 test path KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
  13. pg/src/test/java/org/bouncycastle/openpgp/test/PGPRSATest.java:1250 test path KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
  14. pg/src/test/jdk1.1/org/bouncycastle/openpgp/test/PGPKeyRingTest.java:2690 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  15. pkix/src/test/java/org/bouncycastle/cert/ocsp/test/OCSPTestUtil.java:58 test path kpg = KeyPairGenerator.getInstance("RSA", "BC");
  16. pkix/src/test/java/org/bouncycastle/cert/test/IndirectCRLSignerTest.java:68 test path kpg = KeyPairGenerator.getInstance("RSA", "BC");
  17. pkix/src/test/java/org/bouncycastle/cert/test/PKCS10Test.java:479 test path KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA", "BC");
  18. pkix/src/test/java/org/bouncycastle/cms/test/CMSTestUtil.java:161 test path kpg = KeyPairGenerator.getInstance("RSA", "BC");
  19. pkix/src/test/java/org/bouncycastle/eac/test/AllTests.java:192 test path KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA",BC);
  20. pkix/src/test/java/org/bouncycastle/openssl/test/AllTests.java:82 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  21. pkix/src/test/java/org/bouncycastle/openssl/test/AllTests.java:242 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  22. pkix/src/test/java/org/bouncycastle/pkix/test/IDPRelativeNameTest.java:120 test path KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
  23. pkix/src/test/java/org/bouncycastle/tsp/test/TSPTestUtil.java:68 test path kpg = KeyPairGenerator.getInstance("RSA", "BC");
  24. pkix/src/test/jdk1.1/org/bouncycastle/cert/test/PKCS10Test.java:283 test path KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA", "BC");
  25. pkix/src/test/jdk1.3/org/bouncycastle/cert/test/PKCS10Test.java:420 test path KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA", "BC");
  26. prov/src/test/java/org/bouncycastle/jce/provider/test/DSTU4145Test.java:50 test path KeyPairGenerator rsaKeyGen = KeyPairGenerator.getInstance("RSA", "BC");
  27. prov/src/test/java/org/bouncycastle/jce/provider/test/KeyStoreTest.java:192 test path KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA", "BC");
  28. prov/src/test/java/org/bouncycastle/jce/provider/test/PKCS10CertRequestTest.java:413 test path KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA", "BC");
  29. prov/src/test/java/org/bouncycastle/jce/provider/test/RSATest.java:888 test path KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA", "BC");
  30. prov/src/test/java/org/bouncycastle/jce/provider/test/TestUtils.java:196 test path KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
  31. prov/src/test/jdk1.1/org/bouncycastle/jce/provider/test/KeyStoreTest.java:45 test path KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA", "BC");
  32. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/RSATest.java:399 test path KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA", "BC");
java.keypairgenerator · CWE-327
RSA-10241024-bit Already broken 31 places See details

X.509 certificate

A PEM certificate. The subject public-key algorithm and key size are read from the SubjectPublicKeyInfo structure, and the not-after date is reported so certificates that outlive the migration window are visible.

This is a digital identity document. Its expiry date matters: one valid for many years locks in today's algorithms for that long.

What to do. Shorten certificate lifetimes so re-issuing with a post-quantum key is routine.

  1. mail/src/test/resources/org/bouncycastle/mail/smime/test/cert.pem:51 test path -----BEGIN CERTIFICATE-----
  2. mail/src/test/resources/org/bouncycastle/mail/smime/test/certpath_end1.crt:1 test path -----BEGIN CERTIFICATE-----
  3. mail/src/test/resources/org/bouncycastle/mail/smime/test/certpath_end2.crt:1 test path -----BEGIN CERTIFICATE-----
  4. mail/src/test/resources/org/bouncycastle/mail/smime/test/certpath_inter1.crt:1 test path -----BEGIN CERTIFICATE-----
  5. mail/src/test/resources/org/bouncycastle/mail/smime/test/certpath_inter2.crt:1 test path -----BEGIN CERTIFICATE-----
  6. mail/src/test/resources/org/bouncycastle/mail/smime/test/certpath_root.crt:1 test path -----BEGIN CERTIFICATE-----
  7. mail/src/test/resources/org/bouncycastle/mail/smime/test/dotnet_enc_cert.pem:1 test path -----BEGIN CERTIFICATE-----
  8. mail/src/test/resources/org/bouncycastle/mail/smime/test/validator.fakeRoot.crt:1 test path -----BEGIN CERTIFICATE-----
  9. mail/src/test/resources/org/bouncycastle/mail/smime/test/validator.root.crt:1 test path -----BEGIN CERTIFICATE-----
  10. pkix/src/test/resources/org/bouncycastle/est/test/san/cert_cn_match_wc.pem:35 test path -----BEGIN CERTIFICATE-----
  11. pkix/src/test/resources/org/bouncycastle/est/test/san/cert_cn_mismatch.pem:35 test path -----BEGIN CERTIFICATE-----
  12. pkix/src/test/resources/org/bouncycastle/est/test/san/cert_cn_mismatch_ip.pem:35 test path -----BEGIN CERTIFICATE-----
  13. pkix/src/test/resources/org/bouncycastle/est/test/san/cert_cn_mismatch_wc.pem:35 test path -----BEGIN CERTIFICATE-----
  14. pkix/src/test/resources/org/bouncycastle/est/test/san/cert_san_match.pem:37 test path -----BEGIN CERTIFICATE-----
  15. pkix/src/test/resources/org/bouncycastle/est/test/san/cert_san_match_ip.pem:37 test path -----BEGIN CERTIFICATE-----
  16. pkix/src/test/resources/org/bouncycastle/est/test/san/cert_san_match_wc.pem:37 test path -----BEGIN CERTIFICATE-----
  17. pkix/src/test/resources/org/bouncycastle/est/test/san/cert_san_mismatch.pem:37 test path -----BEGIN CERTIFICATE-----
  18. pkix/src/test/resources/org/bouncycastle/est/test/san/cert_san_mismatch_ip.pem:37 test path -----BEGIN CERTIFICATE-----
  19. pkix/src/test/resources/org/bouncycastle/est/test/san/cert_san_mismatch_wc.pem:37 test path -----BEGIN CERTIFICATE-----
  20. pkix/src/test/resources/org/bouncycastle/mime/test/cert.pem:51 test path -----BEGIN CERTIFICATE-----
  21. pkix/src/test/resources/org/bouncycastle/openssl/test/test.pem:56 test path -----BEGIN CERTIFICATE-----
  22. test/cisco/san/cert_cn_match_wc.pem:35 test path -----BEGIN CERTIFICATE-----
  23. test/cisco/san/cert_cn_mismatch.pem:35 test path -----BEGIN CERTIFICATE-----
  24. test/cisco/san/cert_cn_mismatch_ip.pem:35 test path -----BEGIN CERTIFICATE-----
  25. test/cisco/san/cert_cn_mismatch_wc.pem:35 test path -----BEGIN CERTIFICATE-----
  26. test/cisco/san/cert_san_match.pem:37 test path -----BEGIN CERTIFICATE-----
  27. test/cisco/san/cert_san_match_ip.pem:37 test path -----BEGIN CERTIFICATE-----
  28. test/cisco/san/cert_san_match_wc.pem:37 test path -----BEGIN CERTIFICATE-----
  29. test/cisco/san/cert_san_mismatch.pem:37 test path -----BEGIN CERTIFICATE-----
  30. test/cisco/san/cert_san_mismatch_ip.pem:37 test path -----BEGIN CERTIFICATE-----
  31. test/cisco/san/cert_san_mismatch_wc.pem:37 test path -----BEGIN CERTIFICATE-----
pem.certificate
RSAES-PKCS1v15 Already broken Recorded traffic 26 places See details

Cipher transformation named away from the call

A JCA transformation string - `algorithm/mode/padding` - written somewhere other than a `getInstance()` argument, which is how a codebase that centralises its cryptography passes the choice to a helper. The string is unambiguous wherever it appears: nothing but a transformation is spelled that way.

This names an encryption method as text, and passes it to code elsewhere that does the work. It is the same choice, made in a different place.

What to do. The same migration applies as to the call that consumes it. Move the constant and the call together, so the inventory keeps naming the algorithm after the change.

  1. pg/src/main/java/org/bouncycastle/openpgp/operator/jcajce/OperatorHelper.java:171 return createCipher("RSA/ECB/PKCS1Padding");
  2. pg/src/main/jdk1.1/org/bouncycastle/openpgp/operator/jcajce/OperatorHelper.java:358 return createCipher("RSA/ECB/PKCS1Padding");
  3. pg/src/main/jdk1.4/org/bouncycastle/openpgp/operator/jcajce/OperatorHelper.java:282 return createCipher("RSA/ECB/PKCS1Padding");
  4. pkix/src/main/java/org/bouncycastle/cert/crmf/jcajce/CRMFHelper.java:70 CIPHER_ALG_NAMES.put(new ASN1ObjectIdentifier(PKCSObjectIdentifiers.rsaEncryption.getId()), "RSA/ECB/PKCS1Padding");
  5. pkix/src/main/java/org/bouncycastle/cms/jcajce/CMSUtils.java:57 asymmetricWrapperAlgNames.put(PKCSObjectIdentifiers.rsaEncryption, "RSA/ECB/PKCS1Padding");
  6. pkix/src/main/java/org/bouncycastle/cms/jcajce/CMSUtils.java:243 if (cipherName.equals("RSA/ECB/PKCS1Padding"))
  7. pkix/src/main/java/org/bouncycastle/cms/jcajce/CMSUtils.java:247 return helper.createCipher("RSA/NONE/PKCS1Padding");
  8. pkix/src/main/java/org/bouncycastle/cms/jcajce/EnvelopedDataHelper.java:107 CIPHER_ALG_NAMES.put(PKCSObjectIdentifiers.rsaEncryption, "RSA/ECB/PKCS1Padding");
  9. pkix/src/main/java/org/bouncycastle/operator/jcajce/OperatorHelper.java:77 asymmetricWrapperAlgNames.put(PKCSObjectIdentifiers.rsaEncryption, "RSA/ECB/PKCS1Padding");
  10. pkix/src/main/java/org/bouncycastle/operator/jcajce/OperatorHelper.java:261 if (cipherName.equals("RSA/ECB/PKCS1Padding"))
  11. pkix/src/main/java/org/bouncycastle/operator/jcajce/OperatorHelper.java:265 return helper.createCipher("RSA/NONE/PKCS1Padding");
  12. pkix/src/main/jdk1.1/org/bouncycastle/cert/crmf/jcajce/CRMFHelper.java:72 CIPHER_ALG_NAMES.put(new ASN1ObjectIdentifier(PKCSObjectIdentifiers.rsaEncryption.getId()), "RSA/ECB/PKCS1Padding");
  13. pkix/src/main/jdk1.1/org/bouncycastle/cms/jcajce/CMSUtils.java:83 asymmetricWrapperAlgNames.put(PKCSObjectIdentifiers.rsaEncryption, "RSA/ECB/PKCS1Padding");
  14. pkix/src/main/jdk1.1/org/bouncycastle/cms/jcajce/CMSUtils.java:256 if (cipherName.equals("RSA/ECB/PKCS1Padding"))
  15. pkix/src/main/jdk1.1/org/bouncycastle/cms/jcajce/CMSUtils.java:260 return helper.createCipher("RSA/NONE/PKCS1Padding");
  16. pkix/src/main/jdk1.1/org/bouncycastle/cms/jcajce/EnvelopedDataHelper.java:82 CIPHER_ALG_NAMES.put(PKCSObjectIdentifiers.rsaEncryption, "RSA/ECB/PKCS1Padding");
  17. pkix/src/main/jdk1.1/org/bouncycastle/operator/jcajce/OperatorHelper.java:100 asymmetricWrapperAlgNames.put(PKCSObjectIdentifiers.rsaEncryption, "RSA/ECB/PKCS1Padding");
  18. pkix/src/main/jdk1.1/org/bouncycastle/operator/jcajce/OperatorHelper.java:175 if (cipherName.equals("RSA/ECB/PKCS1Padding"))
  19. pkix/src/main/jdk1.1/org/bouncycastle/operator/jcajce/OperatorHelper.java:179 return helper.createCipher("RSA/NONE/PKCS1Padding");
  20. pkix/src/main/jdk1.3/org/bouncycastle/operator/jcajce/OperatorHelper.java:112 asymmetricWrapperAlgNames.put(PKCSObjectIdentifiers.rsaEncryption, "RSA/ECB/PKCS1Padding");
  21. pkix/src/main/jdk1.3/org/bouncycastle/operator/jcajce/OperatorHelper.java:269 if (cipherName.equals("RSA/ECB/PKCS1Padding"))
  22. pkix/src/main/jdk1.3/org/bouncycastle/operator/jcajce/OperatorHelper.java:273 return helper.createCipher("RSA/NONE/PKCS1Padding");
  23. tls/src/main/java/org/bouncycastle/tls/crypto/impl/jcajce/JcaTlsCrypto.java:137 return getHelper().createCipher("RSA/NONE/PKCS1Padding");
  24. tls/src/main/java/org/bouncycastle/tls/crypto/impl/jcajce/JcaTlsCrypto.java:141 return getHelper().createCipher("RSA/ECB/PKCS1Padding"); // try old style
  25. tls/src/main/jdk1.4/org/bouncycastle/tls/crypto/impl/jcajce/JcaTlsCrypto.java:137 return getHelper().createCipher("RSA/NONE/PKCS1Padding");
  26. tls/src/main/jdk1.4/org/bouncycastle/tls/crypto/impl/jcajce/JcaTlsCrypto.java:141 return getHelper().createCipher("RSA/ECB/PKCS1Padding"); // try old style
java.transformation · CWE-327
3DES Already broken 23 places See details

Key material constructed for a named algorithm

`new SecretKeySpec(bytes, "AES")` and the other key-spec constructors name the algorithm as an argument rather than through `getInstance()`. Code that wraps raw bytes into a key this way often never calls `getInstance()` at all, so the algorithm is invisible to a scan that only looks at the factories.

This wraps raw bytes into a key for a named algorithm. It is part of the same migration as whatever uses that key.

What to do. Wherever this key is used, the same migration applies as to the call that consumes it. Trace it to the operation and treat the two together.

  1. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:322 return new DESedeKeySpec(longKey);
  2. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:326 return new DESedeKeySpec(bytes);
  3. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:345 return new SecretKeySpec(desKeySpec.getKey(), "DESede");
  4. prov/src/main/jdk1.3/org/bouncycastle/jce/provider/JCESecretKeyFactory.java:252 return new DESedeKeySpec(longKey);
  5. prov/src/main/jdk1.3/org/bouncycastle/jce/provider/JCESecretKeyFactory.java:256 return new DESedeKeySpec(bytes);
  6. prov/src/main/jdk1.3/org/bouncycastle/jce/provider/JCESecretKeyFactory.java:275 return new SecretKeySpec(desKeySpec.getKey(), "DESede");
  7. prov/src/test/java/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:754 test path SecretKeySpec edeKey = new SecretKeySpec(Hex.decode("010102020404070708080b0b0d0d0e0e"), "DESede");
  8. prov/src/test/java/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:803 test path SecretKeySpec edeKey = new SecretKeySpec(Hex.decode("010102020404070708080b0b0d0d0e0e"), "DESede");
  9. prov/src/test/java/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:847 test path SecretKeySpec edeKey1 = new SecretKeySpec(Hex.decode("010102020404070708080b0b0d0d0e0e"), "DESede");
  10. prov/src/test/java/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:848 test path SecretKeySpec edeKey2 = new SecretKeySpec(Hex.decode("010102020404070708080b0b0d0d0e0e"), "TripleDES");
  11. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1308 test path ks = (KeySpec)new DESedeKeySpec(bb);
  12. prov/src/test/java/org/bouncycastle/jce/provider/test/CMacTest.java:263 test path key = new SecretKeySpec(keyBytes128, "DESede");
  13. prov/src/test/java/org/bouncycastle/jce/provider/test/MacTest.java:131 test path key = new SecretKeySpec(keyBytesISO9797, "DESEDE");
  14. prov/src/test/java/org/bouncycastle/jce/provider/test/MacTest.java:149 test path key = new SecretKeySpec(keyBytesISO9797, "DESEDE");
  15. prov/src/test/java/org/bouncycastle/jce/provider/test/MacTest.java:164 test path aliasTest(new SecretKeySpec(keyBytesISO9797, "DESede"), "DESedeMac64withISO7816-4Padding",
  16. prov/src/test/java/org/bouncycastle/jce/provider/test/MacTest.java:167 test path aliasTest(new SecretKeySpec(keyBytesISO9797, "DESede"), "ISO9797ALG3WITHISO7816-4PADDING",
  17. prov/src/test/java/org/bouncycastle/jce/provider/test/PKCS12SecretKeyStoreTest.java:429 test path roundTripSingleSecretKey("3des", new SecretKeySpec(keyBytes, "DESede"));
  18. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:388 test path SecretKeySpec edeKey = new SecretKeySpec(Hex.decode("010102020404070708080b0b0d0d0e0e"), "DESede");
  19. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:437 test path SecretKeySpec edeKey1 = new SecretKeySpec(Hex.decode("010102020404070708080b0b0d0d0e0e"), "DESede");
  20. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:438 test path SecretKeySpec edeKey2 = new SecretKeySpec(Hex.decode("010102020404070708080b0b0d0d0e0e"), "TripleDES");
  21. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:388 test path SecretKeySpec edeKey = new SecretKeySpec(Hex.decode("010102020404070708080b0b0d0d0e0e"), "DESede");
  22. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:437 test path SecretKeySpec edeKey1 = new SecretKeySpec(Hex.decode("010102020404070708080b0b0d0d0e0e"), "DESede");
  23. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/BCFKSStoreTest.java:438 test path SecretKeySpec edeKey2 = new SecretKeySpec(Hex.decode("010102020404070708080b0b0d0d0e0e"), "TripleDES");
java.keyspec · CWE-327
DES Already broken 22 places See details

Cipher transformation named away from the call

A JCA transformation string - `algorithm/mode/padding` - written somewhere other than a `getInstance()` argument, which is how a codebase that centralises its cryptography passes the choice to a helper. The string is unambiguous wherever it appears: nothing but a transformation is spelled that way.

This names an encryption method as text, and passes it to code elsewhere that does the work. It is the same choice, made in a different place.

What to do. The same migration applies as to the call that consumes it. Move the constant and the call together, so the inventory keeps naming the algorithm after the change.

  1. pkix/src/main/java/org/bouncycastle/cms/jcajce/EnvelopedDataHelper.java:101 CIPHER_ALG_NAMES.put(CMSAlgorithm.DES_CBC, "DES/CBC/PKCS5Padding");
  2. pkix/src/main/jdk1.1/org/bouncycastle/cms/jcajce/EnvelopedDataHelper.java:76 CIPHER_ALG_NAMES.put(CMSAlgorithm.DES_CBC, "DES/CBC/PKCS5Padding");
  3. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:105 test path "DES/CBC/NoPadding",
  4. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:123 test path "DES/CBC/PKCS5Padding",
  5. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:125 test path "DES/CBC/ISO10126Padding",
  6. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:171 test path "DES/CBC/ZeroBytePadding",
  7. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:239 test path "DES/OFB/NoPadding",
  8. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:283 test path "DES/CFB/NoPadding",
  9. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:305 test path "DES/CFB8/NoPadding",
  10. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:335 test path "DES/CTR/NoPadding",
  11. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:395 test path "DES/ECB/TBCPadding",
  12. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:405 test path "DES/CBC/TBCPadding",
  13. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:415 test path "DES/CFB8/NoPadding",
  14. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:445 test path "DES/CFB64/NoPadding",
  15. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:447 test path "DES/CTR/NoPadding",
  16. prov/src/test/java/org/bouncycastle/jce/provider/test/CipherStreamTest.java:435 test path runTest("DES/ECB/PKCS7Padding");
  17. prov/src/test/java/org/bouncycastle/jce/provider/test/CipherStreamTest.java:436 test path runTest("DES/CFB8/NoPadding");
  18. prov/src/test/java/org/bouncycastle/jce/provider/test/DoFinalTest.java:139 test path result = checkCipher("DES/CBC/PKCS5Padding");
  19. prov/src/test/java/org/bouncycastle/jce/provider/test/FIPSDESTest.java:34 test path "DES/ECB/NoPadding",
  20. prov/src/test/java/org/bouncycastle/jce/provider/test/FIPSDESTest.java:36 test path "DES/CBC/NoPadding",
  21. prov/src/test/java/org/bouncycastle/jce/provider/test/FIPSDESTest.java:38 test path "DES/CFB/NoPadding",
  22. prov/src/test/java/org/bouncycastle/jce/provider/test/FIPSDESTest.java:44 test path "DES/CFB8/NoPadding",
java.transformation · CWE-327
Blowfish Already broken 19 places See details

Cipher transformation named away from the call

A JCA transformation string - `algorithm/mode/padding` - written somewhere other than a `getInstance()` argument, which is how a codebase that centralises its cryptography passes the choice to a helper. The string is unambiguous wherever it appears: nothing but a transformation is spelled that way.

This names an encryption method as text, and passes it to code elsewhere that does the work. It is the same choice, made in a different place.

What to do. The same migration applies as to the call that consumes it. Move the constant and the call together, so the inventory keeps naming the algorithm after the change.

  1. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:111 test path "Blowfish/CBC/NoPadding",
  2. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:121 test path "IDEA/CBC/NoPadding",
  3. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:135 test path "Blowfish/CBC/PKCS7Padding",
  4. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:147 test path "IDEA/CBC/PKCS7Padding",
  5. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:149 test path "IDEA/CBC/ISO10126Padding",
  6. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:169 test path "IDEA/CBC/PKCS7Padding",
  7. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:233 test path "Blowfish/CTR/NoPadding",
  8. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:245 test path "Blowfish/OFB/NoPadding",
  9. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:259 test path "IDEA/OFB/NoPadding",
  10. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:289 test path "Blowfish/CFB/NoPadding",
  11. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:303 test path "IDEA/CFB/NoPadding",
  12. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:311 test path "Blowfish/CFB8/NoPadding",
  13. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:325 test path "IDEA/CFB8/NoPadding",
  14. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:341 test path "Blowfish/CTR/NoPadding",
  15. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:355 test path "IDEA/CTR/NoPadding",
  16. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:381 test path "IDEA/OFB/NoPadding",
  17. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:399 test path "IDEA/ECB/TBCPadding",
  18. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:409 test path "IDEA/CBC/TBCPadding",
  19. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:419 test path "IDEA/CFB8/NoPadding",
java.transformation · CWE-327
DES Already broken 16 places See details

Key material constructed for a named algorithm

`new SecretKeySpec(bytes, "AES")` and the other key-spec constructors name the algorithm as an argument rather than through `getInstance()`. Code that wraps raw bytes into a key this way often never calls `getInstance()` at all, so the algorithm is invisible to a scan that only looks at the factories.

This wraps raw bytes into a key for a named algorithm. It is part of the same migration as whatever uses that key.

What to do. Wherever this key is used, the same migration applies as to the call that consumes it. Trace it to the operation and treat the two together.

  1. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:262 return new DESKeySpec(bytes);
  2. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:280 return new SecretKeySpec(desKeySpec.getKey(), "DES");
  3. prov/src/main/jdk1.3/org/bouncycastle/jce/provider/JCESecretKeyFactory.java:206 return new SecretKeySpec(desKeySpec.getKey(), "DES");
  4. prov/src/test/java/org/bouncycastle/jcajce/provider/test/RFC3211WrapTest.java:25 test path private static final Key KEY_DES = new SecretKeySpec(Hex.decode("8ccbbc15340b46c7cee6e5b6d6b6bc3e08ea38b55d3e08d9"), "DES");
  5. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1386 test path SecretKeySpec cipherKey = new SecretKeySpec(rawDESKey, "DES");
  6. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1415 test path SecretKeySpec cipherKey = new SecretKeySpec(rawDESKey, "DES");
  7. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1440 test path SecretKeySpec cipherKey = new SecretKeySpec(rawDESKey, "DES");
  8. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1467 test path SecretKeySpec cipherKey = new SecretKeySpec(rawDESKey, "DES");
  9. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1499 test path SecretKeySpec cipherKey = new SecretKeySpec(rawDESKey, "DES");
  10. prov/src/test/java/org/bouncycastle/jce/provider/test/FIPSDESTest.java:73 test path key = new SecretKeySpec(Hex.decode("0123456789abcdef"), "DES");
  11. prov/src/test/java/org/bouncycastle/jce/provider/test/MacTest.java:78 test path SecretKey key = new SecretKeySpec(keyBytes, "DES");
  12. prov/src/test/java/org/bouncycastle/jce/provider/test/MacTest.java:170 test path aliasTest(new SecretKeySpec(keyBytes, "DES"), "DES64",
  13. prov/src/test/java/org/bouncycastle/jce/provider/test/PBETest.java:749 test path new SecretKeySpec(Hex.decode("30e69252758e5346"), "DES"),
  14. prov/src/test/java/org/bouncycastle/jce/provider/test/PBETest.java:790 test path new SecretKeySpec(Hex.decode("732f2d33c801732b7206756cbd44f9c1c103ddd97c7cbe8e"), "DES"),
  15. prov/src/test/jdk1.5/org/bouncycastle/jce/provider/test/PBETest.java:540 test path new SecretKeySpec(Hex.decode("30e69252758e5346"), "DES"),
  16. prov/src/test/jdk1.5/org/bouncycastle/jce/provider/test/PBETest.java:581 test path new SecretKeySpec(Hex.decode("732f2d33c801732b7206756cbd44f9c1c103ddd97c7cbe8e"), "DES"),
java.keyspec · CWE-327
DES Already broken 15 places See details

Classical public-key cipher through the JCA

`Cipher.getInstance()` with a transformation whose algorithm component is a public-key or legacy symmetric cipher. The transformation string is parsed into algorithm, mode and padding, so `RSA/ECB/PKCS1Padding` is separated from `RSA/ECB/OAEPWithSHA-256AndMGF1Padding`.

This is already unsafe today, with no quantum computer involved. A 56-bit key is brute-forced classically in hours.

What to do. For RSA encryption, move to ML-KEM-768 and keep RSA-OAEP only as the classical half of a hybrid during transition.

  1. prov/src/test/java/org/bouncycastle/jcajce/provider/test/CryptoServiceConstraintsTest.java:43 test path Cipher.getInstance("DES", new BouncyCastleProvider());
  2. prov/src/test/java/org/bouncycastle/jcajce/provider/test/CryptoServiceConstraintsTest.java:63 test path Cipher.getInstance("DES", new BouncyCastleProvider());
  3. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1388 test path Cipher cipher = Cipher.getInstance("DES/CBC/NoPadding", "BC");
  4. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1416 test path Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding", "BC");
  5. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1441 test path Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding", "BC");
  6. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1468 test path Cipher ecipher = Cipher.getInstance("DES/ECB/PKCS5Padding", "BC");
  7. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1500 test path Cipher ecipher = Cipher.getInstance("DES/ECB/PKCS5Padding", "BC");
  8. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1528 test path KeyGenerator keyGen = KeyGenerator.getInstance("DES", "BC");
  9. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1593 test path Cipher c = Cipher.getInstance("DES", "BC");
  10. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1626 test path Cipher c = Cipher.getInstance("DES", "BC");
  11. prov/src/test/java/org/bouncycastle/jce/provider/test/PBETest.java:746 test path Cipher cEnc = Cipher.getInstance("DES/CBC/PKCS7Padding", "BC");
  12. prov/src/test/java/org/bouncycastle/jce/provider/test/SealedTest.java:30 test path KeyGenerator keyGen = KeyGenerator.getInstance("DES", provider);
  13. prov/src/test/java/org/bouncycastle/jce/provider/test/SealedTest.java:32 test path Cipher c = Cipher.getInstance("DES/ECB/PKCS5Padding", provider);
  14. prov/src/test/java/org/bouncycastle/jce/provider/test/WrapTest.java:36 test path KeyGenerator keyGen = KeyGenerator.getInstance("DES", "BC");
  15. prov/src/test/jdk1.5/org/bouncycastle/jce/provider/test/PBETest.java:537 test path Cipher cEnc = Cipher.getInstance("DES/CBC/PKCS7Padding", "BC");
java.cipher · CWE-327
3DES Already broken 14 places See details

Cipher transformation named away from the call

A JCA transformation string - `algorithm/mode/padding` - written somewhere other than a `getInstance()` argument, which is how a codebase that centralises its cryptography passes the choice to a helper. The string is unambiguous wherever it appears: nothing but a transformation is spelled that way.

This names an encryption method as text, and passes it to code elsewhere that does the work. It is the same choice, made in a different place.

What to do. The same migration applies as to the call that consumes it. Move the constant and the call together, so the inventory keeps naming the algorithm after the change.

  1. pkix/src/main/java/org/bouncycastle/cert/crmf/jcajce/CRMFHelper.java:66 CIPHER_ALG_NAMES.put(CMSAlgorithm.DES_EDE3_CBC, "DESEDE/CBC/PKCS5Padding");
  2. pkix/src/main/java/org/bouncycastle/cms/jcajce/EnvelopedDataHelper.java:103 CIPHER_ALG_NAMES.put(CMSAlgorithm.DES_EDE3_CBC, "DESEDE/CBC/PKCS5Padding");
  3. pkix/src/main/java/org/bouncycastle/openssl/jcajce/PEMUtilities.java:95 CIPHER_NAMES.put(PKCSObjectIdentifiers.des_EDE3_CBC, "DESEDE/CBC/PKCS5Padding");
  4. pkix/src/main/jdk1.1/org/bouncycastle/cert/crmf/jcajce/CRMFHelper.java:68 CIPHER_ALG_NAMES.put(CMSAlgorithm.DES_EDE3_CBC, "DESEDE/CBC/PKCS5Padding");
  5. pkix/src/main/jdk1.1/org/bouncycastle/cms/jcajce/EnvelopedDataHelper.java:78 CIPHER_ALG_NAMES.put(CMSAlgorithm.DES_EDE3_CBC, "DESEDE/CBC/PKCS5Padding");
  6. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:107 test path "DESede/CBC/NoPadding",
  7. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:131 test path "DESede/CBC/PKCS7Padding",
  8. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:241 test path "DESede/OFB/NoPadding",
  9. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:285 test path "DESede/CFB/NoPadding",
  10. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:307 test path "DESede/CFB8/NoPadding",
  11. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:337 test path "DESede/CTR/NoPadding",
  12. tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java:456 return "DESede/CBC/NoPadding";
  13. tls/src/main/java/org/bouncycastle/tls/crypto/impl/jcajce/JcaTlsCrypto.java:1157 return Boolean.valueOf(isUsableCipher("DESede/CBC/NoPadding", 192));
  14. tls/src/main/jdk1.4/org/bouncycastle/tls/crypto/impl/jcajce/JcaTlsCrypto.java:1149 return Boolean.valueOf(isUsableCipher("DESede/CBC/NoPadding", 192));
java.transformation · CWE-327
RC4 Already broken 13 places See details

Cipher transformation named away from the call

A JCA transformation string - `algorithm/mode/padding` - written somewhere other than a `getInstance()` argument, which is how a codebase that centralises its cryptography passes the choice to a helper. The string is unambiguous wherever it appears: nothing but a transformation is spelled that way.

This names an encryption method as text, and passes it to code elsewhere that does the work. It is the same choice, made in a different place.

What to do. The same migration applies as to the call that consumes it. Move the constant and the call together, so the inventory keeps naming the algorithm after the change.

  1. pkix/src/main/java/org/bouncycastle/cms/jcajce/EnvelopedDataHelper.java:102 CIPHER_ALG_NAMES.put(CMSAlgorithm.RC2_CBC, "RC2/CBC/PKCS5Padding");
  2. pkix/src/main/jdk1.1/org/bouncycastle/cms/jcajce/EnvelopedDataHelper.java:77 CIPHER_ALG_NAMES.put(CMSAlgorithm.RC2_CBC, "RC2/CBC/PKCS5Padding");
  3. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:115 test path "RC2/CBC/NoPadding",
  4. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:139 test path "RC2/CBC/PKCS7Padding",
  5. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:255 test path "RC2/OFB/NoPadding",
  6. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:299 test path "RC2/CFB/NoPadding",
  7. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:321 test path "RC2/CFB8/NoPadding",
  8. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:333 test path "RC2/ECB/TBCPadding",
  9. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:351 test path "RC2/CTR/NoPadding",
  10. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:383 test path "RC2/OFB/NoPadding",
  11. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:401 test path "RC2/ECB/TBCPadding",
  12. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:411 test path "RC2/CBC/TBCPadding",
  13. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:421 test path "RC2/CFB8/NoPadding",
java.transformation · CWE-327
RSAES-PKCS1v15 Already broken Recorded traffic 13 places See details

Classical public-key cipher through the JCA

`Cipher.getInstance()` with a transformation whose algorithm component is a public-key or legacy symmetric cipher. The transformation string is parsed into algorithm, mode and padding, so `RSA/ECB/PKCS1Padding` is separated from `RSA/ECB/OAEPWithSHA-256AndMGF1Padding`.

This is already unsafe today, with no quantum computer involved. PKCS#1 v1.5 encryption padding is vulnerable to Bleichenbacher oracles today, and the underlying RSA is broken by Shor.

What to do. For RSA encryption, move to ML-KEM-768 and keep RSA-OAEP only as the classical half of a hybrid during transition.

  1. pg/src/test/java/org/bouncycastle/openpgp/test/JceExternalPublicKeyDataDecryptorFactoryBuilderTest.java:104 test path Cipher c = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
  2. prov/src/test/java/org/bouncycastle/jce/provider/test/RSATest.java:298 test path c = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
  3. prov/src/test/java/org/bouncycastle/jce/provider/test/RSATest.java:321 test path c = Cipher.getInstance("RSA/NONE/PKCS1Padding", "BC");
  4. prov/src/test/java/org/bouncycastle/jce/provider/test/RSATest.java:892 test path Cipher c = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
  5. prov/src/test/java/org/bouncycastle/jce/provider/test/SigTest.java:44 test path Cipher signer = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
  6. prov/src/test/java/org/bouncycastle/jce/provider/test/SigTest.java:445 test path Cipher c = Cipher.getInstance("RSA/NONE/PKCS1Padding", "BC");
  7. prov/src/test/jdk1.1/org/bouncycastle/jce/provider/test/RSATest.java:115 test path c = Cipher.getInstance("RSA//PKCS1Padding", "BC");
  8. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/SigTest.java:44 test path Cipher signer = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
  9. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/SigTest.java:438 test path Cipher c = Cipher.getInstance("RSA/NONE/PKCS1Padding", "BC");
  10. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/RSATest.java:196 test path c = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
  11. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/RSATest.java:403 test path Cipher c = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
  12. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/SigTest.java:44 test path Cipher signer = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
  13. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/SigTest.java:438 test path Cipher c = Cipher.getInstance("RSA/NONE/PKCS1Padding", "BC");
java.cipher · CWE-327
RC4 Already broken 11 places See details

Classical public-key cipher through the JCA

`Cipher.getInstance()` with a transformation whose algorithm component is a public-key or legacy symmetric cipher. The transformation string is parsed into algorithm, mode and padding, so `RSA/ECB/PKCS1Padding` is separated from `RSA/ECB/OAEPWithSHA-256AndMGF1Padding`.

This is already unsafe today, with no quantum computer involved. RC4 keystream biases break it classically; it is prohibited in TLS by RFC 7465.

What to do. For RSA encryption, move to ML-KEM-768 and keep RSA-OAEP only as the classical half of a hybrid during transition.

  1. mail/src/test/java/org/bouncycastle/mail/smime/test/CMSTestUtil.java:155 test path rc240kg = KeyGenerator.getInstance("RC2", "BC");
  2. mail/src/test/java/org/bouncycastle/mail/smime/test/CMSTestUtil.java:158 test path rc264kg = KeyGenerator.getInstance("RC2", "BC");
  3. pkix/src/test/java/org/bouncycastle/cms/test/CMSTestUtil.java:237 test path rc240kg = KeyGenerator.getInstance("RC2", "BC");
  4. pkix/src/test/java/org/bouncycastle/cms/test/CMSTestUtil.java:240 test path rc264kg = KeyGenerator.getInstance("RC2", "BC");
  5. pkix/src/test/java/org/bouncycastle/tsp/test/TSPTestUtil.java:85 test path rc240kg = KeyGenerator.getInstance("RC2", "BC");
  6. pkix/src/test/java/org/bouncycastle/tsp/test/TSPTestUtil.java:88 test path rc264kg = KeyGenerator.getInstance("RC2", "BC");
  7. prov/src/test/java/org/bouncycastle/jcajce/provider/test/CryptoServiceConstraintsTest.java:33 test path Cipher.getInstance("ARC4", new BouncyCastleProvider());
  8. prov/src/test/java/org/bouncycastle/jce/provider/test/PBETest.java:812 test path cEnc = Cipher.getInstance("RC2/CBC/PKCS7Padding", "BC");
  9. prov/src/test/java/org/bouncycastle/jce/provider/test/PBETest.java:837 test path cEnc = Cipher.getInstance("RC4", "BC");
  10. prov/src/test/jdk1.5/org/bouncycastle/jce/provider/test/PBETest.java:603 test path cEnc = Cipher.getInstance("RC2/CBC/PKCS7Padding", "BC");
  11. prov/src/test/jdk1.5/org/bouncycastle/jce/provider/test/PBETest.java:628 test path cEnc = Cipher.getInstance("RC4", "BC");
java.cipher · CWE-327
3DES Already broken 10 places See details

Classical public-key cipher through the JCA

`Cipher.getInstance()` with a transformation whose algorithm component is a public-key or legacy symmetric cipher. The transformation string is parsed into algorithm, mode and padding, so `RSA/ECB/PKCS1Padding` is separated from `RSA/ECB/OAEPWithSHA-256AndMGF1Padding`.

This is already unsafe today, with no quantum computer involved. Triple DES is withdrawn by NIST and limited by its 64-bit block, independent of quantum.

What to do. For RSA encryption, move to ML-KEM-768 and keep RSA-OAEP only as the classical half of a hybrid during transition.

  1. prov/src/test/java/org/bouncycastle/jcajce/provider/test/CryptoServiceConstraintsTest.java:51 test path Cipher.getInstance("DESede", new BouncyCastleProvider());
  2. prov/src/test/java/org/bouncycastle/jcajce/provider/test/CryptoServiceConstraintsTest.java:73 test path Cipher.getInstance("DESede", new BouncyCastleProvider());
  3. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1281 test path skF = SecretKeyFactory.getInstance("DESede", "BC");
  4. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1336 test path KeyGenerator kg = KeyGenerator.getInstance("DESede", "BC");
  5. prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java:1359 test path skF = SecretKeyFactory.getInstance("DESede", "BC");
  6. prov/src/test/java/org/bouncycastle/jce/provider/test/PBETest.java:787 test path cEnc = Cipher.getInstance("DESede/CBC/PKCS7Padding", "BC");
  7. prov/src/test/java/org/bouncycastle/jce/provider/test/SlotTwoTest.java:30 test path KeyGenerator keyGen = KeyGenerator.getInstance("DESede", "BC");
  8. prov/src/test/java/org/bouncycastle/jce/provider/test/SlotTwoTest.java:53 test path Cipher encrypt = Cipher.getInstance("DESede/" + mode + "/" + padding, "BC");
  9. prov/src/test/java/org/bouncycastle/jce/provider/test/SlotTwoTest.java:54 test path Cipher decrypt = Cipher.getInstance("DESede/" + mode + "/" + padding);
  10. prov/src/test/jdk1.5/org/bouncycastle/jce/provider/test/PBETest.java:578 test path cEnc = Cipher.getInstance("DESede/CBC/PKCS7Padding", "BC");
java.cipher · CWE-327
RC4 Already broken 10 places See details

TLS cipher suite named in source

A cipher suite written into the code rather than into a configuration file - `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`, or the OpenSSL spelling `ECDHE-RSA-AES128-GCM-SHA256`. The key exchange is reported, and the bulk cipher separately when it is one of the broken ones.

This code names the exact cryptography its TLS connections may use. Because the list is in the program rather than in a settings file, changing it needs a new release - which is the thing that makes a migration slow.

What to do. A hardcoded suite list ships with the binary and cannot be changed without a release, so move it to configuration first. The key exchange changes when the TLS library offers a hybrid group, not before.

  1. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:23 public static final int TLS_RSA_EXPORT_WITH_RC4_40_MD5 = 0x0003;
  2. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:24 public static final int TLS_RSA_WITH_RC4_128_MD5 = 0x0004;
  3. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:25 public static final int TLS_RSA_WITH_RC4_128_SHA = 0x0005;
  4. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:118 public static final int TLS_DHE_PSK_WITH_RC4_128_SHA = 0x008E;
  5. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:122 public static final int TLS_RSA_PSK_WITH_RC4_128_SHA = 0x0092;
  6. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:131 public static final int TLS_ECDH_ECDSA_WITH_RC4_128_SHA = 0xC002;
  7. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:136 public static final int TLS_ECDHE_ECDSA_WITH_RC4_128_SHA = 0xC007;
  8. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:141 public static final int TLS_ECDH_RSA_WITH_RC4_128_SHA = 0xC00C;
  9. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:146 public static final int TLS_ECDHE_RSA_WITH_RC4_128_SHA = 0xC011;
  10. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:254 public static final int TLS_ECDHE_PSK_WITH_RC4_128_SHA = 0xC033;
config.cipher-suite · CWE-757
DES Already broken 6 places See details

TLS cipher suite named in source

A cipher suite written into the code rather than into a configuration file - `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`, or the OpenSSL spelling `ECDHE-RSA-AES128-GCM-SHA256`. The key exchange is reported, and the bulk cipher separately when it is one of the broken ones.

This code names the exact cryptography its TLS connections may use. Because the list is in the program rather than in a settings file, changing it needs a new release - which is the thing that makes a migration slow.

What to do. A hardcoded suite list ships with the binary and cannot be changed without a release, so move it to configuration first. The key exchange changes when the TLS library offers a hybrid group, not before.

  1. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:28 public static final int TLS_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0008;
  2. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:29 public static final int TLS_RSA_WITH_DES_CBC_SHA = 0x0009;
  3. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:32 public static final int TLS_DH_DSS_WITH_DES_CBC_SHA = 0x000C;
  4. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:35 public static final int TLS_DH_RSA_WITH_DES_CBC_SHA = 0x000F;
  5. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:38 public static final int TLS_DHE_DSS_WITH_DES_CBC_SHA = 0x0012;
  6. tls/src/main/java/org/bouncycastle/tls/CipherSuite.java:41 public static final int TLS_DHE_RSA_WITH_DES_CBC_SHA = 0x0015;
config.cipher-suite · CWE-757
MD5 Already broken 6 places See details

Hash algorithm through the JCA

`MessageDigest.getInstance()`. MD5 and SHA-1 are reported as already broken; SHA-256 is reported as a reduced margin rather than a defect.

This is already unsafe today, with no quantum computer involved. Practical chosen-prefix collisions exist; MD5 has no remaining security as a digest.

What to do. SHA-256 as the floor, SHA-384 where the digest protects something that must remain verifiable for decades.

  1. pkix/src/test/java/org/bouncycastle/cms/test/BcSignedDataTest.java:577 test path MessageDigest md5 = MessageDigest.getInstance("MD5", BC);
  2. pkix/src/test/java/org/bouncycastle/cms/test/BcSignedDataTest.java:617 test path MessageDigest md5 = MessageDigest.getInstance("MD5", BC);
  3. pkix/src/test/java/org/bouncycastle/cms/test/NewSignedDataTest.java:1084 test path MessageDigest md5 = MessageDigest.getInstance("MD5", BC);
  4. prov/src/test/java/org/bouncycastle/jce/provider/test/SigTest.java:204 test path sig = Signature.getInstance("MD5WithRSA/ISO9796-2", "BC");
  5. prov/src/test/jdk1.3/org/bouncycastle/jce/provider/test/SigTest.java:204 test path sig = Signature.getInstance("MD5WithRSA/ISO9796-2", "BC");
  6. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/SigTest.java:204 test path sig = Signature.getInstance("MD5WithRSA/ISO9796-2", "BC");
java.messagedigest · CWE-328
Blowfish Already broken 4 places See details

Classical public-key cipher through the JCA

`Cipher.getInstance()` with a transformation whose algorithm component is a public-key or legacy symmetric cipher. The transformation string is parsed into algorithm, mode and padding, so `RSA/ECB/PKCS1Padding` is separated from `RSA/ECB/OAEPWithSHA-256AndMGF1Padding`.

This is already unsafe today, with no quantum computer involved. A 64-bit block is vulnerable to birthday attacks on long sessions (Sweet32).

What to do. For RSA encryption, move to ML-KEM-768 and keep RSA-OAEP only as the classical half of a hybrid during transition.

java.cipher · CWE-327
3DES112-bit Already broken 3 places See details

Classical public-key cipher through the JCA

`Cipher.getInstance()` with a transformation whose algorithm component is a public-key or legacy symmetric cipher. The transformation string is parsed into algorithm, mode and padding, so `RSA/ECB/PKCS1Padding` is separated from `RSA/ECB/OAEPWithSHA-256AndMGF1Padding`.

This is already unsafe today, with no quantum computer involved. Triple DES is withdrawn by NIST and limited by its 64-bit block, independent of quantum.

What to do. For RSA encryption, move to ML-KEM-768 and keep RSA-OAEP only as the classical half of a hybrid during transition.

  1. mail/src/test/java/org/bouncycastle/mail/smime/test/CMSTestUtil.java:149 test path desede128kg = KeyGenerator.getInstance("DESEDE", "BC");
  2. pkix/src/test/java/org/bouncycastle/cms/test/CMSTestUtil.java:231 test path desede128kg = KeyGenerator.getInstance("DESEDE", "BC");
  3. pkix/src/test/java/org/bouncycastle/tsp/test/TSPTestUtil.java:79 test path desede128kg = KeyGenerator.getInstance("DESEDE", "BC");
java.cipher · CWE-327
3DES168-bit Already broken 3 places See details

Classical public-key cipher through the JCA

`Cipher.getInstance()` with a transformation whose algorithm component is a public-key or legacy symmetric cipher. The transformation string is parsed into algorithm, mode and padding, so `RSA/ECB/PKCS1Padding` is separated from `RSA/ECB/OAEPWithSHA-256AndMGF1Padding`.

This is already unsafe today, with no quantum computer involved. Triple DES is withdrawn by NIST and limited by its 64-bit block, independent of quantum.

What to do. For RSA encryption, move to ML-KEM-768 and keep RSA-OAEP only as the classical half of a hybrid during transition.

  1. mail/src/test/java/org/bouncycastle/mail/smime/test/CMSTestUtil.java:152 test path desede192kg = KeyGenerator.getInstance("DESEDE", "BC");
  2. pkix/src/test/java/org/bouncycastle/cms/test/CMSTestUtil.java:234 test path desede192kg = KeyGenerator.getInstance("DESEDE", "BC");
  3. pkix/src/test/java/org/bouncycastle/tsp/test/TSPTestUtil.java:82 test path desede192kg = KeyGenerator.getInstance("DESEDE", "BC");
java.cipher · CWE-327
RC4128-bit Already broken 3 places See details

Classical public-key cipher through the JCA

`Cipher.getInstance()` with a transformation whose algorithm component is a public-key or legacy symmetric cipher. The transformation string is parsed into algorithm, mode and padding, so `RSA/ECB/PKCS1Padding` is separated from `RSA/ECB/OAEPWithSHA-256AndMGF1Padding`.

This is already unsafe today, with no quantum computer involved. RC4 keystream biases break it classically; it is prohibited in TLS by RFC 7465.

What to do. For RSA encryption, move to ML-KEM-768 and keep RSA-OAEP only as the classical half of a hybrid during transition.

  1. mail/src/test/java/org/bouncycastle/mail/smime/test/CMSTestUtil.java:161 test path rc2128kg = KeyGenerator.getInstance("RC2", "BC");
  2. pkix/src/test/java/org/bouncycastle/cms/test/CMSTestUtil.java:243 test path rc2128kg = KeyGenerator.getInstance("RC2", "BC");
  3. pkix/src/test/java/org/bouncycastle/tsp/test/TSPTestUtil.java:91 test path rc2128kg = KeyGenerator.getInstance("RC2", "BC");
java.cipher · CWE-327
SHA-1 Already broken 3 places See details

Mask-generation digest named for RSA padding

`MGF1ParameterSpec.SHA256` names the digest inside RSA-OAEP and RSA-PSS padding. It is a separate choice from the digest the signature or the cipher uses, it is frequently left at SHA-1 by default, and a static import of it - `import static java.security.spec.MGF1ParameterSpec.SHA512` - is the only place the choice appears in the file that makes it.

This picks the hash used inside RSA padding. It matters because the default is often SHA-1, which is broken today without any quantum computer.

What to do. The mask-generation digest travels with the RSA key it pads. When that key moves to ML-KEM or ML-DSA the padding goes with it; until then, SHA-256 or better.

  1. prov/src/test/java/org/bouncycastle/jce/provider/test/RSATest.java:550 test path c.init(Cipher.ENCRYPT_MODE, pubKey, new OAEPParameterSpec("SHA1", "MGF1", new MGF1ParameterSpec("SHA1"), new PSource.PSpecified(new byte[] { 1, 2, 3, 4, 5 })), rand);
  2. prov/src/test/java/org/bouncycastle/jce/provider/test/RSATest.java:972 test path bcCipher.init(Cipher.DECRYPT_MODE, privKey, new OAEPParameterSpec(digest, "MGF1", MGF1ParameterSpec.SHA1, PSource.PSpecified.DEFAULT));
  3. prov/src/test/java/org/bouncycastle/jce/provider/test/RSATest.java:981 test path bcCipher.init(Cipher.ENCRYPT_MODE, pubKey, new OAEPParameterSpec(digest, "MGF1", MGF1ParameterSpec.SHA1, PSource.PSpecified.DEFAULT));
java.mgf1 · CWE-327
MD5 Already broken 2 places See details

Mask-generation digest named for RSA padding

`MGF1ParameterSpec.SHA256` names the digest inside RSA-OAEP and RSA-PSS padding. It is a separate choice from the digest the signature or the cipher uses, it is frequently left at SHA-1 by default, and a static import of it - `import static java.security.spec.MGF1ParameterSpec.SHA512` - is the only place the choice appears in the file that makes it.

This picks the hash used inside RSA padding. It matters because the default is often SHA-1, which is broken today without any quantum computer.

What to do. The mask-generation digest travels with the RSA key it pads. When that key moves to ML-KEM or ML-DSA the padding goes with it; until then, SHA-256 or better.

  1. prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/elgamal/CipherSpi.java:161 initFromSpec(new OAEPParameterSpec("MD5", "MGF1", new MGF1ParameterSpec("MD5"), PSource.PSpecified.DEFAULT));
  2. prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java:222 initFromSpec(new OAEPParameterSpec("MD5", "MGF1", new MGF1ParameterSpec("MD5"), PSource.PSpecified.DEFAULT));
java.mgf1 · CWE-327
RC4 Already broken 2 places See details

Key material constructed for a named algorithm

`new SecretKeySpec(bytes, "AES")` and the other key-spec constructors name the algorithm as an argument rather than through `getInstance()`. Code that wraps raw bytes into a key this way often never calls `getInstance()` at all, so the algorithm is invisible to a scan that only looks at the factories.

This wraps raw bytes into a key for a named algorithm. It is part of the same migration as whatever uses that key.

What to do. Wherever this key is used, the same migration applies as to the call that consumes it. Trace it to the operation and treat the two together.

  1. prov/src/test/java/org/bouncycastle/jce/provider/test/PBETest.java:840 test path new SecretKeySpec(Hex.decode("732f2d33c801732b7206756cbd44f9c1"), "RC4"));
  2. prov/src/test/jdk1.5/org/bouncycastle/jce/provider/test/PBETest.java:631 test path new SecretKeySpec(Hex.decode("732f2d33c801732b7206756cbd44f9c1"), "RC4"));
java.keyspec · CWE-327
RSA-10241024-bit Already broken 2 places See details

Certificate signing request

A PKCS#10 certificate signing request. The public key it carries is read from the CertificationRequestInfo, so the algorithm and size are reported even though nothing has been issued yet.

This is an application for a digital identity document, not the document itself. It names the key that will be certified, so it shows what is about to be committed to.

What to do. Decide the key algorithm before the request is signed - a request is the last point at which changing it costs nothing.

  1. pkix/src/test/resources/org/bouncycastle/openssl/test/test.pem:34 test path -----BEGIN CERTIFICATE REQUEST-----
  2. pkix/src/test/resources/org/bouncycastle/openssl/test/test.pem:45 test path -----BEGIN NEW CERTIFICATE REQUEST-----
pem.certificate-request
RSA-1024768-bit Already broken Recorded traffic 2 places See details

Classical key pair generated through the JCA

`KeyPairGenerator.getInstance()` with a classical algorithm. The concrete family and, where an `initialize()` call is close enough to read, the key size are resolved from the source and reported on the finding.

This is already unsafe today, with no quantum computer involved. A modulus of 1024 bits or less is below the NIST SP 800-57 floor and is within reach of classical factorisation. Shor is not the nearest problem here.

What to do. Generate the classical key alongside an ML-KEM or ML-DSA key and carry both until relying parties accept the post-quantum one.

  1. prov/src/test/java/org/bouncycastle/jce/provider/test/RSATest.java:613 test path KeyPairGenerator.getInstance("RSA", "BC");
  2. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/RSATest.java:365 test path KeyPairGenerator.getInstance("RSA", "BC");
java.keypairgenerator · CWE-327
SHA-1 Already broken From a constant 2 places See details

Classical public-key cipher through the JCA

`Cipher.getInstance()` with a transformation whose algorithm component is a public-key or legacy symmetric cipher. The transformation string is parsed into algorithm, mode and padding, so `RSA/ECB/PKCS1Padding` is separated from `RSA/ECB/OAEPWithSHA-256AndMGF1Padding`.

This is already unsafe today, with no quantum computer involved. SHAttered and subsequent work produced practical collisions; NIST withdrew SHA-1 in 2030 guidance and it is already unacceptable for signatures.

What to do. For RSA encryption, move to ML-KEM-768 and keep RSA-OAEP only as the classical half of a hybrid during transition.

  1. prov/src/test/java/org/bouncycastle/jce/provider/test/PBETest.java:1052 test path SecretKeyFactory.getInstance("PBKDF2WITHHMACSHA1", provider);
  2. prov/src/test/jdk1.5/org/bouncycastle/jce/provider/test/PBETest.java:790 test path SecretKeyFactory.getInstance("PBKDF2WITHHMACSHA1", provider);
java.cipher · CWE-327
DES512-bit Already broken 1 place See details

Classical public-key cipher through the JCA

`Cipher.getInstance()` with a transformation whose algorithm component is a public-key or legacy symmetric cipher. The transformation string is parsed into algorithm, mode and padding, so `RSA/ECB/PKCS1Padding` is separated from `RSA/ECB/OAEPWithSHA-256AndMGF1Padding`.

This is already unsafe today, with no quantum computer involved. A 56-bit key is brute-forced classically in hours.

What to do. For RSA encryption, move to ML-KEM-768 and keep RSA-OAEP only as the classical half of a hybrid during transition.

  1. prov/src/test/java/org/bouncycastle/jce/provider/test/WrapTest.java:27 test path Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding", "BC");
java.cipher · CWE-327
SHA-1 Already broken 1 place See details

Algorithm named in a setting

A setting whose name says it holds an algorithm, given a literal that names one: `withOaepPaddingDigestAlgorithm("SHA-512")`, `signatureAlgorithm = "SHA256withRSA"`, `"digestAlgorithm": "SHA-256"`. The algorithm never reaches a `getInstance()` in this file - it is carried to one somewhere else, often through configuration - so a scan that only reads the factories cannot see it at all.

Something here is configured to use a named algorithm. The code that uses it may be somewhere else entirely, but this is the line that decides which algorithm it is.

What to do. Find what consumes the setting. The migration belongs to that operation; this line is where the choice is actually written down, and usually where it is easiest to change.

  1. prov/src/test/jdk1.1/org/bouncycastle/jce/provider/test/CertTest.java:990 test path certGen.setSignatureAlgorithm("ECDSAwithSHA1");
config.algorithm-setting · CWE-327
SHA-1 Already broken 353 places See details

Digest through BouncyCastle

A BouncyCastle digest class. The digest name is read from the class, so `MD5Digest` and `SHA512Digest` are the same rule with opposite conclusions.

This is already unsafe today, with no quantum computer involved. SHAttered and subsequent work produced practical collisions; NIST withdrew SHA-1 in 2030 guidance and it is already unacceptable for signatures.

What to do. SHA-256 as the floor, SHA-384 where the digest protects something long-lived. MD5 and SHA-1 need replacing now.

  1. core/src/main/j2me/java/security/SecureRandom.java:22 private static final RandomGenerator sha1Generator = new DigestRandomGenerator(new SHA1Digest());
  2. core/src/main/java/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java:141 Digest digest = new SHA1Digest();
  3. core/src/main/java/org/bouncycastle/crypto/digests/SHA1Digest.java:15 public class SHA1Digest
  4. core/src/main/java/org/bouncycastle/crypto/digests/SHA1Digest.java:29 public SHA1Digest()
  5. core/src/main/java/org/bouncycastle/crypto/digests/SHA1Digest.java:37 public SHA1Digest(CryptoServicePurpose purpose)
  6. core/src/main/java/org/bouncycastle/crypto/digests/SHA1Digest.java:50 public SHA1Digest(SHA1Digest t)
  7. core/src/main/java/org/bouncycastle/crypto/digests/SHA1Digest.java:64 public SHA1Digest(byte[] encodedState)
  8. core/src/main/java/org/bouncycastle/crypto/digests/SHA1Digest.java:83 private void copyIn(SHA1Digest t)
  9. core/src/main/java/org/bouncycastle/crypto/digests/SHA1Digest.java:327 return new SHA1Digest(this);
  10. core/src/main/java/org/bouncycastle/crypto/digests/SHA1Digest.java:332 SHA1Digest d = (SHA1Digest)other;
  11. core/src/main/java/org/bouncycastle/crypto/digests/SHA1InterleaveDigest.java:82 SHA1Digest sha = new SHA1Digest();
  12. core/src/main/java/org/bouncycastle/crypto/generators/DSAParametersGenerator.java:131 if (!(digest instanceof SHA1Digest))
  13. core/src/main/java/org/bouncycastle/crypto/util/DigestFactory.java:43 return new SHA1Digest((SHA1Digest)original);
  14. core/src/main/java/org/bouncycastle/crypto/util/DigestFactory.java:132 return new SHA1Digest();
  15. core/src/main/java/org/bouncycastle/crypto/util/DigestFactory.java:137 return new SHA1Digest(CryptoServicePurpose.PRF);
  16. core/src/test/j2me/org/bouncycastle/crypto/test/RSATest.java:198 test path AsymmetricBlockCipher cipher = new OAEPEncoding(rsaEngine, new SHA1Digest(), new SHA1Digest(), message);
  17. core/src/test/java/org/bouncycastle/asn1/test/GenerationTest.java:491 test path Digest digest = new SHA1Digest();
  18. core/src/test/java/org/bouncycastle/crypto/agreement/owl/OwlUtilTest.java:235 test path Digest digest2 = new SHA1Digest();
  19. core/src/test/java/org/bouncycastle/crypto/agreement/test/ECJPAKEUtilTest.java:158 test path Digest digest2 = new SHA1Digest();
  20. core/src/test/java/org/bouncycastle/crypto/agreement/test/JPAKEUtilTest.java:340 test path Digest digest2 = new SHA1Digest();
  21. core/src/test/java/org/bouncycastle/crypto/prng/test/DualECDRBGTest.java:368 test path d = new DualECSP800DRBG(new SHA1Digest(), 256, new SHA256EntropyProvider().get(256), null, null);
  22. core/src/test/java/org/bouncycastle/crypto/prng/test/HMacDRBGTest.java:34 test path new SHA1Digest(),
  23. core/src/test/java/org/bouncycastle/crypto/prng/test/HMacDRBGTest.java:45 test path new SHA1Digest(),
  24. core/src/test/java/org/bouncycastle/crypto/prng/test/HMacDRBGTest.java:57 test path new SHA1Digest(),
  25. core/src/test/java/org/bouncycastle/crypto/prng/test/HMacDRBGTest.java:70 test path new SHA1Digest(),
  26. core/src/test/java/org/bouncycastle/crypto/prng/test/HMacDRBGTest.java:81 test path new SHA1Digest(),
  27. core/src/test/java/org/bouncycastle/crypto/prng/test/HMacDRBGTest.java:93 test path new SHA1Digest(),
  28. core/src/test/java/org/bouncycastle/crypto/prng/test/HashDRBGTest.java:33 test path new SHA1Digest(),
  29. core/src/test/java/org/bouncycastle/crypto/prng/test/HashDRBGTest.java:45 test path new SHA1Digest(),
  30. core/src/test/java/org/bouncycastle/crypto/prng/test/HashDRBGTest.java:57 test path new SHA1Digest(),
  31. core/src/test/java/org/bouncycastle/crypto/prng/test/HashDRBGTest.java:70 test path new SHA1Digest(),
  32. core/src/test/java/org/bouncycastle/crypto/prng/test/HashDRBGTest.java:81 test path new SHA1Digest(),
  33. core/src/test/java/org/bouncycastle/crypto/prng/test/HashDRBGTest.java:93 test path new SHA1Digest(),
  34. core/src/test/java/org/bouncycastle/crypto/prng/test/HashDRBGTest.java:393 test path d = new HashSP800DRBG(new SHA1Digest(), 256, new SHA256EntropyProvider().get(256), null, null);
  35. core/src/test/java/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:30 test path new SHA1Digest(),
  36. core/src/test/java/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:46 test path new SHA1Digest(),
  37. core/src/test/java/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:96 test path new SHA1Digest(),
  38. core/src/test/java/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:112 test path new SHA1Digest(),
  39. core/src/test/java/org/bouncycastle/crypto/test/AsymmetricConstraintsTest.java:892 test path KDF2BytesGenerator kdf = new KDF2BytesGenerator(new SHA1Digest());
  40. core/src/test/java/org/bouncycastle/crypto/test/AsymmetricConstraintsTest.java:925 test path KDF2BytesGenerator kdf = new KDF2BytesGenerator(new SHA1Digest());
  41. core/src/test/java/org/bouncycastle/crypto/test/ConcatenationKDFTest.java:40 test path implKDFTest(new SHA1Digest(), sharedSecret, otherInfo, expected);
  42. core/src/test/java/org/bouncycastle/crypto/test/DHKEKGeneratorTest.java:42 test path checkMask(1, new DHKEKGenerator(new SHA1Digest()), new DHKDFParameters(alg1, 192, seed1), result1);
  43. core/src/test/java/org/bouncycastle/crypto/test/DHKEKGeneratorTest.java:43 test path checkMask(2, new DHKEKGenerator(new SHA1Digest()), new DHKDFParameters(alg2, 128, seed2, partyAInfo), result2);
  44. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:52 test path doTestHMACDetDSASample(new SHA1Digest(), privKey, new BigInteger("2E1A0C2562B2912CAAF89186FB0F42001585DA55", 16), new BigInteger("29EFB6B0AFF2D7A68EB70CA313022253B9A88DF5", 16));
  45. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:58 test path doTestHMACDetDSATest(new SHA1Digest(), privKey, new BigInteger("42AB2052FD43E123F0607F115052A67DCD9C5C77", 16), new BigInteger("183916B0230D45B9931491D4C6B0BD2FB4AAF088", 16));
  46. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:90 test path doTestHMACDetDSASample(new SHA1Digest(), privKey, new BigInteger("3A1B2DBD7489D6ED7E608FD036C83AF396E290DBD602408E8677DAABD6E7445A", 16), new BigInteger("D26FCBA19FA3E3058FFC02CA1596CDBB6E0D20CB37B06054F7E36DED0CDBBCCF", 16));
  47. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:96 test path doTestHMACDetDSATest(new SHA1Digest(), privKey, new BigInteger("C18270A93CFC6063F57A4DFA86024F700D980E4CF4E2CB65A504397273D98EA0", 16), new BigInteger("414F22E5F31A8B6D33295C7539C1C1BA3A6160D7D68D50AC0D3A5BEAC2884FAA", 16));
  48. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:121 test path doTestHMACDetECDSASample(new SHA1Digest(), privKey, new BigInteger("98C6BD12B23EAF5E2A2045132086BE3EB8EBD62ABF6698FF", 16), new BigInteger("57A22B07DEA9530F8DE9471B1DC6624472E8E2844BC25B64", 16));
  49. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:127 test path doTestHMACDetECDSATest(new SHA1Digest(), privKey, new BigInteger("0F2141A0EBBC44D2E1AF90A50EBCFCE5E197B3B7D4DE036D", 16), new BigInteger("EB18BC9E1F3D7387500CB99CF5F7C157070A8961E38700B7", 16));
  50. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:143 test path doTestHMACDetECDSASample(new SHA1Digest(), privKey, new BigInteger("22226F9D40A96E19C4A301CE5B74B115303C0F3A4FD30FC257FB57AC", 16), new BigInteger("66D1CDD83E3AF75605DD6E2FEFF196D30AA7ED7A2EDF7AF475403D69", 16));
  51. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:149 test path doTestHMACDetECDSATest(new SHA1Digest(), privKey, new BigInteger("DEAA646EC2AF2EA8AD53ED66B2E2DDAA49A12EFD8356561451F3E21C", 16), new BigInteger("95987796F6CF2062AB8135271DE56AE55366C045F6D9593F53787BD2", 16));
  52. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:160 test path doTestHMACDetECDSASample(new SHA1Digest(), privKey, new BigInteger("61340C88C3AAEBEB4F6D667F672CA9759A6CCAA9FA8811313039EE4A35471D32", 16), new BigInteger("6D7F147DAC089441BB2E2FE8F7A3FA264B9C475098FDCF6E00D7C996E1B8B7EB", 16));
  53. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:166 test path doTestHMACDetECDSATest(new SHA1Digest(), privKey, new BigInteger("0CBCC86FD6ABD1D99E703E1EC50069EE5C0B4BA4B9AC60E409E8EC5910D81A89", 16), new BigInteger("01B9D7B73DFAA60D5651EC4591A0136F87653E0FD780C3B1BC872FFDEAE479B1", 16));
  54. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:178 test path doTestHMACDetECDSASample(new SHA1Digest(), privKey, new BigInteger("EC748D839243D6FBEF4FC5C4859A7DFFD7F3ABDDF72014540C16D73309834FA3" +
  55. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:199 test path doTestHMACDetECDSATest(new SHA1Digest(), privKey, new BigInteger("4BC35D3A50EF4E30576F58CD96CE6BF638025EE624004A1F7789A8B8E43D0678" +
  56. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:227 test path doTestHMACDetECDSASample(new SHA1Digest(), privKey, new BigInteger("0343B6EC45728975EA5CBA6659BBB6062A5FF89EEA58BE3C80B619F322C87910" +
  57. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:258 test path doTestHMACDetECDSATest(new SHA1Digest(), privKey, new BigInteger("13BAD9F29ABE20DE37EBEB823C252CA0F63361284015A3BF430A46AAA80B87B0" +
  58. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:294 test path doTestHMACDetECDSASample(new SHA1Digest(), privKey, new BigInteger("153FEBD179A69B6122DEBF5BC61EB947B24C93526", 16), new BigInteger("37AC9C670F8CF18045049BAE7DD35553545C19E49", 16));
  59. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:300 test path doTestHMACDetECDSATest(new SHA1Digest(), privKey, new BigInteger("256D4079C6C7169B8BC92529D701776A269D56308", 16), new BigInteger("341D3FFEC9F1EB6A6ACBE88E3C86A1C8FDEB8B8E1", 16));
  60. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:311 test path doTestHMACDetECDSASample(new SHA1Digest(), privKey, new BigInteger("015CC6FD78BB06E0878E71465515EA5A21A2C18E6FC77B4B158DBEB3944", 16), new BigInteger("0822A4A6C2EB2DF213A5E90BF40377956365EE8C4B4A5A4E2EB9270CB6A", 16));
  61. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:317 test path doTestHMACDetECDSATest(new SHA1Digest(), privKey, new BigInteger("02F1FEDC57BE203E4C8C6B8C1CEB35E13C1FCD956AB41E3BD4C8A6EFB1F", 16), new BigInteger("05738EC8A8EDEA8E435EE7266AD3EDE1EEFC2CEBE2BE1D614008D5D2951", 16));
  62. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:328 test path doTestHMACDetECDSASample(new SHA1Digest(), privKey, new BigInteger("201E18D48C6DB3D5D097C4DCE1E25587E1501FC3CF47BDB5B4289D79E273D6A9" +
  63. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:344 test path doTestHMACDetECDSATest(new SHA1Digest(), privKey, new BigInteger("05A408133919F2CDCDBE5E4C14FBC706C1F71BADAFEF41F5DE4EC27272FC1CA9" +
  64. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:365 test path doTestHMACDetECDSASample(new SHA1Digest(), privKey, new BigInteger("0D8783188E1A540E2022D389E1D35B32F56F8C2BB5636B8ABF7718806B27A713" +
  65. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:381 test path doTestHMACDetECDSATest(new SHA1Digest(), privKey, new BigInteger("049F54E7C10D2732B4638473053782C6919218BBEFCEC8B51640FC193E832291" +
  66. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:404 test path doTestHMACDetECDSASample(new SHA1Digest(), privKey, new BigInteger("147D3EB0EDA9F2152DFD014363D6A9CE816D7A1467D326A625FC4AB0C786E1B7" +
  67. core/src/test/java/org/bouncycastle/crypto/test/DeterministicDSATest.java:438 test path doTestHMACDetECDSATest(new SHA1Digest(), privKey, new BigInteger("133F5414F2A9BC41466D339B79376038A64D045E5B0F792A98E5A7AA87E0AD01" +
  68. core/src/test/java/org/bouncycastle/crypto/test/DigestConstraintsTest.java:136 test path new SHA1Digest();
  69. core/src/test/java/org/bouncycastle/crypto/test/DigestConstraintsTest.java:144 test path new SHA1Digest(CryptoServicePurpose.PRF);
  70. core/src/test/java/org/bouncycastle/crypto/test/DigestRandomNumberTest.java:131 test path doExpectedTest(new SHA1Digest(), 0, expected0SHA1, noCycle0SHA1);
  71. core/src/test/java/org/bouncycastle/crypto/test/DigestRandomNumberTest.java:134 test path doExpectedTest(new SHA1Digest(), 100, expected100SHA1);
  72. core/src/test/java/org/bouncycastle/crypto/test/DigestRandomNumberTest.java:137 test path doExpectedTest(new SHA1Digest(), ZERO_SEED, expected0SHA1);
  73. core/src/test/java/org/bouncycastle/crypto/test/DigestRandomNumberTest.java:140 test path doExpectedTest(new SHA1Digest(), TEST_SEED, expectedTestSHA1);
  74. core/src/test/java/org/bouncycastle/crypto/test/DigestRandomNumberTest.java:143 test path doCountTest(new SHA1Digest(), TEST_SEED, sha1Xors);
  75. core/src/test/java/org/bouncycastle/crypto/test/ECDHKEKGeneratorTest.java:42 test path checkMask(1, new ECDHKEKGenerator(new SHA1Digest()), new DHKDFParameters(alg1, 256, seed1), result1);
  76. core/src/test/java/org/bouncycastle/crypto/test/ECDHKEKGeneratorTest.java:43 test path checkMask(2, new ECDHKEKGenerator(new SHA1Digest()), new DHKDFParameters(alg2, 128, seed2), result2);
  77. core/src/test/java/org/bouncycastle/crypto/test/ECDHKEKGeneratorTest.java:44 test path checkMask(3, new ECDHKEKGenerator(new SHA1Digest()), new DHKDFParameters(alg3, 192, seed3), result3);
  78. core/src/test/java/org/bouncycastle/crypto/test/ECIESKeyEncapsulationTest.java:47 test path KDF2BytesGenerator kdf = new KDF2BytesGenerator(new SHA1Digest());
  79. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:95 test path new KDF2BytesGenerator(new SHA1Digest()),
  80. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:96 test path new HMac(new SHA1Digest()));
  81. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:99 test path new KDF2BytesGenerator(new SHA1Digest()),
  82. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:100 test path new HMac(new SHA1Digest()));
  83. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:133 test path new KDF2BytesGenerator(new SHA1Digest()),
  84. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:134 test path new HMac(new SHA1Digest()),
  85. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:138 test path new KDF2BytesGenerator(new SHA1Digest()),
  86. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:139 test path new HMac(new SHA1Digest()),
  87. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:204 test path new KDF2BytesGenerator(new SHA1Digest()),
  88. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:205 test path new HMac(new SHA1Digest()));
  89. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:208 test path new KDF2BytesGenerator(new SHA1Digest()),
  90. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:209 test path new HMac(new SHA1Digest()));
  91. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:325 test path new KDF2BytesGenerator(new SHA1Digest()),
  92. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:326 test path new HMac(new SHA1Digest()));
  93. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:329 test path new KDF2BytesGenerator(new SHA1Digest()),
  94. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:330 test path new HMac(new SHA1Digest()));
  95. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:359 test path new KDF2BytesGenerator(new SHA1Digest()),
  96. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:360 test path new HMac(new SHA1Digest()),
  97. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:364 test path new KDF2BytesGenerator(new SHA1Digest()),
  98. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:365 test path new HMac(new SHA1Digest()),
  99. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:399 test path new KDF2BytesGenerator(new SHA1Digest()),
  100. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:400 test path new HMac(new SHA1Digest()));
  101. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:403 test path new KDF2BytesGenerator(new SHA1Digest()),
  102. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:404 test path new HMac(new SHA1Digest()));
  103. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:432 test path new KDF2BytesGenerator(new SHA1Digest()),
  104. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:433 test path new HMac(new SHA1Digest()),
  105. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:437 test path new KDF2BytesGenerator(new SHA1Digest()),
  106. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:438 test path new HMac(new SHA1Digest()),
  107. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:493 test path IESEngine enc = new IESEngine(new ECDHBasicAgreement(), new KDF2BytesGenerator(new SHA1Digest()), new HMac(new SHA1Digest()));
  108. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:512 test path HMac hmac = new HMac(new SHA1Digest());
  109. core/src/test/java/org/bouncycastle/crypto/test/ECIESTest.java:521 test path IESEngine dec = new IESEngine(new ECDHBasicAgreement(), new KDF2BytesGenerator(new SHA1Digest()), new HMac(new SHA1Digest()));
  110. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:92 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  111. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:93 test path new HMac(new SHA1Digest()),
  112. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:97 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  113. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:98 test path new HMac(new SHA1Digest()),
  114. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:132 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  115. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:133 test path new HMac(new SHA1Digest()),
  116. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:138 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  117. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:139 test path new HMac(new SHA1Digest()),
  118. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:207 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  119. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:208 test path new HMac(new SHA1Digest()),
  120. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:212 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  121. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:213 test path new HMac(new SHA1Digest()),
  122. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:332 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  123. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:333 test path new HMac(new SHA1Digest()),
  124. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:337 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  125. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:338 test path new HMac(new SHA1Digest()),
  126. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:368 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  127. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:369 test path new HMac(new SHA1Digest()),
  128. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:374 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  129. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:375 test path new HMac(new SHA1Digest()),
  130. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:412 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  131. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:413 test path new HMac(new SHA1Digest()),
  132. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:417 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  133. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:418 test path new HMac(new SHA1Digest()),
  134. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:447 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  135. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:448 test path new HMac(new SHA1Digest()),
  136. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:453 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()),
  137. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:454 test path new HMac(new SHA1Digest()),
  138. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:516 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()), new HMac(new SHA1Digest()), commonMac);
  139. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:542 test path HMac hmac = new HMac(new SHA1Digest());
  140. core/src/test/java/org/bouncycastle/crypto/test/EthereumIESTest.java:554 test path new EthereumIESEngine.HandshakeKDFFunction(1, new SHA1Digest()), new HMac(new SHA1Digest()), commonMac);
  141. core/src/test/java/org/bouncycastle/crypto/test/HKDFGeneratorTest.java:126 test path Digest hash = new SHA1Digest();
  142. core/src/test/java/org/bouncycastle/crypto/test/HKDFGeneratorTest.java:147 test path Digest hash = new SHA1Digest();
  143. core/src/test/java/org/bouncycastle/crypto/test/HKDFGeneratorTest.java:188 test path Digest hash = new SHA1Digest();
  144. core/src/test/java/org/bouncycastle/crypto/test/HKDFGeneratorTest.java:215 test path Digest hash = new SHA1Digest();
  145. core/src/test/java/org/bouncycastle/crypto/test/HKDFGeneratorTest.java:243 test path Digest hash = new SHA1Digest();
  146. core/src/test/java/org/bouncycastle/crypto/test/HKDFGeneratorTest.java:267 test path Digest hash = new SHA1Digest();
  147. core/src/test/java/org/bouncycastle/crypto/test/HashCommitmentTest.java:40 test path committer = new HashCommitter(new SHA1Digest(), new SecureRandom());
  148. core/src/test/java/org/bouncycastle/crypto/test/HashCommitmentTest.java:90 test path committer = new GeneralHashCommitter(new SHA1Digest(), new SecureRandom());
  149. core/src/test/java/org/bouncycastle/crypto/test/ISO9796Test.java:499 test path ISO9796d2PSSSigner eng = new ISO9796d2PSSSigner(rsa, new SHA1Digest(), 0, false);
  150. core/src/test/java/org/bouncycastle/crypto/test/ISO9796Test.java:645 test path Digest dig = new SHA1Digest();
  151. core/src/test/java/org/bouncycastle/crypto/test/ISO9796Test.java:690 test path Digest dig = new SHA1Digest();
  152. core/src/test/java/org/bouncycastle/crypto/test/ISO9796Test.java:747 test path Digest dig = new SHA1Digest();
  153. core/src/test/java/org/bouncycastle/crypto/test/ISO9796Test.java:827 test path digest = new SHA1Digest();
  154. core/src/test/java/org/bouncycastle/crypto/test/ISO9796Test.java:943 test path ISO9796d2PSSSigner pssSign = new ISO9796d2PSSSigner(new RSAEngine(), new SHA1Digest(), 20);
  155. core/src/test/java/org/bouncycastle/crypto/test/ISO9796Test.java:1014 test path ISO9796d2Signer verifier = new ISO9796d2Signer(new RSAEngine(), new SHA1Digest(), true);
  156. core/src/test/java/org/bouncycastle/crypto/test/ISO9796Test.java:1022 test path ISO9796d2Signer recoverer = new ISO9796d2Signer(new RSAEngine(), new SHA1Digest(), true);
  157. core/src/test/java/org/bouncycastle/crypto/test/KDF1GeneratorTest.java:50 test path checkMask(2, new KDF1BytesGenerator(new SHA1Digest()), seed2, mask2);
  158. core/src/test/java/org/bouncycastle/crypto/test/KDF1GeneratorTest.java:55 test path new KDF1BytesGenerator(new SHA1Digest()).generateBytes(new byte[10], 0, 20);
  159. core/src/test/java/org/bouncycastle/crypto/test/KDF2GeneratorTest.java:61 test path checkMask(4, new KDF2BytesGenerator(new SHA1Digest()), seed2, sha1Mask);
  160. core/src/test/java/org/bouncycastle/crypto/test/KDF2GeneratorTest.java:62 test path checkMask(5, new KDF2BytesGenerator(new SHA1Digest()), seed3, mask3);
  161. core/src/test/java/org/bouncycastle/crypto/test/KDF2GeneratorTest.java:63 test path checkMask(6, new KDF2BytesGenerator(new SHA1Digest()), seed4, mask4);
  162. core/src/test/java/org/bouncycastle/crypto/test/KDF2GeneratorTest.java:67 test path new KDF2BytesGenerator(new SHA1Digest()).generateBytes(new byte[10], 0, 20);
  163. core/src/test/java/org/bouncycastle/crypto/test/MGF1GeneratorTest.java:45 test path checkMask(2, new MGF1BytesGenerator(new SHA1Digest()), seed2, mask2);
  164. core/src/test/java/org/bouncycastle/crypto/test/MGF1GeneratorTest.java:50 test path new MGF1BytesGenerator(new SHA1Digest()).generateBytes(new byte[10], 0, 20);
  165. core/src/test/java/org/bouncycastle/crypto/test/NonMemoableDigestTest.java:60 test path HMac hmac = new HMac(new NonMemoableDigest(new SHA1Digest()));
  166. core/src/test/java/org/bouncycastle/crypto/test/OAEPTest.java:799 test path AsymmetricBlockCipher cipher = new OAEPEncoding(new RSAEngine(), SHA256Digest.newInstance(), new SHA1Digest(), new byte[10]);
  167. core/src/test/java/org/bouncycastle/crypto/test/OAEPTest.java:819 test path cipher = new OAEPEncoding(new RSAEngine(), new SHA1Digest(), SHA256Digest.newInstance(), new byte[10]);
  168. core/src/test/java/org/bouncycastle/crypto/test/PKCS12Test.java:34 test path new SHA1Digest());
  169. core/src/test/java/org/bouncycastle/crypto/test/PKCS12Test.java:62 test path new SHA1Digest());
  170. core/src/test/java/org/bouncycastle/crypto/test/PKCS12Test.java:90 test path new SHA1Digest());
  171. core/src/test/java/org/bouncycastle/crypto/test/PSSBlindTest.java:232 test path PSSSigner blindSigner = new PSSSigner(blindingEngine, new SHA1Digest(), 20);
  172. core/src/test/java/org/bouncycastle/crypto/test/PSSBlindTest.java:233 test path PSSSigner signer = new PSSSigner(new RSAEngine(), new SHA1Digest(), 20);
  173. core/src/test/java/org/bouncycastle/crypto/test/PSSBlindTest.java:283 test path PSSSigner blindSigner = new PSSSigner(blindingEngine, new SHA1Digest(), 20);
  174. core/src/test/java/org/bouncycastle/crypto/test/PSSBlindTest.java:284 test path PSSSigner pssEng = new PSSSigner(new RSAEngine(), new SHA1Digest(), 20);
  175. core/src/test/java/org/bouncycastle/crypto/test/PSSTest.java:227 test path PSSSigner eng = new PSSSigner(new RSAEngine(), new SHA1Digest(), 20);
  176. core/src/test/java/org/bouncycastle/crypto/test/PSSTest.java:267 test path PSSSigner eng = new PSSSigner(new RSAEngine(), new SHA1Digest(), 20);
  177. core/src/test/java/org/bouncycastle/crypto/test/PSSTest.java:300 test path eng = new PSSSigner(new RSAEngine(), SHA256Digest.newInstance(), new SHA1Digest(), 20);
  178. core/src/test/java/org/bouncycastle/crypto/test/PSSTest.java:338 test path PSSSigner eng = new PSSSigner(new RSAEngine(), SHA256Digest.newInstance(), new SHA1Digest(), Hex.decode("deadbeef"));
  179. core/src/test/java/org/bouncycastle/crypto/test/PSSTest.java:357 test path eng = new PSSSigner(new RSAEngine(), SHA256Digest.newInstance(), new SHA1Digest(), Hex.decode("beefbeef"));
  180. core/src/test/java/org/bouncycastle/crypto/test/RSADigestSignerTest.java:64 test path checkDigest(rsaPublic, rsaPrivate, new SHA1Digest(), X509ObjectIdentifiers.id_SHA1);
  181. core/src/test/java/org/bouncycastle/crypto/test/RSADigestSignerTest.java:81 test path checkNullDigest(rsaPublic, rsaPrivate, new SHA1Digest(), X509ObjectIdentifiers.id_SHA1);
  182. core/src/test/java/org/bouncycastle/crypto/test/RSAKeyEncapsulationTest.java:42 test path KDF2BytesGenerator kdf = new KDF2BytesGenerator(new SHA1Digest());
  183. core/src/test/java/org/bouncycastle/crypto/test/RSAKeyEncapsulationTest.java:78 test path (RSAKeyParameters)keys.getPrivate(), 128 / 8, new KDF2BytesGenerator(new SHA1Digest()), counter);
  184. core/src/test/java/org/bouncycastle/crypto/test/RSAKeyEncapsulationTest.java:101 test path (RSAKeyParameters)keys.getPrivate(), 128 / 8, new KDF2BytesGenerator(new SHA1Digest()));
  185. core/src/test/java/org/bouncycastle/crypto/test/RSAKeyEncapsulationTest.java:125 test path plainKey, 128 / 8, new KDF2BytesGenerator(new SHA1Digest()), counter);
  186. core/src/test/java/org/bouncycastle/crypto/test/RSAKeyEncapsulationTest.java:151 test path privKey, 128 / 8, new KDF2BytesGenerator(new SHA1Digest()));
  187. core/src/test/java/org/bouncycastle/crypto/test/RSATest.java:351 test path AsymmetricBlockCipher cipher = new OAEPEncoding(rsaEngine, new SHA1Digest(), new SHA1Digest(), message);
  188. core/src/test/java/org/bouncycastle/crypto/test/SHA1DigestTest.java:30 test path super(new SHA1Digest(), messages, digests);
  189. core/src/test/java/org/bouncycastle/crypto/test/SHA1DigestTest.java:35 test path return new SHA1Digest((SHA1Digest)digest);
  190. core/src/test/java/org/bouncycastle/crypto/test/SHA1DigestTest.java:40 test path return new SHA1Digest(encodedState);
  191. core/src/test/java/org/bouncycastle/crypto/test/SHA1HMacTest.java:58 test path HMac hmac = new HMac(new SHA1Digest());
  192. core/src/test/java/org/bouncycastle/crypto/test/SRP6Test.java:183 test path BigInteger k = SRP6Util.calculateK(new SHA1Digest(), N, g);
  193. core/src/test/java/org/bouncycastle/crypto/test/SRP6Test.java:189 test path BigInteger x = SRP6Util.calculateX(new SHA1Digest(), N, s, I, P);
  194. core/src/test/java/org/bouncycastle/crypto/test/SRP6Test.java:196 test path gen.init(N, g, new SHA1Digest());
  195. core/src/test/java/org/bouncycastle/crypto/test/SRP6Test.java:211 test path client.init(N, g, new SHA1Digest(), random);
  196. core/src/test/java/org/bouncycastle/crypto/test/SRP6Test.java:227 test path server.init(N, g, v, new SHA1Digest(), random);
  197. core/src/test/java/org/bouncycastle/crypto/test/SRP6Test.java:235 test path BigInteger u = SRP6Util.calculateU(new SHA1Digest(), N, A, B);
  198. core/src/test/java/org/bouncycastle/crypto/test/ShortenedDigestTest.java:20 test path ExtendedDigest d = new SHA1Digest();
  199. core/src/test/java/org/bouncycastle/crypto/test/ShortenedDigestTest.java:21 test path ShortenedDigest sd = new ShortenedDigest(new SHA1Digest(), 10);
  200. core/src/test/java/org/bouncycastle/crypto/test/ShortenedDigestTest.java:69 test path new ShortenedDigest(new SHA1Digest(), 50);

Showing the first 200. The CBOM has every one.

java.bouncycastle.digest · CWE-328
3DES Already broken 80 places See details

Symmetric cipher through BouncyCastle

A BouncyCastle symmetric engine or mode. Symmetric encryption is not broken by a quantum computer, so these are inventoried rather than flagged - but a complete cryptographic inventory has to contain them, and the mode is where AES-256 or a 64-bit block shows up.

This is the kind of encryption that quantum computers do not break. It is listed so the inventory is complete.

What to do. Use a 256-bit key. No change of algorithm is required unless the engine is DES, RC4 or Blowfish.

  1. core/src/main/j2me/org/bouncycastle/crypto/examples/MIDPTest.java:149 test path rv = new DESedeEngine();
  2. core/src/main/java/org/bouncycastle/crypto/engines/DESedeEngine.java:14 public class DESedeEngine
  3. core/src/main/java/org/bouncycastle/crypto/engines/DESedeEngine.java:29 public DESedeEngine()
  4. core/src/main/java/org/bouncycastle/crypto/engines/DESedeWrapEngine.java:68 this.engine = new CBCBlockCipher(new DESedeEngine());
  5. core/src/main/java/org/bouncycastle/crypto/prng/SP800SecureRandomBuilder.java:228 if (blockCipher instanceof DESedeEngine)
  6. core/src/main/java/org/bouncycastle/crypto/util/CipherFactory.java:241 cipher = CBCBlockCipher.newInstance(new DESedeEngine());
  7. core/src/main/java/org/bouncycastle/crypto/util/OpenSSHPrivateKeyUtil.java:571 return processBlockCipher(CBCBlockCipher.newInstance(new DESedeEngine()), key, iv, encrypted);
  8. core/src/main/jdk1.1/org/bouncycastle/crypto/prng/SP800SecureRandomBuilder.java:229 if (blockCipher instanceof DESedeEngine)
  9. core/src/test/java/org/bouncycastle/crypto/prng/test/CTRDRBGTest.java:37 test path new DESedeEngine(), 168,
  10. core/src/test/java/org/bouncycastle/crypto/prng/test/CTRDRBGTest.java:49 test path new DESedeEngine(), 168,
  11. core/src/test/java/org/bouncycastle/crypto/prng/test/CTRDRBGTest.java:63 test path new DESedeEngine(), 168,
  12. core/src/test/java/org/bouncycastle/crypto/prng/test/CTRDRBGTest.java:76 test path new DESedeEngine(), 168,
  13. core/src/test/java/org/bouncycastle/crypto/prng/test/CTRDRBGTest.java:91 test path new DESedeEngine(), 168,
  14. core/src/test/java/org/bouncycastle/crypto/prng/test/CTRDRBGTest.java:103 test path new DESedeEngine(), 168,
  15. core/src/test/java/org/bouncycastle/crypto/prng/test/CTRDRBGTest.java:117 test path new DESedeEngine(), 168,
  16. core/src/test/java/org/bouncycastle/crypto/prng/test/CTRDRBGTest.java:130 test path new DESedeEngine(), 168,
  17. core/src/test/java/org/bouncycastle/crypto/prng/test/CTRDRBGTest.java:385 test path d = new CTRSP800DRBG(new DESedeEngine(), 256, 256, new Bit232EntropyProvider().get(232), null, null);
  18. core/src/test/java/org/bouncycastle/crypto/prng/test/CTRDRBGTest.java:398 test path d = new CTRSP800DRBG(new DESedeEngine(), 168, 256, new Bit232EntropyProvider().get(232), null, null);
  19. core/src/test/java/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:160 test path new DESedeEngine(), 168,
  20. core/src/test/java/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:176 test path new DESedeEngine(), 168,
  21. core/src/test/java/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:231 test path SecureRandom random = rBuild.buildCTR(new DESedeEngine(), 168, Hex.decode("20212223242526"), false);
  22. core/src/test/java/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:239 test path random = rBuild.buildCTR(new DESedeEngine(), 168, Hex.decode("20212223242526"), false);
  23. core/src/test/java/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:259 test path isEquals("CTR-DRBG-3KEY-TDES", rBuild.buildCTR(new DESedeEngine(), 168, Hex.decode("20212223242526"), false).getAlgorithm());
  24. core/src/test/java/org/bouncycastle/crypto/prng/test/X931Test.java:48 test path new DESedeEngine(),
  25. core/src/test/java/org/bouncycastle/crypto/test/BlockCipherResetTest.java:65 test path testReset("DESedeEngine", new DESedeEngine(), new DESedeEngine(), new KeyParameter(new byte[24]));
  26. core/src/test/java/org/bouncycastle/crypto/test/CMacTest.java:305 test path testCMac(new DESedeEngine(), keyBytes128, input0, output_des_ede);
  27. core/src/test/java/org/bouncycastle/crypto/test/CipherStreamTest.java:513 test path testModes(new DESedeEngine(), new DESedeEngine(), 24);
  28. core/src/test/java/org/bouncycastle/crypto/test/CryptoServiceConstraintsTest.java:61 test path new DESedeEngine();
  29. core/src/test/java/org/bouncycastle/crypto/test/CryptoServiceConstraintsTest.java:72 test path new DESedeEngine();
  30. core/src/test/java/org/bouncycastle/crypto/test/CryptoServiceConstraintsTest.java:83 test path new DESedeEngine();
  31. core/src/test/java/org/bouncycastle/crypto/test/CryptoServiceConstraintsTest.java:92 test path DESedeEngine eng = new DESedeEngine();
  32. core/src/test/java/org/bouncycastle/crypto/test/DESedeTest.java:34 test path new BlockCipherVectorTest(0, new DESedeEngine(),
  33. core/src/test/java/org/bouncycastle/crypto/test/DESedeTest.java:37 test path new BlockCipherVectorTest(1, new DESedeEngine(),
  34. core/src/test/java/org/bouncycastle/crypto/test/DESedeTest.java:40 test path new BlockCipherVectorTest(2, new DESedeEngine(),
  35. core/src/test/java/org/bouncycastle/crypto/test/DESedeTest.java:43 test path new BlockCipherVectorTest(3, new DESedeEngine(),
  36. core/src/test/java/org/bouncycastle/crypto/test/DESedeTest.java:50 test path super(tests, new DESedeEngine(), new KeyParameter(new byte[16]));
  37. core/src/test/java/org/bouncycastle/crypto/test/PKCS5Test.java:213 test path cipher = new PaddedBufferedBlockCipher(new CBCBlockCipher(new DESedeEngine()));
  38. core/src/test/java/org/bouncycastle/crypto/test/RFC3211WrapTest.java:141 test path wrapTest(2, new DESedeEngine(), Hex.decode("6A8970BF68C92CAEA84A8DF28510858607126380CC47AB2D"), Hex.decode("BAF1CA7931213C4E"), r2,
  39. core/src/test/java/org/bouncycastle/crypto/test/SymmetricConstraintsTest.java:75 test path DESedeEngine eng = new DESedeEngine();
  40. core/src/test/java/org/bouncycastle/crypto/test/cavp/CAVPReader.java:117 test path BlockCipher blockCipher = new DESedeEngine();
  41. core/src/test/jdk1.4/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:160 test path new DESedeEngine(), 168,
  42. core/src/test/jdk1.4/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:176 test path new DESedeEngine(), 168,
  43. core/src/test/jdk1.4/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:231 test path SecureRandom random = rBuild.buildCTR(new DESedeEngine(), 168, Hex.decode("20212223242526"), false);
  44. core/src/test/jdk1.4/org/bouncycastle/crypto/prng/test/SP800RandomTest.java:239 test path random = rBuild.buildCTR(new DESedeEngine(), 168, Hex.decode("20212223242526"), false);
  45. misc/src/main/java/org/bouncycastle/crypto/examples/DESExample.java:247 test path new CBCBlockCipher(new DESedeEngine()));
  46. pg/src/main/java/org/bouncycastle/openpgp/operator/bc/BcImplProvider.java:148 engine = new DESedeEngine();
  47. pkix/src/main/java/org/bouncycastle/cms/bc/EnvelopedDataHelper.java:128 return new RFC3211WrapEngine(new DESedeEngine());
  48. pkix/src/main/java/org/bouncycastle/openssl/bc/PEMUtilities.java:144 engine = new DESedeEngine();
  49. pkix/src/main/java/org/bouncycastle/pkcs/bc/PKCS12PBEUtils.java:84 engine = new DESedeEngine();
  50. pkix/src/test/java/org/bouncycastle/pkcs/test/PfxPduTest.java:1280 test path PKCS8EncryptedPrivateKeyInfo priv = builder.build(new BcPKCS12PBEOutputEncryptorBuilder(PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, new CBCBlockCipher(new DESedeEngine())).build(passwd));
  51. pkix/src/test/java/org/bouncycastle/pkcs/test/PfxPduTest.java:1363 test path OutputEncryptor encOut = new BcPKCS12PBEOutputEncryptorBuilder(PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, new CBCBlockCipher(new DESedeEngine())).build(passwd);
  52. pkix/src/test/java/org/bouncycastle/pkcs/test/PfxPduTest.java:1416 test path PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, new CBCBlockCipher(new DESedeEngine())).build(passwd);
  53. pkix/src/test/java/org/bouncycastle/pkcs/test/PfxPduTest.java:1978 test path PKCS12SafeBagBuilder keyBagBuilder = new JcaPKCS12SafeBagBuilder(privKey, new BcPKCS12PBEOutputEncryptorBuilder(PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, new CBCBlockCipher(new DESedeEngine())).build(passwd));
  54. pkix/src/test/java/org/bouncycastle/pkcs/test/PfxPduTest.java:2019 test path PKCS12SafeBagBuilder keyBagBuilder = new JcaPKCS12SafeBagBuilder(privKey, new BcPKCS12PBEOutputEncryptorBuilder(PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, new CBCBlockCipher(new DESedeEngine())).build(passwd));
  55. pkix/src/test/jdk1.4/org/bouncycastle/pkcs/test/PfxPduTest.java:1177 test path PKCS8EncryptedPrivateKeyInfo priv = builder.build(new BcPKCS12PBEOutputEncryptorBuilder(PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, new CBCBlockCipher(new DESedeEngine())).build(passwd));
  56. pkix/src/test/jdk1.4/org/bouncycastle/pkcs/test/PfxPduTest.java:1260 test path OutputEncryptor encOut = new BcPKCS12PBEOutputEncryptorBuilder(PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, new CBCBlockCipher(new DESedeEngine())).build(passwd);
  57. pkix/src/test/jdk1.4/org/bouncycastle/pkcs/test/PfxPduTest.java:1722 test path PKCS12SafeBagBuilder keyBagBuilder = new JcaPKCS12SafeBagBuilder(privKey, new BcPKCS12PBEOutputEncryptorBuilder(PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, new CBCBlockCipher(new DESedeEngine())).build(passwd));
  58. prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/dh/IESCipher.java:519 new PaddedBufferedBlockCipher(CBCBlockCipher.newInstance(new DESedeEngine()))), 8);
  59. prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher.java:567 super(CBCBlockCipher.newInstance(new DESedeEngine()), 8);
  60. prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher.java:576 super(CBCBlockCipher.newInstance(new DESedeEngine()), 8, DigestFactory.createSHA256(), DigestFactory.createSHA256());
  61. prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher.java:585 super(CBCBlockCipher.newInstance(new DESedeEngine()), 8, DigestFactory.createSHA384(), DigestFactory.createSHA384());
  62. prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher.java:594 super(CBCBlockCipher.newInstance(new DESedeEngine()), 8, DigestFactory.createSHA512(), DigestFactory.createSHA512());
  63. prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher.java:559 super(CBCBlockCipher.newInstance(new DESedeEngine()), 8);
  64. prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher.java:568 super(CBCBlockCipher.newInstance(new DESedeEngine()), 8, DigestFactory.createSHA256(), DigestFactory.createSHA256());
  65. prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher.java:577 super(CBCBlockCipher.newInstance(new DESedeEngine()), 8, DigestFactory.createSHA384(), DigestFactory.createSHA384());
  66. prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher.java:586 super(CBCBlockCipher.newInstance(new DESedeEngine()), 8, DigestFactory.createSHA512(), DigestFactory.createSHA512());
  67. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:48 super(new DESedeEngine());
  68. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:57 super(CBCBlockCipher.newInstance(new DESedeEngine()), 64);
  69. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:69 super(new CFBBlockCipherMac(new DESedeEngine()));
  70. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:81 super(new CBCBlockCipherMac(new DESedeEngine(), 64));
  71. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:93 super(new CBCBlockCipherMac(new DESedeEngine(), 64, new ISO7816d4Padding()));
  72. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:102 super(new CBCBlockCipherMac(new DESedeEngine()));
  73. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:111 super(new CMac(new DESedeEngine()));
  74. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:129 super(new RFC3211WrapEngine(new DESedeEngine()), 8);
  75. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:205 super(new CBCBlockCipher(new DESedeEngine()), PKCS12, SHA1, 192, 8);
  76. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DESede.java:217 super(new CBCBlockCipher(new DESedeEngine()), PKCS12, SHA1, 128, 8);
  77. prov/src/main/java/org/bouncycastle/jce/provider/BrokenJCEBlockCipher.java:585 super(new CBCBlockCipher(new DESedeEngine()), PKCS12, SHA1, 192, 64);
  78. prov/src/main/java/org/bouncycastle/jce/provider/BrokenJCEBlockCipher.java:597 super(new CBCBlockCipher(new DESedeEngine()), OLD_PKCS12, SHA1, 192, 64);
  79. prov/src/main/java/org/bouncycastle/jce/provider/BrokenJCEBlockCipher.java:609 super(new CBCBlockCipher(new DESedeEngine()), PKCS12, SHA1, 128, 64);
  80. tls/src/main/java/org/bouncycastle/tls/crypto/impl/bc/BcTlsCrypto.java:733 return new DESedeEngine();
java.bouncycastle.symmetric
DES Already broken 68 places See details

Symmetric cipher through BouncyCastle

A BouncyCastle symmetric engine or mode. Symmetric encryption is not broken by a quantum computer, so these are inventoried rather than flagged - but a complete cryptographic inventory has to contain them, and the mode is where AES-256 or a 64-bit block shows up.

This is the kind of encryption that quantum computers do not break. It is listed so the inventory is complete.

What to do. Use a 256-bit key. No change of algorithm is required unless the engine is DES, RC4 or Blowfish.

  1. core/src/main/j2me/org/bouncycastle/crypto/examples/MIDPTest.java:146 test path rv = new DESEngine();
  2. core/src/main/j2me/org/bouncycastle/crypto/examples/MIDPTest.java:161 test path rv = new DESEngine();
  3. core/src/main/java/org/bouncycastle/crypto/engines/DESEngine.java:15 public class DESEngine
  4. core/src/main/java/org/bouncycastle/crypto/engines/DESEngine.java:27 public DESEngine()
  5. core/src/main/java/org/bouncycastle/crypto/macs/ISO9797Alg3Mac.java:105 if (!(cipher instanceof DESEngine))
  6. core/src/main/java/org/bouncycastle/crypto/macs/ISO9797Alg3Mac.java:107 throw new IllegalArgumentException("cipher must be instance of DESEngine");
  7. core/src/main/java/org/bouncycastle/crypto/macs/ISO9797Alg3Mac.java:268 DESEngine deseng = new DESEngine();
  8. core/src/main/java/org/bouncycastle/crypto/util/CipherFactory.java:245 cipher = CBCBlockCipher.newInstance(new DESEngine());
  9. core/src/test/java/org/bouncycastle/crypto/test/BlockCipherResetTest.java:62 test path testReset("DESEngine", new DESEngine(), new DESEngine(), new KeyParameter(new byte[8]));
  10. core/src/test/java/org/bouncycastle/crypto/test/BlockCipherResetTest.java:78 test path testModeReset("AES/GCTR", new GOFBBlockCipher(new DESEngine()), new GOFBBlockCipher(new DESEngine()),
  11. core/src/test/java/org/bouncycastle/crypto/test/CCMTest.java:142 test path ccm = new CCMBlockCipher(new DESEngine());
  12. core/src/test/java/org/bouncycastle/crypto/test/CMacTest.java:311 test path testCMac(new DESEngine(), "2b7e151628aed2a6", "3cc3a242585e49f9");
  13. core/src/test/java/org/bouncycastle/crypto/test/CTSTest.java:106 test path BufferedBlockCipher engine = new CTSBlockCipher(new DESEngine());
  14. core/src/test/java/org/bouncycastle/crypto/test/CTSTest.java:257 test path testCTS(1, new DESEngine(), new KeyParameter(key1), in1, out1);
  15. core/src/test/java/org/bouncycastle/crypto/test/CTSTest.java:258 test path testCTS(2, new CBCBlockCipher(new DESEngine()), new ParametersWithIV(new KeyParameter(key1), iv), in1, out2);
  16. core/src/test/java/org/bouncycastle/crypto/test/CipherStreamTest.java:512 test path testModes(new DESEngine(), new DESEngine(), 8);
  17. core/src/test/java/org/bouncycastle/crypto/test/CryptoServiceConstraintsTest.java:53 test path new DESEngine();
  18. core/src/test/java/org/bouncycastle/crypto/test/DESTest.java:165 test path new BlockCipherVectorTest(0, new DESEngine(),
  19. core/src/test/java/org/bouncycastle/crypto/test/DESTest.java:168 test path new BlockCipherVectorTest(1, new CBCBlockCipher(new DESEngine()),
  20. core/src/test/java/org/bouncycastle/crypto/test/DESTest.java:171 test path new BlockCipherVectorTest(2, new CFBBlockCipher(new DESEngine(), 8),
  21. core/src/test/java/org/bouncycastle/crypto/test/DESTest.java:174 test path new BlockCipherVectorTest(3, new CFBBlockCipher(new DESEngine(), 64),
  22. core/src/test/java/org/bouncycastle/crypto/test/DESTest.java:177 test path new BlockCipherVectorTest(4, new OFBBlockCipher(new DESEngine(), 8),
  23. core/src/test/java/org/bouncycastle/crypto/test/DESTest.java:180 test path new BlockCipherVectorTest(5, new CFBBlockCipher(new DESEngine(), 64),
  24. core/src/test/java/org/bouncycastle/crypto/test/DESTest.java:183 test path new BlockCipherVectorTest(6, new OFBBlockCipher(new DESEngine(), 64),
  25. core/src/test/java/org/bouncycastle/crypto/test/DESTest.java:193 test path super(tests, new DESEngine(), new KeyParameter(new byte[8]));
  26. core/src/test/java/org/bouncycastle/crypto/test/GCMTest.java:386 test path gcm = createGCM(new DESEngine());
  27. core/src/test/java/org/bouncycastle/crypto/test/ISO9797Alg3MacTest.java:30 test path BlockCipher cipher = new DESEngine();
  28. core/src/test/java/org/bouncycastle/crypto/test/ISO9797Alg3MacTest.java:83 test path ISO9797Alg3Mac mac1 = new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding());
  29. core/src/test/java/org/bouncycastle/crypto/test/ISO9797Alg3MacTest.java:92 test path ISO9797Alg3Mac mac2 = new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding());
  30. core/src/test/java/org/bouncycastle/crypto/test/ISO9797Alg3MacTest.java:104 test path mac2 = new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding());
  31. core/src/test/java/org/bouncycastle/crypto/test/MacTest.java:47 test path BlockCipher cipher = new DESEngine();
  32. core/src/test/java/org/bouncycastle/crypto/test/ModeTest.java:47 test path BlockCipher ofb = new OFBBlockCipher(new DESEngine(), 32);
  33. core/src/test/java/org/bouncycastle/crypto/test/ModeTest.java:73 test path BlockCipher cfb = new CFBBlockCipher(new DESEngine(), 32);
  34. core/src/test/java/org/bouncycastle/crypto/test/OCBTest.java:147 test path ocb = new OCBBlockCipher(new DESEngine(), new DESEngine());
  35. core/src/test/java/org/bouncycastle/crypto/test/PKCS5Test.java:208 test path BufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new CBCBlockCipher(new DESEngine()));
  36. core/src/test/java/org/bouncycastle/crypto/test/PaddingTest.java:70 test path PaddedBufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new DESEngine(), padding);
  37. core/src/test/java/org/bouncycastle/crypto/test/PaddingTest.java:114 test path PaddedBufferedBlockCipher bc = new PaddedBufferedBlockCipher(new DESEngine(), new PKCS7Padding());
  38. core/src/test/java/org/bouncycastle/crypto/test/PaddingTest.java:145 test path PaddedBufferedBlockCipher bc = new PaddedBufferedBlockCipher(new DESEngine(), new PKCS7Padding());
  39. core/src/test/java/org/bouncycastle/crypto/test/RFC3211WrapTest.java:70 test path Wrapper wrapper = new RFC3211WrapEngine(new DESEngine());
  40. core/src/test/java/org/bouncycastle/crypto/test/RFC3211WrapTest.java:122 test path BlockCipher engine = new CBCBlockCipher(new DESEngine());
  41. core/src/test/java/org/bouncycastle/crypto/test/RFC3211WrapTest.java:140 test path wrapTest(1, new DESEngine(), Hex.decode("D1DAA78615F287E6"), Hex.decode("EFE598EF21B33D6D"), r1, Hex.decode("8C627C897323A2F8"), Hex.decode("B81B2565EE373CA6DEDCA26A178B0C10"));
  42. core/src/test/java/org/bouncycastle/crypto/test/RFC3211WrapTest.java:147 test path Wrapper wrapper = new RFC3211WrapEngine(new DESEngine());
  43. core/src/test/java/org/bouncycastle/crypto/test/ResetTest.java:24 test path BufferedBlockCipher cipher = new BufferedBlockCipher(new DESEngine());
  44. core/src/test/java/org/bouncycastle/crypto/test/SICPositionTest.java:283 test path return SICBlockCipher.newInstance(new DESEngine());
  45. pg/src/main/java/org/bouncycastle/openpgp/operator/bc/BcImplProvider.java:139 engine = new DESEngine();
  46. pkix/src/main/java/org/bouncycastle/cms/bc/EnvelopedDataHelper.java:132 return new RFC3211WrapEngine(new DESEngine());
  47. pkix/src/main/java/org/bouncycastle/openssl/bc/PEMUtilities.java:149 engine = new DESEngine();
  48. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:58 super(new DESEngine());
  49. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:67 super(new CBCBlockCipher(new DESEngine()), 64);
  50. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:79 super(new CFBBlockCipherMac(new DESEngine()));
  51. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:91 super(new CBCBlockCipherMac(new DESEngine(), 64));
  52. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:103 super(new CBCBlockCipherMac(new DESEngine(), 64, new ISO7816d4Padding()));
  53. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:112 super(new CBCBlockCipherMac(new DESEngine()));
  54. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:121 super(new CMac(new DESEngine()));
  55. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:133 super(new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding()));
  56. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:145 super(new ISO9797Alg3Mac(new DESEngine()));
  57. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:154 super(new RFC3211WrapEngine(new DESEngine()), 8);
  58. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:408 super(new CBCBlockCipher(new DESEngine()), PKCS5S1, MD2, 64, 8);
  59. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:420 super(new CBCBlockCipher(new DESEngine()), PKCS5S1, MD5, 64, 8);
  60. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/DES.java:432 super(new CBCBlockCipher(new DESEngine()), PKCS5S1, SHA1, 64, 8);
  61. prov/src/main/java/org/bouncycastle/jce/provider/BrokenJCEBlockCipher.java:561 super(new CBCBlockCipher(new DESEngine()), PKCS5S1, MD5, 64, 64);
  62. prov/src/main/java/org/bouncycastle/jce/provider/BrokenJCEBlockCipher.java:573 super(new CBCBlockCipher(new DESEngine()), PKCS5S1, SHA1, 64, 64);
  63. prov/src/test/java/org/bouncycastle/jce/provider/test/DHIESTest.java:111 test path new PaddedBufferedBlockCipher(new DESEngine())));
  64. prov/src/test/java/org/bouncycastle/jce/provider/test/DHIESTest.java:116 test path new PaddedBufferedBlockCipher(new DESEngine())));
  65. prov/src/test/java/org/bouncycastle/jce/provider/test/ECIESTest.java:84 test path new PaddedBufferedBlockCipher(new DESEngine())));
  66. prov/src/test/java/org/bouncycastle/jce/provider/test/ECIESTest.java:89 test path new PaddedBufferedBlockCipher(new DESEngine())));
  67. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/ECIESTest.java:84 test path new PaddedBufferedBlockCipher(new DESEngine())));
  68. prov/src/test/jdk1.4/org/bouncycastle/jce/provider/test/ECIESTest.java:89 test path new PaddedBufferedBlockCipher(new DESEngine())));
java.bouncycastle.symmetric
MD5 Already broken 40 places See details

Digest through BouncyCastle

A BouncyCastle digest class. The digest name is read from the class, so `MD5Digest` and `SHA512Digest` are the same rule with opposite conclusions.

This is already unsafe today, with no quantum computer involved. Practical chosen-prefix collisions exist; MD5 has no remaining security as a digest.

What to do. SHA-256 as the floor, SHA-384 where the digest protects something long-lived. MD5 and SHA-1 need replacing now.

  1. core/src/main/java/org/bouncycastle/crypto/digests/MD5Digest.java:12 public class MD5Digest
  2. core/src/main/java/org/bouncycastle/crypto/digests/MD5Digest.java:26 public MD5Digest()
  3. core/src/main/java/org/bouncycastle/crypto/digests/MD5Digest.java:31 public MD5Digest(CryptoServicePurpose purpose)
  4. core/src/main/java/org/bouncycastle/crypto/digests/MD5Digest.java:40 public MD5Digest(byte[] encodedState)
  5. core/src/main/java/org/bouncycastle/crypto/digests/MD5Digest.java:60 public MD5Digest(MD5Digest t)
  6. core/src/main/java/org/bouncycastle/crypto/digests/MD5Digest.java:67 private void copyIn(MD5Digest t)
  7. core/src/main/java/org/bouncycastle/crypto/digests/MD5Digest.java:327 return new MD5Digest(this);
  8. core/src/main/java/org/bouncycastle/crypto/digests/MD5Digest.java:332 MD5Digest d = (MD5Digest)other;
  9. core/src/main/java/org/bouncycastle/crypto/util/DigestFactory.java:36 return new MD5Digest((MD5Digest)original);
  10. core/src/main/java/org/bouncycastle/crypto/util/DigestFactory.java:122 return new MD5Digest();
  11. core/src/main/java/org/bouncycastle/crypto/util/DigestFactory.java:127 return new MD5Digest();
  12. core/src/test/java/org/bouncycastle/crypto/test/DigestConstraintsTest.java:119 test path new MD5Digest();
  13. core/src/test/java/org/bouncycastle/crypto/test/ECCSISignerTest.java:77 test path new MD5Digest()
  14. core/src/test/java/org/bouncycastle/crypto/test/MD5DigestTest.java:30 test path super(new MD5Digest(), messages, digests);
  15. core/src/test/java/org/bouncycastle/crypto/test/MD5DigestTest.java:35 test path return new MD5Digest((MD5Digest)digest);
  16. core/src/test/java/org/bouncycastle/crypto/test/MD5DigestTest.java:40 test path return new MD5Digest(encodedState);
  17. core/src/test/java/org/bouncycastle/crypto/test/MD5HMacTest.java:53 test path HMac hmac = new HMac(new MD5Digest());
  18. core/src/test/java/org/bouncycastle/crypto/test/RSADigestSignerTest.java:79 test path checkDigest(rsaPublic, rsaPrivate, new MD5Digest(), PKCSObjectIdentifiers.md5);
  19. pg/src/main/java/org/bouncycastle/gpg/keybox/bc/BcBlobVerifier.java:12 private final MD5Digest md5Digest = new MD5Digest();
  20. pg/src/main/java/org/bouncycastle/openpgp/operator/bc/BcImplProvider.java:78 return new MD5Digest();
  21. pg/src/main/java/org/bouncycastle/openpgp/operator/bc/BcKeyFingerprintCalculator.java:36 digest = new MD5Digest();
  22. pg/src/test/java/org/bouncycastle/openpgp/test/BcImplProviderTest.java:131 test path testCreateDigest(provider, HashAlgorithmTags.MD5, new MD5Digest());
  23. pkix/src/main/j2me/org/bouncycastle/operator/bc/BcDefaultDigestProvider.java:142 return new MD5Digest();
  24. pkix/src/main/java/org/bouncycastle/operator/bc/BcDefaultDigestProvider.java:143 return new MD5Digest();
  25. pkix/src/main/jdk1.1/org/bouncycastle/operator/bc/BcDefaultDigestProvider.java:142 return new MD5Digest();
  26. prov/src/main/java/org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi.java:364 super(new MD5Digest());
  27. prov/src/main/java/org/bouncycastle/jcajce/provider/digest/MD5.java:27 super(new HMac(new MD5Digest()));
  28. prov/src/main/java/org/bouncycastle/jcajce/provider/digest/MD5.java:46 super(new MD5Digest());
  29. prov/src/main/java/org/bouncycastle/jcajce/provider/digest/MD5.java:53 d.digest = new MD5Digest((MD5Digest)digest);
  30. prov/src/main/java/org/bouncycastle/jce/provider/BrokenPBE.java:53 if (digest instanceof MD5Digest)
  31. prov/src/main/java/org/bouncycastle/jce/provider/BrokenPBE.java:295 generator = new PKCS5S1ParametersGenerator(new MD5Digest());
  32. prov/src/main/java/org/bouncycastle/jce/provider/BrokenPBE.java:313 generator = new OldPKCS12ParametersGenerator(new MD5Digest());
  33. prov/src/main/java/org/bouncycastle/jce/provider/BrokenPBE.java:330 generator = new PKCS12ParametersGenerator(new MD5Digest());
  34. prov/src/main/jdk1.1/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java:378 super(PKCSObjectIdentifiers.md5, new MD5Digest(), new PKCS1Encoding(new RSABlindedEngine()));
  35. prov/src/main/jdk1.1/org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi.java:191 super(new MD5Digest(), new RSABlindedEngine());
  36. prov/src/main/jdk1.4/org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi.java:364 super(new MD5Digest());
  37. prov/src/main/jdk1.4/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java:214 cipher = new OAEPEncoding(new RSABlindedEngine(), new MD5Digest());
  38. prov/src/test/java/org/bouncycastle/jce/provider/test/PBETest.java:944 test path PKCS12ParametersGenerator pGen = new PKCS12ParametersGenerator(new MD5Digest());
  39. tls/src/main/java/org/bouncycastle/tls/crypto/impl/bc/BcTlsCrypto.java:544 return new MD5Digest((MD5Digest)digest);
  40. tls/src/main/java/org/bouncycastle/tls/crypto/impl/bc/BcTlsCrypto.java:569 return new MD5Digest();
java.bouncycastle.digest · CWE-328
Blowfish Already broken 21 places See details

Symmetric cipher through BouncyCastle

A BouncyCastle symmetric engine or mode. Symmetric encryption is not broken by a quantum computer, so these are inventoried rather than flagged - but a complete cryptographic inventory has to contain them, and the mode is where AES-256 or a 64-bit block shows up.

This is the kind of encryption that quantum computers do not break. It is listed so the inventory is complete.

What to do. Use a 256-bit key. No change of algorithm is required unless the engine is DES, RC4 or Blowfish.

  1. core/src/main/java/org/bouncycastle/crypto/engines/BlowfishEngine.java:18 public final class BlowfishEngine
  2. core/src/main/java/org/bouncycastle/crypto/engines/BlowfishEngine.java:314 public BlowfishEngine()
  3. core/src/test/java/org/bouncycastle/crypto/test/BlockCipherResetTest.java:63 test path testReset("BlowfishEngine", new BlowfishEngine(), new BlowfishEngine(), new KeyParameter(new byte[8]));
  4. core/src/test/java/org/bouncycastle/crypto/test/BlowfishTest.java:16 test path new BlockCipherVectorTest(0, new BlowfishEngine(),
  5. core/src/test/java/org/bouncycastle/crypto/test/BlowfishTest.java:19 test path new BlockCipherVectorTest(1, new BlowfishEngine(),
  6. core/src/test/java/org/bouncycastle/crypto/test/BlowfishTest.java:22 test path new BlockCipherVectorTest(2, new BlowfishEngine(),
  7. core/src/test/java/org/bouncycastle/crypto/test/BlowfishTest.java:25 test path new BlockCipherVectorTest(3, new BlowfishEngine(),
  8. core/src/test/java/org/bouncycastle/crypto/test/BlowfishTest.java:28 test path new BlockCipherVectorTest(4, new BlowfishEngine(),
  9. core/src/test/java/org/bouncycastle/crypto/test/BlowfishTest.java:31 test path new BlockCipherVectorTest(5, new BlowfishEngine(),
  10. core/src/test/java/org/bouncycastle/crypto/test/BlowfishTest.java:34 test path new BlockCipherVectorTest(6, new BlowfishEngine(),
  11. core/src/test/java/org/bouncycastle/crypto/test/BlowfishTest.java:37 test path new BlockCipherVectorTest(7, new BlowfishEngine(),
  12. core/src/test/java/org/bouncycastle/crypto/test/BlowfishTest.java:44 test path super(tests, new BlowfishEngine(), new KeyParameter(new byte[16]));
  13. core/src/test/java/org/bouncycastle/crypto/test/BlowfishTest.java:58 test path BlowfishEngine blowfish = new BlowfishEngine();
  14. core/src/test/java/org/bouncycastle/crypto/test/CMacTest.java:310 test path testCMac(new BlowfishEngine(), "2b7e151628aed2a6abf7158809cf4f3c", "875d73b9bc3de78a");
  15. core/src/test/java/org/bouncycastle/crypto/test/CipherStreamTest.java:511 test path testModes(new BlowfishEngine(), new BlowfishEngine(), 16);
  16. core/src/test/java/org/bouncycastle/crypto/test/SymmetricConstraintsTest.java:302 test path BlowfishEngine engine = new BlowfishEngine();
  17. pg/src/main/java/org/bouncycastle/openpgp/operator/bc/BcImplProvider.java:133 engine = new BlowfishEngine();
  18. pkix/src/main/java/org/bouncycastle/openssl/bc/PEMUtilities.java:154 engine = new BlowfishEngine();
  19. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java:26 super(new BlowfishEngine());
  20. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java:35 super(new CBCBlockCipher(new BlowfishEngine()), 64);
  21. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java:44 super(new CMac(new BlowfishEngine()));
java.bouncycastle.symmetric
RC4 Already broken 13 places See details

Symmetric cipher through BouncyCastle

A BouncyCastle symmetric engine or mode. Symmetric encryption is not broken by a quantum computer, so these are inventoried rather than flagged - but a complete cryptographic inventory has to contain them, and the mode is where AES-256 or a 64-bit block shows up.

This is the kind of encryption that quantum computers do not break. It is listed so the inventory is complete.

What to do. Use a 256-bit key. No change of algorithm is required unless the engine is DES, RC4 or Blowfish.

  1. core/src/main/java/org/bouncycastle/crypto/engines/RC4Engine.java:11 public class RC4Engine
  2. core/src/main/java/org/bouncycastle/crypto/engines/RC4Engine.java:27 public RC4Engine()
  3. core/src/main/java/org/bouncycastle/crypto/util/CipherFactory.java:105 StreamCipher cipher = new RC4Engine();
  4. core/src/test/java/org/bouncycastle/crypto/test/CipherStreamTest.java:530 test path testMode(new RC4Engine(), new KeyParameter(new byte[16]));
  5. core/src/test/java/org/bouncycastle/crypto/test/CryptoServiceConstraintsTest.java:38 test path new RC4Engine();
  6. core/src/test/java/org/bouncycastle/crypto/test/CryptoServiceConstraintsTest.java:49 test path new RC4Engine();
  7. core/src/test/java/org/bouncycastle/crypto/test/RC4Test.java:16 test path new StreamCipherVectorTest(0, new RC4Engine(),
  8. core/src/test/java/org/bouncycastle/crypto/test/RC4Test.java:19 test path new StreamCipherVectorTest(0, new RC4Engine(),
  9. core/src/test/java/org/bouncycastle/crypto/test/RC4Test.java:22 test path new StreamCipherVectorTest(0, new RC4Engine(),
  10. core/src/test/java/org/bouncycastle/crypto/test/StreamCipherResetTest.java:42 test path testReset(new RC4Engine(), new RC4Engine(), new KeyParameter(random(16)));
  11. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/ARC4.java:23 super(new RC4Engine(), 0);
  12. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/ARC4.java:69 super(new RC4Engine(), 0, 128, SHA1);
  13. prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/ARC4.java:81 super(new RC4Engine(), 0, 40, SHA1);
java.bouncycastle.symmetric
DES Already broken 2 places See details

Message authentication code through the JCA

`Mac.getInstance()`. HMAC is not broken by Shor and is only marginally affected by Grover; it is inventoried, not flagged, unless the underlying digest is broken.

This is a fingerprint used to prove a message was not altered. Quantum computers do not break it.

What to do. No action beyond avoiding HmacMD5 and HmacSHA1.

  1. prov/src/test/java/org/bouncycastle/jce/provider/test/MacTest.java:82 test path mac = Mac.getInstance("DESMac", "BC");
  2. prov/src/test/java/org/bouncycastle/jce/provider/test/MacTest.java:115 test path mac = Mac.getInstance("DESMac/CFB8", "BC");
java.mac
ECDSA Quantum-vulnerable 225 places See details

Elliptic-curve cryptography through BouncyCastle

A BouncyCastle elliptic-curve class. `ECDHBasicAgreement` in particular is key establishment and carries harvest-now-decrypt-later exposure.

A quantum computer of sufficient size breaks this completely. It has to be replaced, not tuned. Broken by Shor's algorithm on a cryptographically relevant quantum computer.

What to do. ML-DSA-65 for signatures, ML-KEM-768 for key establishment.

  1. core/src/main/j2me/org/bouncycastle/crypto/CryptoServicesRegistrar.java:490 public static final Property EC_IMPLICITLY_CA = new Property("ecImplicitlyCA", X9ECParameters.class);
  2. core/src/main/j2me/org/bouncycastle/crypto/engines/SM2Engine.java:87 ECPoint s = ((ECPublicKeyParameters)ecKey).getQ().multiply(ecParams.getH());
  3. core/src/main/j2me/org/bouncycastle/crypto/engines/SM2Engine.java:146 kPB = ((ECPublicKeyParameters)ecKey).getQ().multiply(k).normalize();
  4. core/src/main/j2me/org/bouncycastle/crypto/engines/SM2Engine.java:188 c1P = c1P.multiply(((ECPrivateKeyParameters)ecKey).getD()).normalize();
  5. core/src/main/java/org/bouncycastle/asn1/anssi/ANSSINamedCurves.java:54 protected X9ECParameters createParameters()
  6. core/src/main/java/org/bouncycastle/asn1/anssi/ANSSINamedCurves.java:62 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  7. core/src/main/java/org/bouncycastle/asn1/anssi/ANSSINamedCurves.java:83 public static X9ECParameters getByName(String name)
  8. core/src/main/java/org/bouncycastle/asn1/anssi/ANSSINamedCurves.java:101 public static X9ECParameters getByOID(ASN1ObjectIdentifier oid)
  9. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:57 protected X9ECParameters createParameters()
  10. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:66 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  11. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:87 protected X9ECParameters createParameters()
  12. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:96 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  13. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:117 protected X9ECParameters createParameters()
  14. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:126 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  15. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:147 protected X9ECParameters createParameters()
  16. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:156 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  17. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:177 protected X9ECParameters createParameters()
  18. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:186 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  19. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:207 protected X9ECParameters createParameters()
  20. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:216 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  21. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:237 protected X9ECParameters createParameters()
  22. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:246 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  23. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:278 public static X9ECParameters getByNameX9(String name)
  24. core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java:290 public static X9ECParameters getByOIDX9(ASN1ObjectIdentifier oid)
  25. core/src/main/java/org/bouncycastle/asn1/gm/GMNamedCurves.java:54 protected X9ECParameters createParameters()
  26. core/src/main/java/org/bouncycastle/asn1/gm/GMNamedCurves.java:62 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  27. core/src/main/java/org/bouncycastle/asn1/gm/GMNamedCurves.java:79 protected X9ECParameters createParameters()
  28. core/src/main/java/org/bouncycastle/asn1/gm/GMNamedCurves.java:87 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  29. core/src/main/java/org/bouncycastle/asn1/gm/GMNamedCurves.java:110 public static X9ECParameters getByName(String name)
  30. core/src/main/java/org/bouncycastle/asn1/gm/GMNamedCurves.java:128 public static X9ECParameters getByOID(ASN1ObjectIdentifier oid)
  31. core/src/main/java/org/bouncycastle/asn1/nist/NISTNamedCurves.java:46 public static X9ECParameters getByName(String name)
  32. core/src/main/java/org/bouncycastle/asn1/nist/NISTNamedCurves.java:64 public static X9ECParameters getByOID(ASN1ObjectIdentifier oid)
  33. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:61 protected X9ECParameters createParameters()
  34. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:69 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  35. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:90 protected X9ECParameters createParameters()
  36. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:98 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  37. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:119 protected X9ECParameters createParameters()
  38. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:127 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  39. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:148 protected X9ECParameters createParameters()
  40. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:156 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  41. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:191 protected X9ECParameters createParameters()
  42. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:199 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  43. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:220 protected X9ECParameters createParameters()
  44. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:228 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  45. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:249 protected X9ECParameters createParameters()
  46. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:257 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  47. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:292 protected X9ECParameters createParameters()
  48. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:300 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  49. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:321 protected X9ECParameters createParameters()
  50. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:329 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  51. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:364 protected X9ECParameters createParameters()
  52. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:372 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  53. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:393 protected X9ECParameters createParameters()
  54. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:401 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  55. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:436 protected X9ECParameters createParameters()
  56. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:444 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  57. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:465 protected X9ECParameters createParameters()
  58. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:473 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  59. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:494 protected X9ECParameters createParameters()
  60. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:503 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  61. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:524 protected X9ECParameters createParameters()
  62. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:533 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  63. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:555 protected X9ECParameters createParameters()
  64. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:563 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  65. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:585 protected X9ECParameters createParameters()
  66. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:593 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  67. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:617 protected X9ECParameters createParameters()
  68. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:625 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  69. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:649 protected X9ECParameters createParameters()
  70. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:657 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  71. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:681 protected X9ECParameters createParameters()
  72. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:689 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  73. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:713 protected X9ECParameters createParameters()
  74. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:721 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  75. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:745 protected X9ECParameters createParameters()
  76. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:753 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  77. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:775 protected X9ECParameters createParameters()
  78. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:783 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  79. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:805 protected X9ECParameters createParameters()
  80. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:813 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  81. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:835 protected X9ECParameters createParameters()
  82. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:843 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  83. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:865 protected X9ECParameters createParameters()
  84. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:873 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  85. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:895 protected X9ECParameters createParameters()
  86. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:903 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  87. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:927 protected X9ECParameters createParameters()
  88. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:936 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  89. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:960 protected X9ECParameters createParameters()
  90. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:969 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  91. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:991 protected X9ECParameters createParameters()
  92. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:1000 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  93. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:1022 protected X9ECParameters createParameters()
  94. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:1031 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  95. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:1055 protected X9ECParameters createParameters()
  96. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:1064 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  97. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:1088 protected X9ECParameters createParameters()
  98. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:1097 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  99. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:1151 public static X9ECParameters getByName(String name)
  100. core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java:1169 public static X9ECParameters getByOID(ASN1ObjectIdentifier oid)
  101. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:53 protected X9ECParameters createParameters()
  102. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:61 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  103. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:80 protected X9ECParameters createParameters()
  104. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:88 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  105. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:106 protected X9ECParameters createParameters()
  106. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:114 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  107. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:133 protected X9ECParameters createParameters()
  108. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:141 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  109. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:159 protected X9ECParameters createParameters()
  110. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:167 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  111. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:186 protected X9ECParameters createParameters()
  112. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:194 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  113. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:212 protected X9ECParameters createParameters()
  114. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:220 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  115. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:239 protected X9ECParameters createParameters()
  116. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:247 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  117. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:265 protected X9ECParameters createParameters()
  118. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:273 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  119. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:292 protected X9ECParameters createParameters()
  120. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:300 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  121. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:318 protected X9ECParameters createParameters()
  122. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:326 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  123. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:345 protected X9ECParameters createParameters()
  124. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:353 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  125. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:371 protected X9ECParameters createParameters()
  126. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:379 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  127. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:398 protected X9ECParameters createParameters()
  128. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:406 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  129. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:440 public static X9ECParameters getByName(String name)
  130. core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java:458 public static X9ECParameters getByOID(ASN1ObjectIdentifier oid)
  131. core/src/main/java/org/bouncycastle/asn1/x9/ECNamedCurveTable.java:19 public class ECNamedCurveTable
  132. core/src/main/java/org/bouncycastle/asn1/x9/ECNamedCurveTable.java:28 public static X9ECParameters getByName(
  133. core/src/main/java/org/bouncycastle/asn1/x9/ECNamedCurveTable.java:31 X9ECParameters ecP = X962NamedCurves.getByName(name);
  134. core/src/main/java/org/bouncycastle/asn1/x9/ECNamedCurveTable.java:209 public static X9ECParameters getByOID(
  135. core/src/main/java/org/bouncycastle/asn1/x9/ECNamedCurveTable.java:212 X9ECParameters ecP = X962NamedCurves.getByOID(oid);
  136. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:50 protected X9ECParameters createParameters()
  137. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:58 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  138. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:76 protected X9ECParameters createParameters()
  139. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:84 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  140. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:102 protected X9ECParameters createParameters()
  141. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:110 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  142. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:128 protected X9ECParameters createParameters()
  143. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:136 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  144. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:154 protected X9ECParameters createParameters()
  145. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:162 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  146. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:180 protected X9ECParameters createParameters()
  147. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:188 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  148. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:206 protected X9ECParameters createParameters()
  149. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:214 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  150. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:236 protected X9ECParameters createParameters()
  151. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:244 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  152. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:263 protected X9ECParameters createParameters()
  153. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:271 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  154. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:290 protected X9ECParameters createParameters()
  155. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:298 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  156. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:317 protected X9ECParameters createParameters()
  157. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:325 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  158. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:344 protected X9ECParameters createParameters()
  159. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:352 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  160. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:371 protected X9ECParameters createParameters()
  161. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:379 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  162. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:398 protected X9ECParameters createParameters()
  163. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:406 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  164. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:425 protected X9ECParameters createParameters()
  165. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:433 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  166. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:452 protected X9ECParameters createParameters()
  167. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:460 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  168. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:479 protected X9ECParameters createParameters()
  169. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:487 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  170. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:506 protected X9ECParameters createParameters()
  171. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:514 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  172. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:533 protected X9ECParameters createParameters()
  173. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:541 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  174. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:560 protected X9ECParameters createParameters()
  175. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:568 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  176. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:587 protected X9ECParameters createParameters()
  177. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:595 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  178. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:614 protected X9ECParameters createParameters()
  179. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:622 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  180. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:641 protected X9ECParameters createParameters()
  181. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:649 return new X9ECParameters(curve, G, curve.getOrder(), curve.getCofactor(), S);
  182. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:692 public static X9ECParameters getByName(String name)
  183. core/src/main/java/org/bouncycastle/asn1/x9/X962NamedCurves.java:710 public static X9ECParameters getByOID(ASN1ObjectIdentifier oid)
  184. core/src/main/java/org/bouncycastle/asn1/x9/X962Parameters.java:61 X9ECParameters ecParameters)
  185. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java:22 public class X9ECParameters
  186. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java:34 private X9ECParameters(
  187. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java:40 throw new IllegalArgumentException("bad version in X9ECParameters");
  188. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java:66 public static X9ECParameters getInstance(Object obj)
  189. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java:68 if (obj instanceof X9ECParameters)
  190. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java:70 return (X9ECParameters)obj;
  191. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java:75 return new X9ECParameters(ASN1Sequence.getInstance(obj));
  192. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java:81 public X9ECParameters(
  193. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java:89 public X9ECParameters(
  194. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java:98 public X9ECParameters(
  195. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParametersHolder.java:11 private X9ECParameters params;
  196. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParametersHolder.java:23 public synchronized X9ECParameters getParameters()
  197. core/src/main/java/org/bouncycastle/asn1/x9/X9ECParametersHolder.java:38 protected abstract X9ECParameters createParameters();
  198. core/src/main/java/org/bouncycastle/crypto/CryptoServicesRegistrar.java:507 public static final Property EC_IMPLICITLY_CA = new Property("ecImplicitlyCA", X9ECParameters.class);
  199. core/src/main/java/org/bouncycastle/crypto/agreement/ECDHBasicAgreement.java:30 public class ECDHBasicAgreement
  200. core/src/main/java/org/bouncycastle/crypto/agreement/ECDHBasicAgreement.java:33 private ECPrivateKeyParameters key;

Showing the first 200. The CBOM has every one.

java.bouncycastle.ec · CWE-327
RSA Quantum-vulnerable Recorded traffic 5 places See details

RSA through the BouncyCastle low-level API

A BouncyCastle RSA engine or key-pair generator. These classes bypass the JCA algorithm strings, so they are invisible to a scan that only reads `getInstance()` arguments.

A quantum computer of sufficient size breaks this completely. It has to be replaced, not tuned. Broken by Shor's algorithm on a cryptographically relevant quantum computer.

What to do. ML-KEM-768 for encryption, ML-DSA-65 for signatures.

java.bouncycastle.rsa · CWE-327

Cryptographic assets

Algorithm Assessment What it means Occurrences
RSA Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 7276
unknown Could not be determined The algorithm could not be established from the source - chosen at runtime, or decided somewhere this scan does not reach. 3828
ECDSA Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 1721
AES Reduced margin Grover's algorithm halves the effective strength; the parameter, not the design, is the problem. The key size was not visible at this call site, so the weaker case is assumed. 872
DH Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 767
ECDH Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 718
SHA-256 Reduced margin Pre-image resistance falls to about 128 bits of quantum work. Adequate for most uses; SHA-384 restores the full margin where a signature must last decades. 593
ML-KEM-768 Quantum-safe No known quantum algorithm changes the security margin. 546
CSPRNG Quantum-safe A cryptographically secure random number generator provided by the platform. Not weakened by a quantum computer. 523
SHA-1 Already broken SHAttered and subsequent work produced practical collisions; NIST withdrew SHA-1 in 2030 guidance and it is already unacceptable for signatures. 416
Ed25519 Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 415
RSAES-PKCS1v15 Already broken PKCS#1 v1.5 encryption padding is vulnerable to Bleichenbacher oracles today, and the underlying RSA is broken by Shor. 366
ML-DSA-65 Quantum-safe No known quantum algorithm changes the security margin. 265
SHA-512 Quantum-safe No known quantum algorithm changes the security margin. 222
EC Quantum-vulnerable An elliptic-curve key pair. The source does not say whether it signs or agrees a shared secret, and the curve alone cannot: the same curve serves both. 220
EdDSA Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 198
3DES Already broken Triple DES is withdrawn by NIST and limited by its 64-bit block, independent of quantum. 196
SHA3-256 Reduced margin Grover's algorithm halves the effective strength; the parameter, not the design, is the problem. 168
TLS Quantum-vulnerable Every TLS cipher suite in general use negotiates a classical key exchange, so a recorded session is decryptable once that exchange falls. 161
DES Already broken A 56-bit key is brute-forced classically in hours. 130
PBKDF2 Reduced margin Not broken by a quantum computer, but weak against modern GPU cracking at low iteration counts, which is a present-day concern. 129
SLH-DSA Quantum-safe No known quantum algorithm changes the security margin. 121
DSA Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 119
RSA-1024 Already broken A modulus of 1024 bits or less is below the NIST SP 800-57 floor and is within reach of classical factorisation. Shor is not the nearest problem here. 119
SHA-384 Quantum-safe No known quantum algorithm changes the security margin. 107
BLAKE2 Quantum-safe No known quantum algorithm changes the security margin. 102
SHA-224 Reduced margin Grover's algorithm halves the effective strength; the parameter, not the design, is the problem. 88
XMSS Quantum-safe No known quantum algorithm changes the security margin. Stateful, with the same key-state obligation as LMS. 86
NULL Already broken A NULL cipher provides no confidentiality at all: the session is authenticated and then sent in the clear. No quantum computer is needed to read it. 83
ML-DSA-44 Quantum-safe No known quantum algorithm changes the security margin. 78
bcrypt Quantum-safe A password hashing function. Grover offers only a marginal speed-up against a deliberately slow function, so quantum computing is not the concern here. 58
ML-DSA-87 Quantum-safe No known quantum algorithm changes the security margin. 57
RC4 Already broken RC4 keystream biases break it classically; it is prohibited in TLS by RFC 7465. 52
X25519 Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 51
RIPEMD-160 Reduced margin A 160-bit digest, used in Bitcoin address derivation. Grover halves the pre-image margin; the 80-bit collision margin is the nearer concern. 51
ElGamal Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 49
MD5 Already broken Practical chosen-prefix collisions exist; MD5 has no remaining security as a digest. 48
SM3 Reduced margin Grover's algorithm halves the effective strength; the parameter, not the design, is the problem. 47
LMS Quantum-safe No known quantum algorithm changes the security margin. Stateful: reusing a one-time key destroys the security, so key state must be managed. 44
Blowfish Already broken A 64-bit block is vulnerable to birthday attacks on long sessions (Sweet32). 44
RSA-OAEP Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 34
ChaCha20-Poly1305 Quantum-safe No known quantum algorithm changes the security margin. 31
HMAC Quantum-safe A keyed MAC is not affected by Shor and only marginally by Grover. 28
HQC Quantum-safe No known quantum algorithm changes the security margin. 26
Salsa20 Quantum-safe No known quantum algorithm changes the security margin. The XSalsa20 and XChaCha20 variants share this property. 26
SM4 Reduced margin Grover's algorithm halves the effective strength; the parameter, not the design, is the problem. 24
Argon2 Quantum-safe The current recommended password hashing function. Not affected by Shor, and memory-hard against Grover. 18
scrypt Quantum-safe No known quantum algorithm changes the security margin. 15
RSA-PSS Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 14
SM2 Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. SM2 is an elliptic-curve scheme and falls with the rest. 12
ECIES Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 11
RSASSA-PKCS1v15 Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. The v1.5 signature scheme of RFC 8017 section 8.2 has no classical break of its own; RSA-PSS is preferred for new work, but the quantum exposure is the same for both. 8
ML-KEM-512 Quantum-safe No known quantum algorithm changes the security margin. 7
X448 Quantum-vulnerable Broken by Shor's algorithm on a cryptographically relevant quantum computer. 5
SHA3-512 Quantum-safe No known quantum algorithm changes the security margin. 3
ML-KEM-1024 Quantum-safe No known quantum algorithm changes the security margin. 3
AES-128 Reduced margin Grover's algorithm halves the effective strength; the parameter, not the design, is the problem. 2
AES-192 Reduced margin Grover's algorithm halves the effective strength; the parameter, not the design, is the problem. 2

Imported cryptographic libraries

Library Files
org.bouncycastle BouncyCastle, whose low-level API bypasses the JCA algorithm strings. It has shipped ML-KEM and ML-DSA since 1.79 316