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