You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@milagro.apache.org by br...@apache.org on 2019/01/15 15:19:23 UTC

[18/51] [partial] incubator-milagro-crypto git commit: update code

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/1add7560/version3/c/config32.py
----------------------------------------------------------------------
diff --git a/version3/c/config32.py b/version3/c/config32.py
deleted file mode 100644
index ebefbff..0000000
--- a/version3/c/config32.py
+++ /dev/null
@@ -1,645 +0,0 @@
-import os
-import sys
-
-deltext=""
-if sys.platform.startswith("linux")  :
-	deltext="rm"
-	copytext="cp"
-if sys.platform.startswith("darwin")  :
-	deltext="rm"
-	copytext="cp"
-if sys.platform.startswith("win") :
-	deltext="del"
-	copytext="copy"
-
-def replace(namefile,oldtext,newtext):
-	f = open(namefile,'r')
-	filedata = f.read()
-	f.close()
-
-	newdata = filedata.replace(oldtext,newtext)
-
-	f = open(namefile,'w')
-	f.write(newdata)
-	f.close()
-
-
-def rsaset(tb,tff,nb,base,ml) :
-	bd=tb+"_"+base
-	fnameh="config_big_"+bd+".h"
-	os.system(copytext+" config_big.h "+fnameh)
-	replace(fnameh,"XXX",bd)
-	replace(fnameh,"@NB@",nb)
-	replace(fnameh,"@BASE@",base)
-
-	fnameh="config_ff_"+tff+".h"
-	os.system(copytext+" config_ff.h "+fnameh)
-	replace(fnameh,"XXX",bd)
-	replace(fnameh,"WWW",tff)
-	replace(fnameh,"@ML@",ml);
-
-	fnamec="big_"+bd+".c"
-	fnameh="big_"+bd+".h"
-
-	os.system(copytext+" big.c "+fnamec)
-	os.system(copytext+" big.h "+fnameh)
-
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-	fnamec="ff_"+tff+".c"
-	fnameh="ff_"+tff+".h"
-
-	os.system(copytext+" ff.c "+fnamec)
-	os.system(copytext+" ff.h "+fnameh)
-
-	replace(fnamec,"WWW",tff)
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"WWW",tff)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-	fnamec="rsa_"+tff+".c"
-	fnameh="rsa_"+tff+".h"
-
-	os.system(copytext+" rsa.c "+fnamec)
-	os.system(copytext+" rsa.h "+fnameh)
-
-	replace(fnamec,"WWW",tff)
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"WWW",tff)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-def curveset(tb,tf,tc,nb,base,nbt,m8,mt,ct,pf,stw,sx,cs) :
-	bd=tb+"_"+base
-
-	fnameh="config_big_"+bd+".h"
-	os.system(copytext+" config_big.h "+fnameh)
-
-	replace(fnameh,"XXX",bd)
-	replace(fnameh,"@NB@",nb)
-	replace(fnameh,"@BASE@",base)
-
-
-	fnameh="config_field_"+tf+".h"
-	os.system(copytext+" config_field.h "+fnameh)
-	replace(fnameh,"XXX",bd)
-	replace(fnameh,"YYY",tf)
-	replace(fnameh,"@NBT@",nbt)
-	replace(fnameh,"@M8@",m8)
-	replace(fnameh,"@MT@",mt)
-
-	ib=int(base)
-
-	ib=int(base)
-	inb=int(nb)
-	inbt=int(nbt)
-	sh=ib*(1+((8*inb-1)//ib))-inbt
-	if sh > 14 :
-		sh=14
-	replace(fnameh,"@SH@",str(sh))
-
-	fnameh="config_curve_"+tc+".h"	
-	os.system(copytext+" config_curve.h "+fnameh)
-	replace(fnameh,"XXX",bd)
-	replace(fnameh,"YYY",tf)
-	replace(fnameh,"ZZZ",tc)
-	replace(fnameh,"@CT@",ct)
-	replace(fnameh,"@PF@",pf)
-
-	replace(fnameh,"@ST@",stw)
-	replace(fnameh,"@SX@",sx)
-	replace(fnameh,"@CS@",cs)
-
-	fnamec="big_"+bd+".c"
-	fnameh="big_"+bd+".h"
-
-	os.system(copytext+" big.c "+fnamec)
-	os.system(copytext+" big.h "+fnameh)
-
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-	fnamec="fp_"+tf+".c"
-	fnameh="fp_"+tf+".h"
-
-	os.system(copytext+" fp.c "+fnamec)
-	os.system(copytext+" fp.h "+fnameh)
-
-	replace(fnamec,"YYY",tf)
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"YYY",tf)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-	os.system("gcc -O3 -std=c99 -c rom_field_"+tf+".c");
-
-	fnamec="ecp_"+tc+".c"
-	fnameh="ecp_"+tc+".h"
-
-	os.system(copytext+" ecp.c "+fnamec)
-	os.system(copytext+" ecp.h "+fnameh)
-
-	replace(fnamec,"ZZZ",tc)
-	replace(fnamec,"YYY",tf)
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"ZZZ",tc)
-	replace(fnameh,"YYY",tf)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-	fnamec="ecdh_"+tc+".c"
-	fnameh="ecdh_"+tc+".h"
-
-	os.system(copytext+" ecdh.c "+fnamec)
-	os.system(copytext+" ecdh.h "+fnameh)
-
-	replace(fnamec,"ZZZ",tc)
-	replace(fnamec,"YYY",tf)
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"ZZZ",tc)
-	replace(fnameh,"YYY",tf)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-	os.system("gcc -O3 -std=c99 -c rom_curve_"+tc+".c");
-
-	if pf != "NOT" :
-		fnamec="fp2_"+tf+".c"
-		fnameh="fp2_"+tf+".h"
-
-		os.system(copytext+" fp2.c "+fnamec)
-		os.system(copytext+" fp2.h "+fnameh)
-		replace(fnamec,"YYY",tf)
-		replace(fnamec,"XXX",bd)
-		replace(fnameh,"YYY",tf)
-		replace(fnameh,"XXX",bd)
-		os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-		fnamec="fp4_"+tf+".c"
-		fnameh="fp4_"+tf+".h"
-
-		os.system(copytext+" fp4.c "+fnamec)
-		os.system(copytext+" fp4.h "+fnameh)
-		replace(fnamec,"YYY",tf)
-		replace(fnamec,"XXX",bd)
-		replace(fnamec,"ZZZ",tc)
-		replace(fnameh,"YYY",tf)
-		replace(fnameh,"XXX",bd)
-		replace(fnameh,"ZZZ",tc)
-		os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-
-		if cs == "128" :
-			fnamec="fp12_"+tf+".c"
-			fnameh="fp12_"+tf+".h"
-
-			os.system(copytext+" fp12.c "+fnamec)
-			os.system(copytext+" fp12.h "+fnameh)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="ecp2_"+tc+".c"
-			fnameh="ecp2_"+tc+".h"
-
-			os.system(copytext+" ecp2.c "+fnamec)
-			os.system(copytext+" ecp2.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="pair_"+tc+".c"
-			fnameh="pair_"+tc+".h"
-
-			os.system(copytext+" pair.c "+fnamec)
-			os.system(copytext+" pair.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="mpin_"+tc+".c"
-			fnameh="mpin_"+tc+".h"
-
-			os.system(copytext+" mpin.c "+fnamec)
-			os.system(copytext+" mpin.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-		if cs == "192" :
-			fnamec="fp8_"+tf+".c"
-			fnameh="fp8_"+tf+".h"
-
-			os.system(copytext+" fp8.c "+fnamec)
-			os.system(copytext+" fp8.h "+fnameh)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-
-			fnamec="fp24_"+tf+".c"
-			fnameh="fp24_"+tf+".h"
-
-			os.system(copytext+" fp24.c "+fnamec)
-			os.system(copytext+" fp24.h "+fnameh)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="ecp4_"+tc+".c"
-			fnameh="ecp4_"+tc+".h"
-
-			os.system(copytext+" ecp4.c "+fnamec)
-			os.system(copytext+" ecp4.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="pair192_"+tc+".c"
-			fnameh="pair192_"+tc+".h"
-
-			os.system(copytext+" pair192.c "+fnamec)
-			os.system(copytext+" pair192.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="mpin192_"+tc+".c"
-			fnameh="mpin192_"+tc+".h"
-
-			os.system(copytext+" mpin192.c "+fnamec)
-			os.system(copytext+" mpin192.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)		
-
-		if cs == "256" :
-
-			fnamec="fp8_"+tf+".c"
-			fnameh="fp8_"+tf+".h"
-
-			os.system(copytext+" fp8.c "+fnamec)
-			os.system(copytext+" fp8.h "+fnameh)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-
-			fnamec="ecp8_"+tc+".c"
-			fnameh="ecp8_"+tc+".h"
-
-			os.system(copytext+" ecp8.c "+fnamec)
-			os.system(copytext+" ecp8.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-
-			fnamec="fp16_"+tf+".c"
-			fnameh="fp16_"+tf+".h"
-
-			os.system(copytext+" fp16.c "+fnamec)
-			os.system(copytext+" fp16.h "+fnameh)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-
-			fnamec="fp48_"+tf+".c"
-			fnameh="fp48_"+tf+".h"
-
-			os.system(copytext+" fp48.c "+fnamec)
-			os.system(copytext+" fp48.h "+fnameh)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-
-			fnamec="pair256_"+tc+".c"
-			fnameh="pair256_"+tc+".h"
-
-			os.system(copytext+" pair256.c "+fnamec)
-			os.system(copytext+" pair256.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="mpin256_"+tc+".c"
-			fnameh="mpin256_"+tc+".h"
-
-			os.system(copytext+" mpin256.c "+fnamec)
-			os.system(copytext+" mpin256.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)				
-
-replace("arch.h","@WL@","32")
-print("Elliptic Curves")
-print("1. ED25519")
-print("2. C25519")
-print("3. NIST256")
-print("4. BRAINPOOL")
-print("5. ANSSI")
-print("6. HIFIVE")
-print("7. GOLDILOCKS")
-print("8. NIST384")
-print("9. C41417")
-print("10. NIST521\n")
-print("11. NUMS256W")
-print("12. NUMS256E")
-print("13. NUMS384W")
-print("14. NUMS384E")
-print("15. NUMS512W")
-print("16. NUMS512E")
-print("17. SECP256K1\n")
-
-print("Pairing-Friendly Elliptic Curves")
-print("18. BN254")
-print("19. BN254CX")
-print("20. BLS383")
-print("21. BLS381")
-print("22. FP256BN")
-print("23. FP512BN")
-print("24. BLS461\n")
-print("25. BLS24")
-print("26. BLS48\n")
-
-print("RSA")
-print("27. RSA2048")
-print("28. RSA3072")
-print("29. RSA4096")
-
-selection=[]
-ptr=0
-max=30
-
-curve_selected=False
-pfcurve_selected=False
-rsa_selected=False
-
-while ptr<max:
-	x=int(input("Choose a Scheme to support - 0 to finish: "))
-	if x == 0:
-		break
-#	print("Choice= ",x)
-	already=False
-	for i in range(0,ptr):
-		if x==selection[i]:
-			already=True
-			break
-	if already:
-		continue
-	
-	selection.append(x)
-	ptr=ptr+1
-
-# curveset(big,field,curve,big_length_bytes,bits_in_base,modulus_bits,modulus_mod_8,modulus_type,curve_type,pairing_friendly,sextic twist,sign of x,curve security)
-# for each curve give names for big, field and curve. In many cases the latter two will be the same. 
-# Typically "big" is the size in bits, always a multiple of 8, "field" describes the modulus, and "curve" is the common name for the elliptic curve   
-# big_length_bytes is "big" divided by 8
-# Next give the number base used for 32 bit architectures, as n where the base is 2^n (note that these must be fixed for the same "big" name, if is ever re-used for another curve)
-# modulus_bits is the bit length of the modulus, typically the same or slightly smaller than "big"
-# modulus_mod_8 is the remainder when the modulus is divided by 8
-# modulus_type is NOT_SPECIAL, or PSEUDO_MERSENNE, or MONTGOMERY_Friendly, or GENERALISED_MERSENNE (supported for GOLDILOCKS only)
-# curve_type is WEIERSTRASS, EDWARDS or MONTGOMERY
-# pairing_friendly is BN, BLS or NOT (if not pairing friendly)
-# if pairing friendly. M or D type twist, and sign of the family parameter x
-# curve security is AES equiavlent, rounded up.
-
-	if x==1:
-		curveset("256","25519","ED25519","32","29","255","5","PSEUDO_MERSENNE","EDWARDS","NOT","","","128")
-		curve_selected=True
-	if x==2:
-		curveset("256","25519","C25519","32","29","255","5","PSEUDO_MERSENNE","MONTGOMERY","NOT","","","128")
-		curve_selected=True
-	if x==3:
-		curveset("256","NIST256","NIST256","32","28","256","7","NOT_SPECIAL","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-	if x==4:
-		curveset("256","BRAINPOOL","BRAINPOOL","32","28","256","7","NOT_SPECIAL","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-	if x==5:
-		curveset("256","ANSSI","ANSSI","32","28","256","7","NOT_SPECIAL","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-
-	if x==6:
-		curveset("336","HIFIVE","HIFIVE","42","29","336","5","PSEUDO_MERSENNE","EDWARDS","NOT","","","192")
-		curve_selected=True
-	if x==7:
-		curveset("448","GOLDILOCKS","GOLDILOCKS","56","29","448","7","GENERALISED_MERSENNE","EDWARDS","NOT","","","256")
-		curve_selected=True
-	if x==8:
-		curveset("384","NIST384","NIST384","48","29","384","7","NOT_SPECIAL","WEIERSTRASS","NOT","","","192")
-		curve_selected=True
-	if x==9:
-		curveset("416","C41417","C41417","52","29","414","7","PSEUDO_MERSENNE","EDWARDS","NOT","","","256")
-		curve_selected=True
-	if x==10:
-		curveset("528","NIST521","NIST521","66","28","521","7","PSEUDO_MERSENNE","WEIERSTRASS","NOT","","","256")
-		curve_selected=True
-
-	if x==11:
-		curveset("256","256PMW","NUMS256W","32","28","256","3","PSEUDO_MERSENNE","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-	if x==12:
-		curveset("256","256PME","NUMS256E","32","29","256","3","PSEUDO_MERSENNE","EDWARDS","NOT","","","128")
-		curve_selected=True
-	if x==13:
-		curveset("384","384PM","NUMS384W","48","29","384","3","PSEUDO_MERSENNE","WEIERSTRASS","NOT","","","192")
-		curve_selected=True
-	if x==14:
-		curveset("384","384PM","NUMS384E","48","29","384","3","PSEUDO_MERSENNE","EDWARDS","NOT","","","192")
-		curve_selected=True
-	if x==15:
-		curveset("512","512PM","NUMS512W","64","29","512","7","PSEUDO_MERSENNE","WEIERSTRASS","NOT","","","256")
-		curve_selected=True
-	if x==16:
-		curveset("512","512PM","NUMS512E","64","29","512","7","PSEUDO_MERSENNE","EDWARDS","NOT","","","256")
-		curve_selected=True
-
-	if x==17:
-		curveset("256","SECP256K1","SECP256K1","32","28","256","7","NOT_SPECIAL","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-
-
-	if x==18:
-		curveset("256","BN254","BN254","32","28","254","3","NOT_SPECIAL","WEIERSTRASS","BN","D_TYPE","NEGATIVEX","128")
-		pfcurve_selected=True
-	if x==19:
-		curveset("256","BN254CX","BN254CX","32","28","254","3","NOT_SPECIAL","WEIERSTRASS","BN","D_TYPE","NEGATIVEX","128")
-		pfcurve_selected=True
-	if x==20:
-		curveset("384","BLS383","BLS383","48","29","383","3","NOT_SPECIAL","WEIERSTRASS","BLS","M_TYPE","POSITIVEX","128")
-		pfcurve_selected=True
-
-	if x==21:
-		curveset("384","BLS381","BLS381","48","29","381","3","NOT_SPECIAL","WEIERSTRASS","BLS","M_TYPE","NEGATIVEX","128")
-		pfcurve_selected=True
-
-	if x==22:
-		curveset("256","FP256BN","FP256BN","32","28","256","3","NOT_SPECIAL","WEIERSTRASS","BN","M_TYPE","NEGATIVEX","128")
-		pfcurve_selected=True
-	if x==23:
-		curveset("512","FP512BN","FP512BN","64","29","512","3","NOT_SPECIAL","WEIERSTRASS","BN","M_TYPE","POSITIVEX","128")
-		pfcurve_selected=True
-# https://eprint.iacr.org/2017/334.pdf
-	if x==24:
-		curveset("464","BLS461","BLS461","58","28","461","3","NOT_SPECIAL","WEIERSTRASS","BLS","M_TYPE","NEGATIVEX","128")
-		pfcurve_selected=True
-
-	if x==25:
-		curveset("480","BLS24","BLS24","60","29","479","3","NOT_SPECIAL","WEIERSTRASS","BLS","M_TYPE","POSITIVEX","192")
-		pfcurve_selected=True
-
-
-	if x==26:
-		curveset("560","BLS48","BLS48","70","29","556","3","NOT_SPECIAL","WEIERSTRASS","BLS","M_TYPE","POSITIVEX","256")
-		pfcurve_selected=True
-
-
-# rsaset(big,ring,big_length_bytes,bits_in_base,multiplier)
-# for each choice give distinct names for "big" and "ring".
-# Typically "big" is the length in bits of the underlying big number type
-# "ring" is the RSA modulus size = "big" times 2^m
-# big_length_bytes is "big" divided by 8
-# Next give the number base used for 32 bit architecture, as n where the base is 2^n
-# multiplier is 2^m (see above)
-
-# There are choices here, different ways of getting the same result, but some faster than others
-	if x==27:
-		#256 is slower but may allow reuse of 256-bit BIGs used for elliptic curve
-		#512 is faster.. but best is 1024
-		rsaset("1024","2048","128","28","2")
-		#rsaset("512","2048","64","29","4")
-		#rsaset("256","2048","32","29","8")
-		rsa_selected=True
-	if x==28:
-		rsaset("384","3072","48","28","8")
-		rsa_selected=True
-	if x==29:
-		#rsaset("256","4096","32","29","16")
-		rsaset("512","4096","64","29","8")
-		rsa_selected=True
-
-
-os.system(deltext+" big.*")
-os.system(deltext+" fp.*")
-os.system(deltext+" ecp.*")
-os.system(deltext+" ecdh.*")
-os.system(deltext+" ff.*")
-os.system(deltext+" rsa.*")
-os.system(deltext+" config_big.h")
-os.system(deltext+" config_field.h")
-os.system(deltext+" config_curve.h")
-os.system(deltext+" config_ff.h")
-os.system(deltext+" fp2.*")
-os.system(deltext+" fp4.*")
-os.system(deltext+" fp8.*")
-os.system(deltext+" fp16.*")
-
-
-os.system(deltext+" fp12.*")
-os.system(deltext+" fp24.*")
-os.system(deltext+" fp48.*")
-
-os.system(deltext+" ecp2.*")
-os.system(deltext+" ecp4.*")
-os.system(deltext+" ecp8.*")
-
-os.system(deltext+" pair.*")
-os.system(deltext+" mpin.*")
-
-os.system(deltext+" pair192.*")
-os.system(deltext+" mpin192.*")
-
-os.system(deltext+" pair256.*")
-os.system(deltext+" mpin256.*")
-
-# create library
-os.system("gcc -O3 -std=c99 -c randapi.c")
-if curve_selected :
-	os.system("gcc -O3 -std=c99 -c ecdh_support.c")
-if rsa_selected :
-	os.system("gcc -O3 -std=c99 -c rsa_support.c")
-if pfcurve_selected :
-	os.system("gcc -O3 -std=c99 -c pbc_support.c")
-
-os.system("gcc -O3 -std=c99 -c hash.c")
-os.system("gcc -O3 -std=c99 -c rand.c")
-os.system("gcc -O3 -std=c99 -c oct.c")
-os.system("gcc -O3 -std=c99 -c aes.c")
-os.system("gcc -O3 -std=c99 -c gcm.c")
-os.system("gcc -O3 -std=c99 -c newhope.c")
-
-if sys.platform.startswith("win") :
-	os.system("for %i in (*.o) do @echo %~nxi >> f.list")
-	os.system("ar rc amcl.a @f.list")
-	os.system(deltext+" f.list")
-
-else :
-	os.system("ar rc amcl.a *.o")
-	
-os.system(deltext+" *.o")
-
-#print("Your section was ");	
-#for i in range(0,ptr):
-#	print (selection[i])
-

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/1add7560/version3/c/config64.py
----------------------------------------------------------------------
diff --git a/version3/c/config64.py b/version3/c/config64.py
deleted file mode 100644
index af08df3..0000000
--- a/version3/c/config64.py
+++ /dev/null
@@ -1,639 +0,0 @@
-import os
-import sys
-
-deltext=""
-if sys.platform.startswith("linux")  :
-	deltext="rm"
-	copytext="cp"
-if sys.platform.startswith("darwin")  :
-	deltext="rm"
-	copytext="cp"
-if sys.platform.startswith("win") :
-	deltext="del"
-	copytext="copy"
-
-def replace(namefile,oldtext,newtext):
-	f = open(namefile,'r')
-	filedata = f.read()
-	f.close()
-
-	newdata = filedata.replace(oldtext,newtext)
-
-	f = open(namefile,'w')
-	f.write(newdata)
-	f.close()
-
-
-def rsaset(tb,tff,nb,base,ml) :
-	bd=tb+"_"+base
-	fnameh="config_big_"+bd+".h"
-	os.system(copytext+" config_big.h "+fnameh)
-	replace(fnameh,"XXX",bd)
-	replace(fnameh,"@NB@",nb)
-	replace(fnameh,"@BASE@",base)
-
-	fnameh="config_ff_"+tff+".h"
-	os.system(copytext+" config_ff.h "+fnameh)
-	replace(fnameh,"XXX",bd)
-	replace(fnameh,"WWW",tff)
-	replace(fnameh,"@ML@",ml);
-
-	fnamec="big_"+bd+".c"
-	fnameh="big_"+bd+".h"
-
-	os.system(copytext+" big.c "+fnamec)
-	os.system(copytext+" big.h "+fnameh)
-
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-	fnamec="ff_"+tff+".c"
-	fnameh="ff_"+tff+".h"
-
-	os.system(copytext+" ff.c "+fnamec)
-	os.system(copytext+" ff.h "+fnameh)
-
-	replace(fnamec,"WWW",tff)
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"WWW",tff)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-	fnamec="rsa_"+tff+".c"
-	fnameh="rsa_"+tff+".h"
-
-	os.system(copytext+" rsa.c "+fnamec)
-	os.system(copytext+" rsa.h "+fnameh)
-
-	replace(fnamec,"WWW",tff)
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"WWW",tff)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-def curveset(tb,tf,tc,nb,base,nbt,m8,mt,ct,pf,stw,sx,cs) :
-	bd=tb+"_"+base
-	fnameh="config_big_"+bd+".h"
-	os.system(copytext+" config_big.h "+fnameh)
-	replace(fnameh,"XXX",bd)
-	replace(fnameh,"@NB@",nb)
-	replace(fnameh,"@BASE@",base)
-
-	fnameh="config_field_"+tf+".h"
-	os.system(copytext+" config_field.h "+fnameh)
-	replace(fnameh,"XXX",bd)
-	replace(fnameh,"YYY",tf)
-	replace(fnameh,"@NBT@",nbt)
-	replace(fnameh,"@M8@",m8)
-	replace(fnameh,"@MT@",mt)
-
-	ib=int(base)
-	inb=int(nb)
-	inbt=int(nbt)
-	sh=ib*(1+((8*inb-1)//ib))-inbt
-	if sh > 30 :
-		sh=30
-	replace(fnameh,"@SH@",str(sh))
-
-	fnameh="config_curve_"+tc+".h"	
-	os.system(copytext+" config_curve.h "+fnameh)
-	replace(fnameh,"XXX",bd)
-	replace(fnameh,"YYY",tf)
-	replace(fnameh,"ZZZ",tc)
-	replace(fnameh,"@CT@",ct)
-	replace(fnameh,"@PF@",pf)
-
-	replace(fnameh,"@ST@",stw)
-	replace(fnameh,"@SX@",sx)
-	replace(fnameh,"@CS@",cs)
-
-	fnamec="big_"+bd+".c"
-	fnameh="big_"+bd+".h"
-
-	os.system(copytext+" big.c "+fnamec)
-	os.system(copytext+" big.h "+fnameh)
-
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-	fnamec="fp_"+tf+".c"
-	fnameh="fp_"+tf+".h"
-
-	os.system(copytext+" fp.c "+fnamec)
-	os.system(copytext+" fp.h "+fnameh)
-
-	replace(fnamec,"YYY",tf)
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"YYY",tf)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-	os.system("gcc -O3 -std=c99 -c rom_field_"+tf+".c");
-
-	fnamec="ecp_"+tc+".c"
-	fnameh="ecp_"+tc+".h"
-
-	os.system(copytext+" ecp.c "+fnamec)
-	os.system(copytext+" ecp.h "+fnameh)
-
-	replace(fnamec,"ZZZ",tc)
-	replace(fnamec,"YYY",tf)
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"ZZZ",tc)
-	replace(fnameh,"YYY",tf)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-	fnamec="ecdh_"+tc+".c"
-	fnameh="ecdh_"+tc+".h"
-
-	os.system(copytext+" ecdh.c "+fnamec)
-	os.system(copytext+" ecdh.h "+fnameh)
-
-	replace(fnamec,"ZZZ",tc)
-	replace(fnamec,"YYY",tf)
-	replace(fnamec,"XXX",bd)
-	replace(fnameh,"ZZZ",tc)
-	replace(fnameh,"YYY",tf)
-	replace(fnameh,"XXX",bd)
-	os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-	os.system("gcc -O3 -std=c99 -c rom_curve_"+tc+".c");
-
-	if pf != "NOT" :
-		fnamec="fp2_"+tf+".c"
-		fnameh="fp2_"+tf+".h"
-
-		os.system(copytext+" fp2.c "+fnamec)
-		os.system(copytext+" fp2.h "+fnameh)
-		replace(fnamec,"YYY",tf)
-		replace(fnamec,"XXX",bd)
-		replace(fnameh,"YYY",tf)
-		replace(fnameh,"XXX",bd)
-		os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-		fnamec="fp4_"+tf+".c"
-		fnameh="fp4_"+tf+".h"
-
-		os.system(copytext+" fp4.c "+fnamec)
-		os.system(copytext+" fp4.h "+fnameh)
-		replace(fnamec,"YYY",tf)
-		replace(fnamec,"XXX",bd)
-		replace(fnamec,"ZZZ",tc)
-		replace(fnameh,"YYY",tf)
-		replace(fnameh,"XXX",bd)
-		replace(fnameh,"ZZZ",tc)
-		os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-		if cs == "128" :
-			fnamec="fp12_"+tf+".c"
-			fnameh="fp12_"+tf+".h"
-
-			os.system(copytext+" fp12.c "+fnamec)
-			os.system(copytext+" fp12.h "+fnameh)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="ecp2_"+tc+".c"
-			fnameh="ecp2_"+tc+".h"
-
-			os.system(copytext+" ecp2.c "+fnamec)
-			os.system(copytext+" ecp2.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="pair_"+tc+".c"
-			fnameh="pair_"+tc+".h"
-
-			os.system(copytext+" pair.c "+fnamec)
-			os.system(copytext+" pair.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="mpin_"+tc+".c"
-			fnameh="mpin_"+tc+".h"
-
-			os.system(copytext+" mpin.c "+fnamec)
-			os.system(copytext+" mpin.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-		if cs == "192" :
-			fnamec="fp8_"+tf+".c"
-			fnameh="fp8_"+tf+".h"
-
-			os.system(copytext+" fp8.c "+fnamec)
-			os.system(copytext+" fp8.h "+fnameh)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-
-			fnamec="fp24_"+tf+".c"
-			fnameh="fp24_"+tf+".h"
-
-			os.system(copytext+" fp24.c "+fnamec)
-			os.system(copytext+" fp24.h "+fnameh)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="ecp4_"+tc+".c"
-			fnameh="ecp4_"+tc+".h"
-
-			os.system(copytext+" ecp4.c "+fnamec)
-			os.system(copytext+" ecp4.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="pair192_"+tc+".c"
-			fnameh="pair192_"+tc+".h"
-
-			os.system(copytext+" pair192.c "+fnamec)
-			os.system(copytext+" pair192.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="mpin192_"+tc+".c"
-			fnameh="mpin192_"+tc+".h"
-
-			os.system(copytext+" mpin192.c "+fnamec)
-			os.system(copytext+" mpin192.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-		if cs == "256" :
-
-			fnamec="fp8_"+tf+".c"
-			fnameh="fp8_"+tf+".h"
-
-			os.system(copytext+" fp8.c "+fnamec)
-			os.system(copytext+" fp8.h "+fnameh)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-
-			fnamec="ecp8_"+tc+".c"
-			fnameh="ecp8_"+tc+".h"
-
-			os.system(copytext+" ecp8.c "+fnamec)
-			os.system(copytext+" ecp8.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-
-			fnamec="fp16_"+tf+".c"
-			fnameh="fp16_"+tf+".h"
-
-			os.system(copytext+" fp16.c "+fnamec)
-			os.system(copytext+" fp16.h "+fnameh)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-
-			fnamec="fp48_"+tf+".c"
-			fnameh="fp48_"+tf+".h"
-
-			os.system(copytext+" fp48.c "+fnamec)
-			os.system(copytext+" fp48.h "+fnameh)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-
-			fnamec="pair256_"+tc+".c"
-			fnameh="pair256_"+tc+".h"
-
-			os.system(copytext+" pair256.c "+fnamec)
-			os.system(copytext+" pair256.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-			fnamec="mpin256_"+tc+".c"
-			fnameh="mpin256_"+tc+".h"
-
-			os.system(copytext+" mpin256.c "+fnamec)
-			os.system(copytext+" mpin256.h "+fnameh)
-			replace(fnamec,"ZZZ",tc)
-			replace(fnamec,"YYY",tf)
-			replace(fnamec,"XXX",bd)
-			replace(fnameh,"ZZZ",tc)
-			replace(fnameh,"YYY",tf)
-			replace(fnameh,"XXX",bd)
-			os.system("gcc -O3 -std=c99 -c "+fnamec)
-
-replace("arch.h","@WL@","64")
-print("Elliptic Curves")
-print("1. ED25519")
-print("2. C25519")
-print("3. NIST256")
-print("4. BRAINPOOL")
-print("5. ANSSI")
-print("6. HIFIVE")
-print("7. GOLDILOCKS")
-print("8. NIST384")
-print("9. C41417")
-print("10. NIST521\n")
-print("11. NUMS256W")
-print("12. NUMS256E")
-print("13. NUMS384W")
-print("14. NUMS384E")
-print("15. NUMS512W")
-print("16. NUMS512E")
-print("17. SECP256K1\n")
-
-print("Pairing-Friendly Elliptic Curves")
-print("18. BN254")
-print("19. BN254CX")
-print("20. BLS383")
-print("21. BLS381")
-print("22. FP256BN")
-print("23. FP512BN")
-print("24. BLS461\n")
-print("25. BLS24")
-print("26. BLS48\n")
-
-print("RSA")
-print("27. RSA2048")
-print("28. RSA3072")
-print("29. RSA4096")
-
-selection=[]
-ptr=0
-max=30
-
-curve_selected=False
-pfcurve_selected=False
-rsa_selected=False
-
-while ptr<max:
-	x=int(input("Choose a Scheme to support - 0 to finish: "))
-	if x == 0:
-		break
-#	print("Choice= ",x)
-	already=False
-	for i in range(0,ptr):
-		if x==selection[i]:
-			already=True
-			break
-	if already:
-		continue
-	
-	selection.append(x)
-	ptr=ptr+1
-
-# curveset(big,field,curve,big_length_bytes,bits_in_base,modulus_bits,modulus_mod_8,modulus_type,curve_type,pairing_friendly,sextic twist,sign of x,curve security)
-# for each curve give names for big, field and curve. In many cases the latter two will be the same. 
-# Typically "big" is the size in bits, always a multiple of 8, "field" describes the modulus, and "curve" is the common name for the elliptic curve   
-# big_length_bytes is "big" divided by 8
-# Next give the number base used for 64 bit architectures, as n where the base is 2^n (note that these must be fixed for the same "big" name, if is ever re-used for another curve)
-# modulus_bits is the bit length of the modulus, typically the same or slightly smaller than "big"
-# modulus_mod_8 is the remainder when the modulus is divided by 8
-# modulus_type is NOT_SPECIAL, or PSEUDO_MERSENNE, or MONTGOMERY_Friendly, or GENERALISED_MERSENNE (supported for GOLDILOCKS only)
-# curve_type is WEIERSTRASS, EDWARDS or MONTGOMERY
-# pairing_friendly is BN, BLS or NOT (if not pairing friendly)
-# if pairing friendly. M or D type twist, and sign of the family parameter x
-# curve security is AES equiavlent, rounded up.
-
-	if x==1:
-		curveset("256","25519","ED25519","32","56","255","5","PSEUDO_MERSENNE","EDWARDS","NOT","","","128")
-		curve_selected=True
-	if x==2:
-		curveset("256","25519","C25519","32","56","255","5","PSEUDO_MERSENNE","MONTGOMERY","NOT","","","128")
-		curve_selected=True
-	if x==3:
-		curveset("256","NIST256","NIST256","32","56","256","7","NOT_SPECIAL","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-	if x==4:
-		curveset("256","BRAINPOOL","BRAINPOOL","32","56","256","7","NOT_SPECIAL","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-	if x==5:
-		curveset("256","ANSSI","ANSSI","32","56","256","7","NOT_SPECIAL","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-
-	if x==6:
-		curveset("336","HIFIVE","HIFIVE","42","60","336","5","PSEUDO_MERSENNE","EDWARDS","NOT","","","128")
-		curve_selected=True
-	if x==7:
-		curveset("448","GOLDILOCKS","GOLDILOCKS","56","58","448","7","GENERALISED_MERSENNE","EDWARDS","NOT","","","128")
-		curve_selected=True
-	if x==8:
-		curveset("384","NIST384","NIST384","48","56","384","7","NOT_SPECIAL","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-	if x==9:
-		curveset("416","C41417","C41417","52","60","414","7","PSEUDO_MERSENNE","EDWARDS","NOT","","","128")
-		curve_selected=True
-	if x==10:
-		curveset("528","NIST521","NIST521","66","60","521","7","PSEUDO_MERSENNE","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-
-	if x==11:
-		curveset("256","256PMW","NUMS256W","32","56","256","3","PSEUDO_MERSENNE","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-	if x==12:
-		curveset("256","256PME","NUMS256E","32","56","256","3","PSEUDO_MERSENNE","EDWARDS","NOT","","","128")
-		curve_selected=True
-	if x==13:
-		curveset("384","384PM","NUMS384W","48","56","384","3","PSEUDO_MERSENNE","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-	if x==14:
-		curveset("384","384PM","NUMS384E","48","56","384","3","PSEUDO_MERSENNE","EDWARDS","NOT","","","128")
-		curve_selected=True
-	if x==15:
-		curveset("512","512PM","NUMS512W","64","56","512","7","PSEUDO_MERSENNE","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-	if x==16:
-		curveset("512","512PM","NUMS512E","64","56","512","7","PSEUDO_MERSENNE","EDWARDS","NOT","","","128")
-		curve_selected=True
-
-	if x==17:
-		curveset("256","SECP256K1","SECP256K1","32","56","256","7","NOT_SPECIAL","WEIERSTRASS","NOT","","","128")
-		curve_selected=True
-
-
-	if x==18:
-		curveset("256","BN254","BN254","32","56","254","3","NOT_SPECIAL","WEIERSTRASS","BN","D_TYPE","NEGATIVEX","128")
-		pfcurve_selected=True
-	if x==19:
-		curveset("256","BN254CX","BN254CX","32","56","254","3","NOT_SPECIAL","WEIERSTRASS","BN","D_TYPE","NEGATIVEX","128")
-		pfcurve_selected=True
-	if x==20:
-		curveset("384","BLS383","BLS383","48","58","383","3","NOT_SPECIAL","WEIERSTRASS","BLS","M_TYPE","POSITIVEX","128")
-		pfcurve_selected=True
-
-	if x==21:
-		curveset("384","BLS381","BLS381","48","58","381","3","NOT_SPECIAL","WEIERSTRASS","BLS","M_TYPE","NEGATIVEX","128")
-		pfcurve_selected=True
-
-
-	if x==22:
-		curveset("256","FP256BN","FP256BN","32","56","256","3","NOT_SPECIAL","WEIERSTRASS","BN","M_TYPE","NEGATIVEX","128")
-		pfcurve_selected=True
-	if x==23:
-		curveset("512","FP512BN","FP512BN","64","60","512","3","NOT_SPECIAL","WEIERSTRASS","BN","M_TYPE","POSITIVEX","128")
-		pfcurve_selected=True
-# https://eprint.iacr.org/2017/334.pdf
-	if x==24:
-		curveset("464","BLS461","BLS461","58","60","461","3","NOT_SPECIAL","WEIERSTRASS","BLS","M_TYPE","NEGATIVEX","128")
-		pfcurve_selected=True
-
-	if x==25:
-		curveset("480","BLS24","BLS24","60","56","479","3","NOT_SPECIAL","WEIERSTRASS","BLS","M_TYPE","POSITIVEX","192")
-		pfcurve_selected=True
-
-	if x==26:
-		curveset("560","BLS48","BLS48","70","58","556","3","NOT_SPECIAL","WEIERSTRASS","BLS","M_TYPE","POSITIVEX","256")
-		pfcurve_selected=True
-
-
-# rsaset(big,ring,big_length_bytes,bits_in_base,multiplier)
-# for each choice give distinct names for "big" and "ring".
-# Typically "big" is the length in bits of the underlying big number type
-# "ring" is the RSA modulus size = "big" times 2^m
-# big_length_bytes is "big" divided by 8
-# Next give the number base used for 64 bit architecture, as n where the base is 2^n
-# multiplier is 2^m (see above)
-
-# There are choices here, different ways of getting the same result, but some faster than others
-	if x==27:
-		#256 is slower but may allow reuse of 256-bit BIGs used for elliptic curve
-		#512 is faster.. but best is 1024
-		rsaset("1024","2048","128","58","2")
-		#rsaset("512","2048","64","60","4")
-		#rsaset("256","2048","32","56","8")
-		rsa_selected=True
-	if x==28:
-		rsaset("384","3072","48","56","8")
-		rsa_selected=True
-	if x==29:
-		#rsaset("256","4096","32","56","16")
-		rsaset("512","4096","64","60","8")
-		rsa_selected=True
-
-
-os.system(deltext+" big.*")
-os.system(deltext+" fp.*")
-os.system(deltext+" ecp.*")
-os.system(deltext+" ecdh.*")
-os.system(deltext+" ff.*")
-os.system(deltext+" rsa.*")
-os.system(deltext+" config_big.h")
-os.system(deltext+" config_field.h")
-os.system(deltext+" config_curve.h")
-os.system(deltext+" config_ff.h")
-os.system(deltext+" fp2.*")
-os.system(deltext+" fp4.*")
-os.system(deltext+" fp8.*")
-os.system(deltext+" fp16.*")
-
-os.system(deltext+" fp12.*")
-os.system(deltext+" fp24.*")
-os.system(deltext+" fp48.*")
-
-os.system(deltext+" ecp2.*")
-os.system(deltext+" ecp4.*")
-os.system(deltext+" ecp8.*")
-
-os.system(deltext+" pair.*")
-os.system(deltext+" mpin.*")
-
-os.system(deltext+" pair192.*")
-os.system(deltext+" mpin192.*")
-
-os.system(deltext+" pair256.*")
-os.system(deltext+" mpin256.*")
-
-# create library
-os.system("gcc -O3 -std=c99 -c randapi.c")
-if curve_selected :
-	os.system("gcc -O3 -std=c99 -c ecdh_support.c")
-if rsa_selected :
-	os.system("gcc -O3 -std=c99 -c rsa_support.c")
-if pfcurve_selected :
-	os.system("gcc -O3 -std=c99 -c pbc_support.c")
-
-os.system("gcc -O3 -std=c99 -c hash.c")
-os.system("gcc -O3 -std=c99 -c rand.c")
-os.system("gcc -O3 -std=c99 -c oct.c")
-os.system("gcc -O3 -std=c99 -c aes.c")
-os.system("gcc -O3 -std=c99 -c gcm.c")
-os.system("gcc -O3 -std=c99 -c newhope.c")
-
-if sys.platform.startswith("win") :
-	os.system("for %i in (*.o) do @echo %~nxi >> f.list")
-	os.system("ar rc amcl.a @f.list")
-	os.system(deltext+" f.list")
-
-else :
-	os.system("ar rc amcl.a *.o")
-
-os.system(deltext+" *.o")
-
-
-#print("Your section was ");	
-#for i in range(0,ptr):
-#	print (selection[i])
-

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/1add7560/version3/c/config_big.h
----------------------------------------------------------------------
diff --git a/version3/c/config_big.h b/version3/c/config_big.h
deleted file mode 100644
index 76822ed..0000000
--- a/version3/c/config_big.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-	Licensed to the Apache Software Foundation (ASF) under one
-	or more contributor license agreements.  See the NOTICE file
-	distributed with this work for additional information
-	regarding copyright ownership.  The ASF licenses this file
-	to you under the Apache License, Version 2.0 (the
-	"License"); you may not use this file except in compliance
-	with the License.  You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-	Unless required by applicable law or agreed to in writing,
-	software distributed under the License is distributed on an
-	"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-	KIND, either express or implied.  See the License for the
-	specific language governing permissions and limitations
-	under the License.
-*/
-
-/**
- * @file config_big.h
- * @author Mike Scott
- * @brief Config BIG  Header File
- *
- */
-
-#ifndef CONFIG_BIG_XXX_H
-#define CONFIG_BIG_XXX_H
-
-#include"amcl.h"
-
-// BIG stuff
-
-#define MODBYTES_XXX @NB@  	/**< Number of bytes in Modulus */
-#define BASEBITS_XXX @BASE@ 	/**< Numbers represented to base 2*BASEBITS */
-
-
-#endif

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/1add7560/version3/c/config_curve.h
----------------------------------------------------------------------
diff --git a/version3/c/config_curve.h b/version3/c/config_curve.h
deleted file mode 100644
index 58208df..0000000
--- a/version3/c/config_curve.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef CONFIG_CURVE_ZZZ_H
-#define CONFIG_CURVE_ZZZ_H
-
-#include"amcl.h"
-#include"config_field_YYY.h"
-
-// ECP stuff
-
-#define CURVETYPE_ZZZ @CT@
-#define PAIRING_FRIENDLY_ZZZ @PF@
-#define CURVE_SECURITY_ZZZ @CS@
-
-
-#if PAIRING_FRIENDLY_ZZZ != NOT
-//#define USE_GLV_ZZZ	  /**< Note this method is patented (GLV), so maybe you want to comment this out */
-//#define USE_GS_G2_ZZZ /**< Well we didn't patent it :) But may be covered by GLV patent :( */
-#define USE_GS_GT_ZZZ /**< Not patented, so probably safe to always use this */
-
-#define POSITIVEX 0
-#define NEGATIVEX 1
-
-#define SEXTIC_TWIST_ZZZ @ST@
-#define SIGN_OF_X_ZZZ @SX@
-
-#endif
-
-#if CURVE_SECURITY_ZZZ == 128
-#define AESKEY_ZZZ 16 /**< Symmetric Key size - 128 bits */
-#define HASH_TYPE_ZZZ SHA256  /**< Hash type */
-#endif
-
-#if CURVE_SECURITY_ZZZ == 192
-#define AESKEY_ZZZ 24 /**< Symmetric Key size - 192 bits */
-#define HASH_TYPE_ZZZ SHA384  /**< Hash type */
-#endif
-
-#if CURVE_SECURITY_ZZZ == 256
-#define AESKEY_ZZZ 32 /**< Symmetric Key size - 256 bits */
-#define HASH_TYPE_ZZZ SHA512  /**< Hash type */
-#endif
-
-
-
-#endif

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/1add7560/version3/c/config_ff.h
----------------------------------------------------------------------
diff --git a/version3/c/config_ff.h b/version3/c/config_ff.h
deleted file mode 100644
index 173dab7..0000000
--- a/version3/c/config_ff.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-	Licensed to the Apache Software Foundation (ASF) under one
-	or more contributor license agreements.  See the NOTICE file
-	distributed with this work for additional information
-	regarding copyright ownership.  The ASF licenses this file
-	to you under the Apache License, Version 2.0 (the
-	"License"); you may not use this file except in compliance
-	with the License.  You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-	Unless required by applicable law or agreed to in writing,
-	software distributed under the License is distributed on an
-	"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-	KIND, either express or implied.  See the License for the
-	specific language governing permissions and limitations
-	under the License.
-*/
-
-/**
- * @file config_ff.h
- * @author Mike Scott
- * @brief COnfig FF Header File
- *
- */
-
-#ifndef CONFIG_RSA_WWW_H
-#define CONFIG_RSA_WWW_H
-
-#include "amcl.h"
-#include "config_big_XXX.h"
-
-// FF stuff
-
-#define FFLEN_WWW @ML@ /**< 2^n multiplier of BIGBITS to specify supported Finite Field size, e.g 2048=256*2^3 where BIGBITS=256 */
-
-
-#endif

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/1add7560/version3/c/config_field.h
----------------------------------------------------------------------
diff --git a/version3/c/config_field.h b/version3/c/config_field.h
deleted file mode 100644
index 2d727f2..0000000
--- a/version3/c/config_field.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-	Licensed to the Apache Software Foundation (ASF) under one
-	or more contributor license agreements.  See the NOTICE file
-	distributed with this work for additional information
-	regarding copyright ownership.  The ASF licenses this file
-	to you under the Apache License, Version 2.0 (the
-	"License"); you may not use this file except in compliance
-	with the License.  You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-	Unless required by applicable law or agreed to in writing,
-	software distributed under the License is distributed on an
-	"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-	KIND, either express or implied.  See the License for the
-	specific language governing permissions and limitations
-	under the License.
-*/
-
-#ifndef CONFIG_FIELD_YYY_H
-#define CONFIG_FIELD_YYY_H
-
-#include"amcl.h"
-#include "config_big_XXX.h"
-
-// FP stuff
-
-#define MBITS_YYY @NBT@
-#define MOD8_YYY @M8@
-#define MODTYPE_YYY @MT@
-#define MAXXES_YYY @SH@
-
-
-#endif

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/1add7560/version3/c/ecdh.c
----------------------------------------------------------------------
diff --git a/version3/c/ecdh.c b/version3/c/ecdh.c
deleted file mode 100644
index e9c4c95..0000000
--- a/version3/c/ecdh.c
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-/* ECDH/ECIES/ECDSA Functions - see main program below */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-
-#include "ecdh_ZZZ.h"
-
-/* Calculate a public/private EC GF(p) key pair. W=S.G mod EC(p),
- * where S is the secret key and W is the public key
- * and G is fixed generator.
- * If RNG is NULL then the private key is provided externally in S
- * otherwise it is generated randomly internally */
-int ECP_ZZZ_KEY_PAIR_GENERATE(csprng *RNG,octet* S,octet *W)
-{
-    BIG_XXX r,gx,gy,s;
-    ECP_ZZZ G;
-    int res=0;
-
-	ECP_ZZZ_generator(&G);
-
-    BIG_XXX_rcopy(r,CURVE_Order_ZZZ);
-    if (RNG!=NULL)
-    {
-        BIG_XXX_randomnum(s,r,RNG);
-    }
-    else
-    {
-        BIG_XXX_fromBytes(s,S->val);
-        BIG_XXX_mod(s,r);
-    }
-
-#ifdef AES_S
-    BIG_XXX_mod2m(s,2*AES_S);
-//	BIG_toBytes(S->val,s);
-#endif
-
-    S->len=EGS_ZZZ;
-    BIG_XXX_toBytes(S->val,s);
-
-    ECP_ZZZ_mul(&G,s);
-
-	ECP_ZZZ_toOctet(W,&G,false);  /* To use point compression on public keys, change to true */
-/*
-#if CURVETYPE_ZZZ!=MONTGOMERY
-    ECP_ZZZ_get(gx,gy,&G);
-#else
-    ECP_ZZZ_get(gx,&G);
-
-#endif
-
-
-
-#if CURVETYPE_ZZZ!=MONTGOMERY
-    W->len=2*EFS_ZZZ+1;
-    W->val[0]=4;
-    BIG_XXX_toBytes(&(W->val[1]),gx);
-    BIG_XXX_toBytes(&(W->val[EFS_ZZZ+1]),gy);
-#else
-    W->len=EFS_ZZZ+1;
-    W->val[0]=2;
-    BIG_XXX_toBytes(&(W->val[1]),gx);
-#endif
-*/
-    return res;
-}
-
-/* Validate public key */
-int ECP_ZZZ_PUBLIC_KEY_VALIDATE(octet *W)
-{
-    BIG_XXX q,r,wx,k;
-    ECP_ZZZ WP;
-    int valid,nb;
-    int res=0;
-
-    BIG_XXX_rcopy(q,Modulus_YYY);
-    BIG_XXX_rcopy(r,CURVE_Order_ZZZ);
-
-	valid=ECP_ZZZ_fromOctet(&WP,W);
-	if (!valid) res=ECDH_INVALID_PUBLIC_KEY;
-
-/*
-    BIG_XXX_fromBytes(wx,&(W->val[1]));
-    if (BIG_XXX_comp(wx,q)>=0) res=ECDH_INVALID_PUBLIC_KEY;
-#if CURVETYPE_ZZZ!=MONTGOMERY
-    BIG_XXX wy;
-    BIG_XXX_fromBytes(wy,&(W->val[EFS_ZZZ+1]));
-    if (BIG_XXX_comp(wy,q)>=0) res=ECDH_INVALID_PUBLIC_KEY;
-#endif
-*/
-    if (res==0)
-    {
-
-//#if CURVETYPE_ZZZ!=MONTGOMERY
-//        valid=ECP_ZZZ_set(&WP,wx,wy);
-//#else
-//        valid=ECP_ZZZ_set(&WP,wx);
-//#endif
-//        if (!valid || ECP_ZZZ_isinf(&WP)) res=ECDH_INVALID_PUBLIC_KEY;
-//        if (res==0 )
-//        {
-            /* Check point is not in wrong group */
-            nb=BIG_XXX_nbits(q);
-            BIG_XXX_one(k);
-            BIG_XXX_shl(k,(nb+4)/2);
-            BIG_XXX_add(k,q,k);
-            BIG_XXX_sdiv(k,r); /* get co-factor */
-
-            while (BIG_XXX_parity(k)==0)
-            {
-                ECP_ZZZ_dbl(&WP);
-                BIG_XXX_fshr(k,1);
-            }
-
-            if (!BIG_XXX_isunity(k)) ECP_ZZZ_mul(&WP,k);
-            if (ECP_ZZZ_isinf(&WP)) res=ECDH_INVALID_PUBLIC_KEY;
-//        }
-    }
-
-    return res;
-}
-
-/* IEEE-1363 Diffie-Hellman online calculation Z=S.WD */
-int ECP_ZZZ_SVDP_DH(octet *S,octet *WD,octet *Z)
-{
-    BIG_XXX r,s,wx;
-    int valid;
-    ECP_ZZZ W;
-    int res=0;
-
-    BIG_XXX_fromBytes(s,S->val);
-
-	valid=ECP_ZZZ_fromOctet(&W,WD);
-/*
-    BIG_XXX_fromBytes(wx,&(WD->val[1]));
-#if CURVETYPE_ZZZ!=MONTGOMERY
-    BIG_XXX wy;
-    BIG_XXX_fromBytes(wy,&(WD->val[EFS_ZZZ+1]));
-    valid=ECP_ZZZ_set(&W,wx,wy);
-#else
-    valid=ECP_ZZZ_set(&W,wx);
-#endif
-*/
-    if (!valid) res=ECDH_ERROR;
-    if (res==0)
-    {
-        BIG_XXX_rcopy(r,CURVE_Order_ZZZ);
-        BIG_XXX_mod(s,r);
-
-        ECP_ZZZ_mul(&W,s);
-        if (ECP_ZZZ_isinf(&W)) res=ECDH_ERROR;
-        else
-        {
-#if CURVETYPE_ZZZ!=MONTGOMERY
-            ECP_ZZZ_get(wx,wx,&W);
-#else
-            ECP_ZZZ_get(wx,&W);
-#endif
-            Z->len=MODBYTES_XXX;
-            BIG_XXX_toBytes(Z->val,wx);
-        }
-    }
-    return res;
-}
-
-#if CURVETYPE_ZZZ!=MONTGOMERY
-
-/* IEEE ECDSA Signature, C and D are signature on F using private key S */
-int ECP_ZZZ_SP_DSA(int sha,csprng *RNG,octet *K,octet *S,octet *F,octet *C,octet *D)
-{
-    char h[128];
-    octet H= {0,sizeof(h),h};
-
-    BIG_XXX gx,gy,r,s,f,c,d,u,vx,w;
-    ECP_ZZZ G,V;
-
-    ehashit(sha,F,-1,NULL,&H,sha);
-
-	ECP_ZZZ_generator(&G);
-
-    BIG_XXX_rcopy(r,CURVE_Order_ZZZ);
-
-    BIG_XXX_fromBytes(s,S->val);
-
-    int hlen=H.len;
-    if (H.len>MODBYTES_XXX) hlen=MODBYTES_XXX;
-    BIG_XXX_fromBytesLen(f,H.val,hlen);
-
-	if (RNG!=NULL)
-	{
-		do
-		{
-       
-            BIG_XXX_randomnum(u,r,RNG);
-            BIG_XXX_randomnum(w,r,RNG); /* side channel masking */
-
-#ifdef AES_S
-			BIG_XXX_mod2m(u,2*AES_S);
-#endif
-			ECP_ZZZ_copy(&V,&G);
-			ECP_ZZZ_mul(&V,u);
-
-			ECP_ZZZ_get(vx,vx,&V);
-
-			BIG_XXX_copy(c,vx);
-			BIG_XXX_mod(c,r);
-			if (BIG_XXX_iszilch(c)) continue;
-			
-            BIG_XXX_modmul(u,u,w,r);
-
-			BIG_XXX_invmodp(u,u,r);
-			BIG_XXX_modmul(d,s,c,r);
-
-			BIG_XXX_add(d,f,d);
-			
-            BIG_XXX_modmul(d,d,w,r);
-
-			BIG_XXX_modmul(d,u,d,r);
-		} while (BIG_XXX_iszilch(d));
-	}
-	else
-	{
-		BIG_XXX_fromBytes(u,K->val);
-		BIG_XXX_mod(u,r);
-
-#ifdef AES_S
-        BIG_XXX_mod2m(u,2*AES_S);
-#endif
-        ECP_ZZZ_copy(&V,&G);
-        ECP_ZZZ_mul(&V,u);
-
-        ECP_ZZZ_get(vx,vx,&V);
-
-        BIG_XXX_copy(c,vx);
-        BIG_XXX_mod(c,r);
-        if (BIG_XXX_iszilch(c)) return ECDH_ERROR;
- 
-
-        BIG_XXX_invmodp(u,u,r);
-        BIG_XXX_modmul(d,s,c,r);
-
-        BIG_XXX_add(d,f,d);
-
-        BIG_XXX_modmul(d,u,d,r);
-        if (BIG_XXX_iszilch(d)) return ECDH_ERROR;
-    }
-
-    C->len=D->len=EGS_ZZZ;
-
-    BIG_XXX_toBytes(C->val,c);
-    BIG_XXX_toBytes(D->val,d);
-
-    return 0;
-}
-
-/* IEEE1363 ECDSA Signature Verification. Signature C and D on F is verified using public key W */
-int ECP_ZZZ_VP_DSA(int sha,octet *W,octet *F, octet *C,octet *D)
-{
-    char h[128];
-    octet H= {0,sizeof(h),h};
-
-    BIG_XXX r,gx,gy,wx,wy,f,c,d,h2;
-    int res=0;
-    ECP_ZZZ G,WP;
-    int valid;
-
-    ehashit(sha,F,-1,NULL,&H,sha);
-
-	ECP_ZZZ_generator(&G);
-
-    BIG_XXX_rcopy(r,CURVE_Order_ZZZ);
-
-    OCT_shl(C,C->len-MODBYTES_XXX);
-    OCT_shl(D,D->len-MODBYTES_XXX);
-
-    BIG_XXX_fromBytes(c,C->val);
-    BIG_XXX_fromBytes(d,D->val);
-
-    int hlen=H.len;
-    if (hlen>MODBYTES_XXX) hlen=MODBYTES_XXX;
-
-    BIG_XXX_fromBytesLen(f,H.val,hlen);
-
-    //BIG_fromBytes(f,H.val);
-
-    if (BIG_XXX_iszilch(c) || BIG_XXX_comp(c,r)>=0 || BIG_XXX_iszilch(d) || BIG_XXX_comp(d,r)>=0)
-        res=ECDH_INVALID;
-
-    if (res==0)
-    {
-        BIG_XXX_invmodp(d,d,r);
-        BIG_XXX_modmul(f,f,d,r);
-        BIG_XXX_modmul(h2,c,d,r);
-
-		valid=ECP_ZZZ_fromOctet(&WP,W);
-/*
-        BIG_XXX_fromBytes(wx,&(W->val[1]));
-        BIG_XXX_fromBytes(wy,&(W->val[EFS_ZZZ+1]));
-
-        valid=ECP_ZZZ_set(&WP,wx,wy);
-*/
-        if (!valid) res=ECDH_ERROR;
-        else
-        {
-            ECP_ZZZ_mul2(&WP,&G,h2,f);
-
-            if (ECP_ZZZ_isinf(&WP)) res=ECDH_INVALID;
-            else
-            {
-                ECP_ZZZ_get(d,d,&WP);
-                BIG_XXX_mod(d,r);
-                if (BIG_XXX_comp(d,c)!=0) res=ECDH_INVALID;
-            }
-        }
-    }
-
-    return res;
-}
-
-/* IEEE1363 ECIES encryption. Encryption of plaintext M uses public key W and produces ciphertext V,C,T */
-void ECP_ZZZ_ECIES_ENCRYPT(int sha,octet *P1,octet *P2,csprng *RNG,octet *W,octet *M,int tlen,octet *V,octet *C,octet *T)
-{
-
-    int i,len;
-    char z[EFS_ZZZ],vz[3*EFS_ZZZ+1],k[2*AESKEY_ZZZ],k1[AESKEY_ZZZ],k2[AESKEY_ZZZ],l2[8],u[EFS_ZZZ];
-    octet Z= {0,sizeof(z),z};
-    octet VZ= {0,sizeof(vz),vz};
-    octet K= {0,sizeof(k),k};
-    octet K1= {0,sizeof(k1),k1};
-    octet K2= {0,sizeof(k2),k2};
-    octet L2= {0,sizeof(l2),l2};
-    octet U= {0,sizeof(u),u};
-
-    if (ECP_ZZZ_KEY_PAIR_GENERATE(RNG,&U,V)!=0) return;
-    if (ECP_ZZZ_SVDP_DH(&U,W,&Z)!=0) return;
-
-    OCT_copy(&VZ,V);
-    OCT_joctet(&VZ,&Z);
-
-    KDF2(sha,&VZ,P1,2*AESKEY_ZZZ,&K);
-
-    K1.len=K2.len=AESKEY_ZZZ;
-    for (i=0; i<AESKEY_ZZZ; i++)
-    {
-        K1.val[i]=K.val[i];
-        K2.val[i]=K.val[AESKEY_ZZZ+i];
-    }
-
-    AES_CBC_IV0_ENCRYPT(&K1,M,C);
-
-    OCT_jint(&L2,P2->len,8);
-
-    len=C->len;
-    OCT_joctet(C,P2);
-    OCT_joctet(C,&L2);
-    HMAC(sha,C,&K2,tlen,T);
-    C->len=len;
-}
-
-/* IEEE1363 ECIES decryption. Decryption of ciphertext V,C,T using private key U outputs plaintext M */
-int ECP_ZZZ_ECIES_DECRYPT(int sha,octet *P1,octet *P2,octet *V,octet *C,octet *T,octet *U,octet *M)
-{
-
-    int i,len;
-    char z[EFS_ZZZ],vz[3*EFS_ZZZ+1],k[2*AESKEY_ZZZ],k1[AESKEY_ZZZ],k2[AESKEY_ZZZ],l2[8],tag[32];
-    octet Z= {0,sizeof(z),z};
-    octet VZ= {0,sizeof(vz),vz};
-    octet K= {0,sizeof(k),k};
-    octet K1= {0,sizeof(k1),k1};
-    octet K2= {0,sizeof(k2),k2};
-    octet L2= {0,sizeof(l2),l2};
-    octet TAG= {0,sizeof(tag),tag};
-
-    if (ECP_ZZZ_SVDP_DH(U,V,&Z)!=0) return 0;
-
-    OCT_copy(&VZ,V);
-    OCT_joctet(&VZ,&Z);
-
-    KDF2(sha,&VZ,P1,2*AESKEY_ZZZ,&K);
-
-    K1.len=K2.len=AESKEY_ZZZ;
-    for (i=0; i<AESKEY_ZZZ; i++)
-    {
-        K1.val[i]=K.val[i];
-        K2.val[i]=K.val[AESKEY_ZZZ+i];
-    }
-
-    if (!AES_CBC_IV0_DECRYPT(&K1,C,M)) return 0;
-
-    OCT_jint(&L2,P2->len,8);
-
-    len=C->len;
-    OCT_joctet(C,P2);
-    OCT_joctet(C,&L2);
-    HMAC(sha,C,&K2,T->len,&TAG);
-    C->len=len;
-
-    if (!OCT_ncomp(T,&TAG,T->len)) return 0;
-
-    return 1;
-
-}
-
-#endif

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/1add7560/version3/c/ecdh.h
----------------------------------------------------------------------
diff --git a/version3/c/ecdh.h b/version3/c/ecdh.h
deleted file mode 100644
index 10a1828..0000000
--- a/version3/c/ecdh.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-/**
- * @file ecdh.h
- * @author Mike Scott
- * @brief ECDH Header file for implementation of standard EC protocols
- *
- *
- */
-
-#ifndef ECDH_ZZZ_H
-#define ECDH_ZZZ_H
-
-#include "ecp_ZZZ.h"
-#include "ecdh_support.h"
-
-
-/*** START OF USER CONFIGURABLE SECTION -  ***/
-
-//#define EAS_ZZZ 16 /**< Symmetric Key size - 128 bits */
-//#define HASH_TYPE_ECC_ZZZ SHA512  /**< Hash type */
-
-/*** END OF USER CONFIGURABLE SECTION ***/
-
-#define EGS_ZZZ MODBYTES_XXX  /**< ECC Group Size in bytes */
-#define EFS_ZZZ MODBYTES_XXX  /**< ECC Field Size in bytes */
-
-#define ECDH_OK                     0     /**< Function completed without error */
-/*#define ECDH_DOMAIN_ERROR          -1*/
-#define ECDH_INVALID_PUBLIC_KEY    -2	/**< Public Key is Invalid */
-#define ECDH_ERROR                 -3	/**< ECDH Internal Error */
-#define ECDH_INVALID               -4	/**< ECDH Internal Error */
-/*#define ECDH_DOMAIN_NOT_FOUND      -5
-#define ECDH_OUT_OF_MEMORY         -6
-#define ECDH_DIV_BY_ZERO           -7
-#define ECDH_BAD_ASSUMPTION        -8*/
-
-/* ECDH primitives */
-/**	@brief Generate an ECC public/private key pair
- *
-	@param R is a pointer to a cryptographically secure random number generator
-	@param s the private key, an output internally randomly generated if R!=NULL, otherwise must be provided as an input
-	@param W the output public key, which is s.G, where G is a fixed generator
-	@return 0 or an error code
- */
-extern int  ECP_ZZZ_KEY_PAIR_GENERATE(csprng *R,octet *s,octet *W);
-/**	@brief Validate an ECC public key
- *
-	@param W the input public key to be validated
-	@return 0 if public key is OK, or an error code
- */
-extern int  ECP_ZZZ_PUBLIC_KEY_VALIDATE(octet *W);
-
-/* ECDH primitives */
-
-/**	@brief Generate Diffie-Hellman shared key
- *
-	IEEE-1363 Diffie-Hellman shared secret calculation
-	@param s is the input private key,
-	@param W the input public key of the other party
-	@param K the output shared key, in fact the x-coordinate of s.W
-	@return 0 or an error code
- */
-extern int ECP_ZZZ_SVDP_DH(octet *s,octet *W,octet *K);
-/*extern int ECPSVDP_DHC(octet *,octet *,int,octet *);*/
-
-/*#if CURVETYPE!=MONTGOMERY */
-/* ECIES functions */
-/*#if CURVETYPE!=MONTGOMERY */
-/* ECIES functions */
-/**	@brief ECIES Encryption
- *
-	IEEE-1363 ECIES Encryption
-	@param h is the hash type
-	@param P1 input Key Derivation parameters
-	@param P2 input Encoding parameters
-	@param R is a pointer to a cryptographically secure random number generator
-	@param W the input public key of the recieving party
-	@param M is the plaintext message to be encrypted
-	@param len the length of the HMAC tag
-	@param V component of the output ciphertext
-	@param C the output ciphertext
-	@param T the output HMAC tag, part of the ciphertext
- */
-extern void ECP_ZZZ_ECIES_ENCRYPT(int h,octet *P1,octet *P2,csprng *R,octet *W,octet *M,int len,octet *V,octet *C,octet *T);
-/**	@brief ECIES Decryption
- *
-	IEEE-1363 ECIES Decryption
-	@param h is the hash type
-	@param P1 input Key Derivation parameters
-	@param P2 input Encoding parameters
-	@param V component of the input ciphertext
-	@param C the input ciphertext
-	@param T the input HMAC tag, part of the ciphertext
-	@param U the input private key for decryption
-	@param M the output plaintext message
-	@return 1 if successful, else 0
- */
-extern int ECP_ZZZ_ECIES_DECRYPT(int h,octet *P1,octet *P2,octet *V,octet *C,octet *T,octet *U,octet *M);
-
-/* ECDSA functions */
-/**	@brief ECDSA Signature
- *
-	IEEE-1363 ECDSA Signature
-	@param h is the hash type
-	@param R is a pointer to a cryptographically secure random number generator
-        @param k Ephemeral key. This value is used when R=NULL
-	@param s the input private signing key
-	@param M the input message to be signed
-	@param c component of the output signature
-	@param d component of the output signature
-
- */
-extern int ECP_ZZZ_SP_DSA(int h,csprng *R,octet *k,octet *s,octet *M,octet *c,octet *d);
-/**	@brief ECDSA Signature Verification
- *
-	IEEE-1363 ECDSA Signature Verification
-	@param h is the hash type
-	@param W the input public key
-	@param M the input message
-	@param c component of the input signature
-	@param d component of the input signature
-	@return 0 or an error code
- */
-extern int ECP_ZZZ_VP_DSA(int h,octet *W,octet *M,octet *c,octet *d);
-/*#endif*/
-
-#endif
-

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/1add7560/version3/c/ecdh_support.c
----------------------------------------------------------------------
diff --git a/version3/c/ecdh_support.c b/version3/c/ecdh_support.c
deleted file mode 100644
index b01ccc9..0000000
--- a/version3/c/ecdh_support.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-/* Symmetric crypto support functions Functions  */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-
-#include "ecdh_support.h"
-
-#define ROUNDUP(a,b) ((a)-1)/(b)+1
-
-/* general purpose hash function w=hash(p|n|x|y) */
-/* pad or truncate ouput to length pad if pad!=0 */
-void ehashit(int sha,octet *p,int n,octet *x,octet *w,int pad)
-{
-    int i,c[4],hlen;
-    hash256 sha256;
-    hash512 sha512;
-    char hh[64];
-
-    switch (sha)
-    {
-    case SHA256:
-        HASH256_init(&sha256);
-        break;
-    case SHA384:
-        HASH384_init(&sha512);
-        break;
-    case SHA512:
-        HASH512_init(&sha512);
-        break;
-    }
-
-    hlen=sha;
-
-    for (i=0; i<p->len; i++)
-    {
-        switch(sha)
-        {
-        case SHA256:
-            HASH256_process(&sha256,p->val[i]);
-            break;
-        case SHA384:
-            HASH384_process(&sha512,p->val[i]);
-            break;
-        case SHA512:
-            HASH512_process(&sha512,p->val[i]);
-            break;
-        }
-    }
-    if (n>0)
-    {
-        c[0]=(n>>24)&0xff;
-        c[1]=(n>>16)&0xff;
-        c[2]=(n>>8)&0xff;
-        c[3]=(n)&0xff;
-        for (i=0; i<4; i++)
-        {
-            switch(sha)
-            {
-            case SHA256:
-                HASH256_process(&sha256,c[i]);
-                break;
-            case SHA384:
-                HASH384_process(&sha512,c[i]);
-                break;
-            case SHA512:
-                HASH512_process(&sha512,c[i]);
-                break;
-            }
-        }
-    }
-    if (x!=NULL) for (i=0; i<x->len; i++)
-        {
-            switch(sha)
-            {
-            case SHA256:
-                HASH256_process(&sha256,x->val[i]);
-                break;
-            case SHA384:
-                HASH384_process(&sha512,x->val[i]);
-                break;
-            case SHA512:
-                HASH512_process(&sha512,x->val[i]);
-                break;
-            }
-        }
-
-    switch (sha)
-    {
-    case SHA256:
-        HASH256_hash(&sha256,hh);
-        break;
-    case SHA384:
-        HASH384_hash(&sha512,hh);
-        break;
-    case SHA512:
-        HASH512_hash(&sha512,hh);
-        break;
-    }
-
-    OCT_empty(w);
-    if (!pad)
-        OCT_jbytes(w,hh,hlen);
-    else
-    {
-        if (pad<=hlen)
-            OCT_jbytes(w,hh,pad);
-        else
-        {
-            OCT_jbyte(w,0,pad-hlen);
-            OCT_jbytes(w,hh,hlen);
-
-//            OCT_jbytes(w,hh,hlen);
-//            OCT_jbyte(w,0,pad-hlen);
-        }
-    }
-    return;
-}
-
-/* Hash octet p to octet w */
-void HASH(int sha,octet *p,octet *w)
-{
-    ehashit(sha,p,-1,NULL,w,0);
-}
-
-/* Calculate HMAC of m using key k. HMAC is tag of length olen */
-int HMAC(int sha,octet *m,octet *k,int olen,octet *tag)
-{
-    /* Input is from an octet m        *
-     * olen is requested output length in bytes. k is the key  *
-     * The output is the calculated tag */
-    int hlen,b;
-    char h[128],k0[128];
-    octet H= {0,sizeof(h),h};
-    octet K0= {0,sizeof(k0),k0};
-
-    hlen=sha;
-    if (hlen>32) b=128;
-    else b=64;
-
-    if (olen<4 /*|| olen>hlen*/) return 0;
-
-    if (k->len > b) ehashit(sha,k,-1,NULL,&K0,0);
-    else            OCT_copy(&K0,k);
-
-    OCT_jbyte(&K0,0,b-K0.len);
-
-    OCT_xorbyte(&K0,0x36);
-
-    ehashit(sha,&K0,-1,m,&H,0);
-
-    OCT_xorbyte(&K0,0x6a);   /* 0x6a = 0x36 ^ 0x5c */
-    ehashit(sha,&K0,-1,&H,&H,olen);
-
-    OCT_empty(tag);
-
-    OCT_jbytes(tag,H.val,olen);
-
-    return 1;
-}
-
-/* Key Derivation Functions */
-/* Input octet z */
-/* Output key of length olen */
-/*
-void KDF1(octet *z,int olen,octet *key)
-{
-    char h[32];
-	octet H={0,sizeof(h),h};
-    int counter,cthreshold;
-    int hlen=32;
-
-    OCT_empty(key);
-
-    cthreshold=ROUNDUP(olen,hlen);
-
-    for (counter=0;counter<cthreshold;counter++)
-    {
-        ehashit(z,counter,NULL,NULL,&H);
-        if (key->len+hlen>olen) OCT_jbytes(key,H.val,olen%hlen);
-        else                    OCT_joctet(key,&H);
-    }
-}
-*/
-void KDF2(int sha,octet *z,octet *p,int olen,octet *key)
-{
-    /* NOTE: the parameter olen is the length of the output k in bytes */
-    char h[64];
-    octet H= {0,sizeof(h),h};
-    int counter,cthreshold;
-    int hlen=sha;
-
-    OCT_empty(key);
-
-    cthreshold=ROUNDUP(olen,hlen);
-
-    for (counter=1; counter<=cthreshold; counter++)
-    {
-        ehashit(sha,z,counter,p,&H,0);
-        if (key->len+hlen>olen)  OCT_jbytes(key,H.val,olen%hlen);
-        else                     OCT_joctet(key,&H);
-    }
-
-}
-
-/* Password based Key Derivation Function */
-/* Input password p, salt s, and repeat count */
-/* Output key of length olen */
-void PBKDF2(int sha,octet *p,octet *s,int rep,int olen,octet *key)
-{
-    int i,j,len,d=ROUNDUP(olen,sha);
-    char f[64],u[64];
-    octet F= {0,sizeof(f),f};
-    octet U= {0,sizeof(u),u};
-    OCT_empty(key);
-
-    for (i=1; i<=d; i++)
-    {
-        len=s->len;
-        OCT_jint(s,i,4);
-
-        HMAC(sha,s,p,sha,&F);
-
-        s->len=len;
-        OCT_copy(&U,&F);
-        for (j=2; j<=rep; j++)
-        {
-            HMAC(sha,&U,p,sha,&U);
-            OCT_xor(&F,&U);
-        }
-
-        OCT_joctet(key,&F);
-    }
-
-    OCT_chop(key,NULL,olen);
-}
-
-/* AES encryption/decryption. Encrypt byte array M using key K and returns ciphertext */
-void AES_CBC_IV0_ENCRYPT(octet *k,octet *m,octet *c)
-{
-    /* AES CBC encryption, with Null IV and key k */
-    /* Input is from an octet string m, output is to an octet string c */
-    /* Input is padded as necessary to make up a full final block */
-    amcl_aes a;
-    int fin;
-    int i,j,ipt,opt;
-    char buff[16];
-    int padlen;
-
-    OCT_clear(c);
-    if (m->len==0) return;
-    AES_init(&a,CBC,k->len,k->val,NULL);
-
-    ipt=opt=0;
-    fin=0;
-    for(;;)
-    {
-        for (i=0; i<16; i++)
-        {
-            if (ipt<m->len) buff[i]=m->val[ipt++];
-            else
-            {
-                fin=1;
-                break;
-            }
-        }
-        if (fin) break;
-        AES_encrypt(&a,buff);
-        for (i=0; i<16; i++)
-            if (opt<c->max) c->val[opt++]=buff[i];
-    }
-
-    /* last block, filled up to i-th index */
-
-    padlen=16-i;
-    for (j=i; j<16; j++) buff[j]=padlen;
-    AES_encrypt(&a,buff);
-    for (i=0; i<16; i++)
-        if (opt<c->max) c->val[opt++]=buff[i];
-    AES_end(&a);
-    c->len=opt;
-}
-
-/* decrypts and returns TRUE if all consistent, else returns FALSE */
-int AES_CBC_IV0_DECRYPT(octet *k,octet *c,octet *m)
-{
-    /* padding is removed */
-    amcl_aes a;
-    int i,ipt,opt,ch;
-    char buff[16];
-    int fin,bad;
-    int padlen;
-    ipt=opt=0;
-
-    OCT_clear(m);
-    if (c->len==0) return 1;
-    ch=c->val[ipt++];
-
-    AES_init(&a,CBC,k->len,k->val,NULL);
-    fin=0;
-
-    for(;;)
-    {
-        for (i=0; i<16; i++)
-        {
-            buff[i]=ch;
-            if (ipt>=c->len)
-            {
-                fin=1;
-                break;
-            }
-            else ch=c->val[ipt++];
-        }
-        AES_decrypt(&a,buff);
-        if (fin) break;
-        for (i=0; i<16; i++)
-            if (opt<m->max) m->val[opt++]=buff[i];
-    }
-    AES_end(&a);
-    bad=0;
-    padlen=buff[15];
-    if (i!=15 || padlen<1 || padlen>16) bad=1;
-    if (padlen>=2 && padlen<=16)
-        for (i=16-padlen; i<16; i++) if (buff[i]!=padlen) bad=1;
-
-    if (!bad) for (i=0; i<16-padlen; i++)
-            if (opt<m->max) m->val[opt++]=buff[i];
-
-    m->len=opt;
-    if (bad) return 0;
-    return 1;
-}

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/1add7560/version3/c/ecdh_support.h
----------------------------------------------------------------------
diff --git a/version3/c/ecdh_support.h b/version3/c/ecdh_support.h
deleted file mode 100644
index 85b200d..0000000
--- a/version3/c/ecdh_support.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
-	Licensed to the Apache Software Foundation (ASF) under one
-	or more contributor license agreements.  See the NOTICE file
-	distributed with this work for additional information
-	regarding copyright ownership.  The ASF licenses this file
-	to you under the Apache License, Version 2.0 (the
-	"License"); you may not use this file except in compliance
-	with the License.  You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-	Unless required by applicable law or agreed to in writing,
-	software distributed under the License is distributed on an
-	"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-	KIND, either express or implied.  See the License for the
-	specific language governing permissions and limitations
-	under the License.
-*/
-
-/**
- * @file ecdh_support.h
- * @author Mike Scott
- * @brief ECDH Support Header File
- *
- */
-
-#ifndef ECC_SUPPORT_H
-#define ECC_SUPPORT_H
-
-#include "amcl.h"
-
-/* Auxiliary Functions */
-
-/** @brief general purpose hash function w=hash(p|n|x|y)
- *
-	@param sha is the hash type
-	@param p first octect involved in the hash
-	@param n integer involved in the hash
-	@param x second octect involved in the h ash
-	@param w output
-	@param pad padding
- */
-extern void ehashit(int sha,octet *p,int n,octet *x,octet *w,int pad);
-
-/**	@brief hash an octet into another octet
- *
- 	@param h is the hash type
-	@param I input octet
-	@param O output octet - H(I)
- */
-extern void HASH(int h,octet *I,octet *O);
-/**	@brief HMAC of message M using key K to create tag of length len in octet tag
- *
-	IEEE-1363 MAC1 function. Uses SHA256 internally.
-	@param h is the hash type
-	@param M input message octet
-	@param K input encryption key
-	@param len is output desired length of HMAC tag
-	@param tag is the output HMAC
-	@return 0 for bad parameters, else 1
- */
-extern int HMAC(int h,octet *M,octet *K,int len,octet *tag);
-
-/*extern void KDF1(octet *,int,octet *);*/
-
-/**	@brief Key Derivation Function - generates key K from inputs Z and P
- *
-	IEEE-1363 KDF2 Key Derivation Function. Uses SHA256 internally.
-	@param h is the hash type
-	@param Z input octet
-	@param P input key derivation parameters - can be NULL
-	@param len is output desired length of key
-	@param K is the derived key
- */
-extern void KDF2(int h,octet *Z,octet *P,int len,octet *K);
-/**	@brief Password Based Key Derivation Function - generates key K from password, salt and repeat counter
- *
-	PBKDF2 Password Based Key Derivation Function. Uses SHA256 internally.
-	@param h is the hash type
-	@param P input password
-	@param S input salt
-	@param rep Number of times to be iterated.
-	@param len is output desired length
-	@param K is the derived key
- */
-extern void PBKDF2(int h,octet *P,octet *S,int rep,int len,octet *K);
-/**	@brief AES encrypts a plaintext to a ciphtertext
- *
-	IEEE-1363 AES_CBC_IV0_ENCRYPT function. Encrypts in CBC mode with a zero IV, padding as necessary to create a full final block.
-	@param K AES key
-	@param P input plaintext octet
-	@param C output ciphertext octet
- */
-extern void AES_CBC_IV0_ENCRYPT(octet *K,octet *P,octet *C);
-/**	@brief AES encrypts a plaintext to a ciphtertext
- *
-	IEEE-1363 AES_CBC_IV0_DECRYPT function. Decrypts in CBC mode with a zero IV.
-	@param K AES key
-	@param C input ciphertext octet
-	@param P output plaintext octet
-	@return 0 if bad input, else 1
- */
-extern int AES_CBC_IV0_DECRYPT(octet *K,octet *C,octet *P);
-
-/* ECDH primitives - support functions */
-/**	@brief Generate an ECC public/private key pair
- *
-	@param R is a pointer to a cryptographically secure random number generator
-	@param s the private key, an output internally randomly generated if R!=NULL, otherwise must be provided as an input
-	@param W the output public key, which is s.G, where G is a fixed generator
-	@return 0 or an error code
- */
-
-#endif