Skip to content

Commit 065b725

Browse files
author
mcarrickscott
committed
Added full support for NIST P-384 curve
1 parent cff161b commit 065b725

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed

source/mrcomba.tpl

+79
Original file line numberDiff line numberDiff line change
@@ -967,6 +967,85 @@ comba_sub(z,w,z);
967967
#endif
968968
#endif
969969

970+
#if MR_COMBA == 12
971+
#ifndef MR_NOFULLWIDTH
972+
973+
/* NIST P-384 curve */
974+
975+
a=t->w; b=k; c=z->w;
976+
k[0]=k[1]=k[2]=k[3]=0; k[4]=a[21]; k[5]=a[22]; k[6]=a[23]; k[7]=k[8]=k[9]=k[10]=k[11]=0;
977+
978+
/*** ADDITION ***/
979+
overshoot=carry;
980+
a=c; c=t->w;
981+
982+
/*** INCREMENT ***/
983+
overshoot+=carry;
984+
985+
k[0]=c[12]; k[1]=c[13]; k[2]=c[14]; k[3]=c[15]; k[4]=c[16]; k[5]=c[17]; k[6]=c[18]; k[7]=c[19]; k[8]=c[20]; k[9]=c[21]; k[10]=c[22]; k[11]=c[23];
986+
987+
/*** INCREMENT ***/
988+
overshoot+=carry;
989+
990+
k[0]=c[21]; k[1]=c[22]; k[2]=c[23]; k[3]=c[12]; k[4]=c[13]; k[5]=c[14]; k[6]=c[15]; k[7]=c[16]; k[8]=c[17]; k[9]=c[18]; k[10]=c[19]; k[11]=c[20];
991+
992+
/*** INCREMENT ***/
993+
overshoot+=carry;
994+
995+
k[0]=k[2]=0; k[1]=c[23]; k[3]=c[20]; k[4]=c[12]; k[5]=c[13]; k[6]=c[14]; k[7]=c[15]; k[8]=c[16]; k[9]=c[17]; k[10]=c[18]; k[11]=c[19];
996+
997+
/*** INCREMENT ***/
998+
overshoot+=carry;
999+
1000+
k[0]=k[1]=k[2]=k[3]=0; k[4]=c[20]; k[5]=c[21]; k[6]=c[22]; k[7]=c[23]; k[8]=k[9]=k[10]=k[11]=0;
1001+
1002+
/*** INCREMENT ***/
1003+
overshoot+=carry;
1004+
1005+
k[0]=c[20]; k[1]=k[2]=0; k[3]=c[21]; k[4]=c[22]; k[5]=c[23]; k[6]=k[7]=k[8]=k[9]=k[10]=k[11]=0;
1006+
1007+
/*** INCREMENT ***/
1008+
overshoot+=carry;
1009+
1010+
k[0]=c[23]; k[1]=c[12]; k[2]=c[13]; k[3]=c[14]; k[4]=c[15]; k[5]=c[16]; k[6]=c[17]; k[7]=c[18]; k[8]=c[19]; k[9]=c[20]; k[10]=c[21]; k[11]=c[22];
1011+
1012+
/*** DECREMENT ***/
1013+
overshoot-=carry;
1014+
1015+
k[0]=0; k[1]=c[20]; k[2]=c[21]; k[3]=c[22]; k[4]=c[23]; k[5]=k[6]=k[7]=k[8]=k[9]=k[10]=k[11]=0;
1016+
1017+
/*** DECREMENT ***/
1018+
overshoot-=carry;
1019+
1020+
k[0]=k[1]=k[2]=0; k[3]=k[4]=c[23]; k[5]=k[6]=k[7]=k[8]=k[9]=k[10]=k[11]=0;
1021+
1022+
/*** DECREMENT ***/
1023+
overshoot-=carry;
1024+
1025+
b=modulus->w;
1026+
while (overshoot>0)
1027+
{
1028+
/*** DECREMENT ***/
1029+
overshoot-=carry;
1030+
}
1031+
while (overshoot<0)
1032+
{
1033+
/*** INCREMENT ***/
1034+
overshoot+=carry;
1035+
}
1036+
if (z->w[MR_COMBA-1]>=modulus->w[MR_COMBA-1])
1037+
{
1038+
if (mr_compare(z,modulus)>=0)
1039+
{
1040+
/*** DECREMENT ***/
1041+
}
1042+
}
1043+
if (z->w[MR_COMBA-1]==0) mr_lzero(z);
1044+
1045+
#endif
1046+
#endif
1047+
1048+
9701049
#if MR_COMBA == 17
9711050

9721051
/* Special Code for 2^521-1 - assuming 32-bit processor */

source/secp384.ecs

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
384
2+
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF
3+
-3
4+
b3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef
5+
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973
6+
aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7
7+
3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f

0 commit comments

Comments
 (0)