I was curious in some SunEC internals and turned EC_DEBUG on, and found out the
library cannot be built. It looks like back when we switched to
warnings-as-errors some codes are not updated. Here is the patch:
diff --git a/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c
b/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c
--- a/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c
+++ b/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c
@@ -109,16 +109,16 @@
printf("\n");
if (k1 != NULL) {
- mp_tohex(k1, mpstr);
+ mp_tohex((mp_int*)k1, mpstr);
printf("ec_points_mul: scalar k1: %s\n", mpstr);
- mp_todecimal(k1, mpstr);
+ mp_todecimal((mp_int*)k1, mpstr);
printf("ec_points_mul: scalar k1: %s (dec)\n", mpstr);
}
if (k2 != NULL) {
- mp_tohex(k2, mpstr);
+ mp_tohex((mp_int*)k2, mpstr);
printf("ec_points_mul: scalar k2: %s\n", mpstr);
- mp_todecimal(k2, mpstr);
+ mp_todecimal((mp_int*)k2, mpstr);
printf("ec_points_mul: scalar k2: %s (dec)\n", mpstr);
}
diff --git a/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c
b/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c
--- a/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c
+++ b/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c
@@ -55,6 +55,9 @@
#include "ecl-curve.h"
#include "ecc_impl.h"
+#if EC_DEBUG
+#include <stdio.h>
+#endif
#define MAX_ECKEY_LEN 72
#define SEC_ASN1_OBJECT_ID 0x06
In the first file, k1 and k2 are defined as const mp_int * but mp_tohex accepts
a mp_int* as its 1st argument.
In the second file, there is a printf call in a EC_DEBUG block.
Noreg-cleanup.
Thanks
Max