aboutsummaryrefslogtreecommitdiff
path: root/src/applets/EC_Consts.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/applets/EC_Consts.java')
-rw-r--r--src/applets/EC_Consts.java67
1 files changed, 37 insertions, 30 deletions
diff --git a/src/applets/EC_Consts.java b/src/applets/EC_Consts.java
index bcf2b14..49eb59f 100644
--- a/src/applets/EC_Consts.java
+++ b/src/applets/EC_Consts.java
@@ -16,8 +16,9 @@ public class EC_Consts {
private static byte[] EC_R = null; //n
private static short EC_K = 1; //h
- private static byte[] EC_P_X = null; //Pubkey[x,y]
- private static byte[] EC_P_Y = null;
+ private static byte[] EC_W_X = null; //Pubkey[x,y]
+ private static byte[] EC_W_Y = null;
+ private static byte[] EC_S = null; //Private
private static byte[] EC_F2M_F2M = null; //[short i1, short i2, short i3], f = x^m + x^i1 + x^i2 + x^i3 + 1
@@ -962,14 +963,14 @@ public class EC_Consts {
public static final short ECSP128_FP_K = 1;
- public static final byte[] ECSP128_FP_P_X = {
+ public static final byte[] ECSP128_FP_W_X = {
(byte) 0x63, (byte) 0x90, (byte) 0x1e, (byte) 0x12,
(byte) 0x27, (byte) 0x61, (byte) 0xd9, (byte) 0xc1,
(byte) 0x65, (byte) 0x65, (byte) 0xb2, (byte) 0xf3,
(byte) 0x8e, (byte) 0x99, (byte) 0x1f, (byte) 0x71
};
- public static final byte[] ECSP128_FP_P_Y = {
+ public static final byte[] ECSP128_FP_W_Y = {
(byte) 0xb9, (byte) 0xd9, (byte) 0x9f, (byte) 0xbc,
(byte) 0x31, (byte) 0x54, (byte) 0xa9, (byte) 0x6c,
(byte) 0xa2, (byte) 0x3e, (byte) 0xcf, (byte) 0xf7,
@@ -1028,7 +1029,7 @@ public class EC_Consts {
public static final short ECSP160_FP_K = 1;
- public static final byte[] ECSP160_FP_P_X = {
+ public static final byte[] ECSP160_FP_W_X = {
(byte) 0x59, (byte) 0xc9, (byte) 0xc3, (byte) 0xc8,
(byte) 0xae, (byte) 0xf2, (byte) 0x9f, (byte) 0x1c,
(byte) 0x1c, (byte) 0x50, (byte) 0x0c, (byte) 0xaf,
@@ -1036,7 +1037,7 @@ public class EC_Consts {
(byte) 0x08, (byte) 0x6e, (byte) 0x6e, (byte) 0xb0
};
- public static final byte[] ECSP160_FP_P_Y = {
+ public static final byte[] ECSP160_FP_W_Y = {
(byte) 0xd6, (byte) 0x95, (byte) 0xa7, (byte) 0x60,
(byte) 0x05, (byte) 0xed, (byte) 0xdb, (byte) 0x26,
(byte) 0xaf, (byte) 0xd4, (byte) 0x0e, (byte) 0xe2,
@@ -1102,7 +1103,7 @@ public class EC_Consts {
public static final short ECSP192_FP_K = 1;
- public static final byte[] ECSP192_FP_P_X = {
+ public static final byte[] ECSP192_FP_W_X = {
(byte) 0xaa, (byte) 0xd0, (byte) 0xdb, (byte) 0xf8,
(byte) 0xad, (byte) 0x1c, (byte) 0x2c, (byte) 0x4e,
(byte) 0xf0, (byte) 0x67, (byte) 0xda, (byte) 0x63,
@@ -1111,7 +1112,7 @@ public class EC_Consts {
(byte) 0xb7, (byte) 0x7a, (byte) 0x59, (byte) 0x9c
};
- public static final byte[] ECSP192_FP_P_Y = {
+ public static final byte[] ECSP192_FP_W_Y = {
(byte) 0xae, (byte) 0x28, (byte) 0xd7, (byte) 0xea,
(byte) 0xde, (byte) 0xba, (byte) 0x10, (byte) 0x48,
(byte) 0x40, (byte) 0x64, (byte) 0x0d, (byte) 0x9b,
@@ -1184,7 +1185,7 @@ public class EC_Consts {
public static final short ECSP224_FP_K = 1;
- public static final byte[] ECSP224_FP_P_X = {
+ public static final byte[] ECSP224_FP_W_X = {
(byte) 0xcf, (byte) 0xd9, (byte) 0x2a, (byte) 0xea,
(byte) 0x0f, (byte) 0x79, (byte) 0x19, (byte) 0x0c,
(byte) 0x48, (byte) 0xca, (byte) 0x70, (byte) 0x3e,
@@ -1194,7 +1195,7 @@ public class EC_Consts {
(byte) 0xfe, (byte) 0x4d, (byte) 0x0f, (byte) 0x04
};
- public static final byte[] ECSP224_FP_P_Y = {
+ public static final byte[] ECSP224_FP_W_Y = {
(byte) 0x25, (byte) 0x7a, (byte) 0x3d, (byte) 0x98,
(byte) 0xde, (byte) 0x44, (byte) 0xbd, (byte) 0x25,
(byte) 0x40, (byte) 0x49, (byte) 0x77, (byte) 0xa4,
@@ -1274,7 +1275,7 @@ public class EC_Consts {
public static final short ECSP256_FP_K = 1;
- public static final byte[] ECSP256_FP_P_X = {
+ public static final byte[] ECSP256_FP_W_X = {
(byte) 0x75, (byte) 0xfc, (byte) 0xe7, (byte) 0x09,
(byte) 0x68, (byte) 0x86, (byte) 0x2d, (byte) 0x53,
(byte) 0xe2, (byte) 0x95, (byte) 0x48, (byte) 0xaa,
@@ -1285,7 +1286,7 @@ public class EC_Consts {
(byte) 0xf8, (byte) 0xda, (byte) 0xd6, (byte) 0x53
};
- public static final byte[] ECSP256_FP_P_Y = {
+ public static final byte[] ECSP256_FP_W_Y = {
(byte) 0x55, (byte) 0xaa, (byte) 0x4b, (byte) 0x7d,
(byte) 0x38, (byte) 0x82, (byte) 0xfb, (byte) 0x0a,
(byte) 0x83, (byte) 0xbd, (byte) 0x00, (byte) 0xc9,
@@ -1390,7 +1391,7 @@ public class EC_Consts {
public static final short ECSP384_FP_K = 1;
- public static final byte[] ECSP384_FP_P_X = {
+ public static final byte[] ECSP384_FP_W_X = {
(byte) 0xa4, (byte) 0xbd, (byte) 0x57, (byte) 0x5b,
(byte) 0xf2, (byte) 0x03, (byte) 0x00, (byte) 0xb0,
(byte) 0xcf, (byte) 0x8a, (byte) 0x2f, (byte) 0x41,
@@ -1405,7 +1406,7 @@ public class EC_Consts {
(byte) 0x34, (byte) 0x83, (byte) 0x4e, (byte) 0xf1
};
- public static final byte[] ECSP384_FP_P_Y = {
+ public static final byte[] ECSP384_FP_W_Y = {
(byte) 0x38, (byte) 0xd5, (byte) 0x1c, (byte) 0x8f,
(byte) 0x9e, (byte) 0x90, (byte) 0x59, (byte) 0x2f,
(byte) 0x56, (byte) 0x7e, (byte) 0x81, (byte) 0xd0,
@@ -1544,7 +1545,7 @@ public class EC_Consts {
public static final short ECSP521_FP_K = 1;
- public static final byte[] ECSP521_FP_P_X = {
+ public static final byte[] ECSP521_FP_W_X = {
(byte) 0xfc, (byte) 0xcf, (byte) 0x5c, (byte) 0x11,
(byte) 0x3b, (byte) 0xec, (byte) 0x94, (byte) 0x61,
(byte) 0xdb, (byte) 0x3e, (byte) 0x56, (byte) 0x73,
@@ -1564,7 +1565,7 @@ public class EC_Consts {
(byte) 0xde
};
- public static final byte[] ECSP521_FP_P_Y = {
+ public static final byte[] ECSP521_FP_W_Y = {
(byte) 0xc3, (byte) 0x6d, (byte) 0x08, (byte) 0x8f,
(byte) 0xc2, (byte) 0xfe, (byte) 0x3b, (byte) 0x42,
(byte) 0x90, (byte) 0x7b, (byte) 0xbf, (byte) 0x8a,
@@ -1822,8 +1823,8 @@ public class EC_Consts {
EC_G_Y = ECSP128_FP_G_Y;
EC_R = ECSP128_FP_R;
EC_K = ECSP128_FP_K;
- EC_P_X = ECSP128_FP_P_X;
- EC_P_Y = ECSP128_FP_P_Y;
+ EC_W_X = ECSP128_FP_W_X;
+ EC_W_Y = ECSP128_FP_W_Y;
break;
}
case CURVE_sp160: {
@@ -1834,8 +1835,8 @@ public class EC_Consts {
EC_G_Y = ECSP160_FP_G_Y;
EC_R = ECSP160_FP_R;
EC_K = ECSP160_FP_K;
- EC_P_X = ECSP160_FP_P_X;
- EC_P_Y = ECSP160_FP_P_Y;
+ EC_W_X = ECSP160_FP_W_X;
+ EC_W_Y = ECSP160_FP_W_Y;
break;
}
case CURVE_sp192: {
@@ -1846,8 +1847,8 @@ public class EC_Consts {
EC_G_Y = ECSP192_FP_G_Y;
EC_R = ECSP192_FP_R;
EC_K = ECSP192_FP_K;
- EC_P_X = ECSP192_FP_P_X;
- EC_P_Y = ECSP192_FP_P_Y;
+ EC_W_X = ECSP192_FP_W_X;
+ EC_W_Y = ECSP192_FP_W_Y;
break;
}
case CURVE_sp224: {
@@ -1858,8 +1859,8 @@ public class EC_Consts {
EC_G_Y = ECSP224_FP_G_Y;
EC_R = ECSP224_FP_R;
EC_K = ECSP224_FP_K;
- EC_P_X = ECSP224_FP_P_X;
- EC_P_Y = ECSP224_FP_P_Y;
+ EC_W_X = ECSP224_FP_W_X;
+ EC_W_Y = ECSP224_FP_W_Y;
break;
}
case CURVE_sp256: {
@@ -1870,8 +1871,8 @@ public class EC_Consts {
EC_G_Y = ECSP256_FP_G_Y;
EC_R = ECSP256_FP_R;
EC_K = ECSP256_FP_K;
- EC_P_X = ECSP256_FP_P_X;
- EC_P_Y = ECSP256_FP_P_Y;
+ EC_W_X = ECSP256_FP_W_X;
+ EC_W_Y = ECSP256_FP_W_Y;
break;
}
case CURVE_sp384: {
@@ -1882,8 +1883,8 @@ public class EC_Consts {
EC_G_Y = ECSP384_FP_G_Y;
EC_R = ECSP384_FP_R;
EC_K = ECSP384_FP_K;
- EC_P_X = ECSP384_FP_P_X;
- EC_P_Y = ECSP384_FP_P_Y;
+ EC_W_X = ECSP384_FP_W_X;
+ EC_W_Y = ECSP384_FP_W_Y;
break;
}
case CURVE_sp521: {
@@ -1894,8 +1895,8 @@ public class EC_Consts {
EC_G_Y = ECSP521_FP_G_Y;
EC_R = ECSP521_FP_R;
EC_K = ECSP521_FP_K;
- EC_P_X = ECSP521_FP_P_X;
- EC_P_Y = ECSP521_FP_P_Y;
+ EC_W_X = ECSP521_FP_W_X;
+ EC_W_Y = ECSP521_FP_W_Y;
break;
}
default:
@@ -1929,6 +1930,12 @@ public class EC_Consts {
length = 2;
Util.setShort(outputBuffer, outputOffset, EC_K);
break;
+ case PARAMETER_W:
+ length = toX962(outputBuffer, outputOffset, EC_W_X, (short) 0, (short) EC_W_X.length, EC_W_Y, (short) 0, (short) EC_W_Y.length);
+ break;
+ case PARAMETER_S:
+ length = Util.arrayCopyNonAtomic(EC_S, (short) 0, outputBuffer, outputOffset, (short) EC_S.length);
+ break;
default:
ISOException.throwIt(ISO7816.SW_FUNC_NOT_SUPPORTED);
}