D8>]      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\&Marcel Fourn (hecc@bitrot.dyndns.org) Safe-Infered binary addition of a1 and a2 a simple bitshift where n shifts left, so a negative n shifts right binary multiplication of a1 and a2 polynomial reduction of a via r the power function, b ^ k&, atm only specialised for k in {2,3} )a helper function to shorten all leading 0 from a conversion helper function 1conversion helper function test k if bit on position i is set !computing the modular inverse of a emod m, this is broken atm %helper function to get the length of a  the polynomial to invert  the modulus the inverted value ]    ]&Marcel Fourn (hecc@bitrot.dyndns.org) Safe-Infered     &Marcel Fourn (hecc@bitrot.dyndns.org) Safe-Infered% RElliptic Point Projective coordinates, three parameters x, y and z, like affine (xz,yz) #:Elliptic Point Affine coordinates, two parameters x and y &#class of all Elliptic Curve Points 'gfunction returning the appropriate INF in the specific ECP-Format, for generic higher-level-algorithms (+build point from one in affine coordinates )get bitlength *get contents of the curve +-generic getter, returning the affine x-value ,.generic getters, returning the affine y-value -5add an elliptic point onto itself, base for padd a a .add 2 elliptic points /nclass of (non-hyper) Elliptic Curves, has the form y^2+x*y=x^3+A*x^2+B mod P, the parameters being A, B and P 1All Elliptic Curves, binary 6abstract over (+) 7abstract over (*) 8,abstract over (^), used for small exponents 9abstract over mod :Elliptic Point Modified Jacobian coordinates, four parameters x,y,z and A*z^4 (A being the first curve-parameter), like affine coordinates (xz^2,yz^3) =OElliptic Point Jacobian coordinates, three parameter x, y and z, like affine (xz^2,yz^3) @RElliptic Point Projective coordinates, three parameters x, y and z, like affine (xz,yz) C:Elliptic Point Affine coordinates, two parameters x and y F#class of all Elliptic Curve Points Ggfunction returning the appropriate INF in the specific ECP-Format, for generic higher-level-algorithms H+build point from one in affine coordinates Iget bitlength Jget contents of the curve K-generic getter, returning the affine x-value L.generic getters, returning the affine y-value M5add an elliptic point onto itself, base for padd a a Nadd 2 elliptic points O`class of all Elliptic Curves, has the form y^2=x^3+A*x+B mod P, the parameters being A, B and P Q!computing the modular inverse of a ^ m RRthis is a generic handle for Point Multiplication. The implementation may change. T:generic verify, if generic ECP is on EC via getx and gety X!computing the modular inverse of a 9 m YRthis is a generic handle for Point Multiplication. The implementation may change. Z:generic verify, if generic ECP is on EC via getx and gety M !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQthe number to invert  the modulus the inverted value Rthe point to multiply times to multiply the point the result-point ST(the elliptic curve point which we check is the point on the curve? UVWXthe point to invert the inverted point Ythe point to multiply times to multiply the point the result-point Z(the elliptic curve point which we check is the point on the curve? [\_`abcdefghijklmn= !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\=FGHIJKLMNOPQRTSCED@BA=?>:<;VWU&'()*+,-.567891234/0XYZ#%$ "![\( "!#%$&'()*+,-./0123456789:<;=?>@BACEDFGHIJKLMNOPQRSTUVWXYZ[\_`abcdefghijklmno      !"#"$%$&'()*+,-.//0123456789:9;<;=>=?@?ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk hecc-0.3.2Codec.Crypto.ECC.F2Codec.Crypto.ECC.StandardCurvesCodec.Crypto.ECC.Basef2eAdd f2eBitshiftf2eMul f2eReduceByf2ePow elimFalsesf2eFromInteger f2eToInteger f2eTestBitmodinvF2f2eLenStandardCurveF2stdcF_lstdcF_pstdcF_astdcF_bstdcF_xpstdcF_yp StandardCurvestdc_lstdc_pstdc_astdc_bstdc_xpstdc_ypp521p256p384k283b283EPpF2InfpF2EPaF2InfaF2ECPF2infF2fromAffineCoordsF2getBitLengthF2 getCurveF2getxF2getyF2 pdoubleF2paddF2ECSCECurvegetAgetBgetPECCNumeaddemulepowemodEPmjInfmjEPjInfjEPpInfpEPaInfaECPinffromAffineCoords getBitLengthgetCurvegetxgetypdoublepaddECmodinvpmulbinaryison p521point p256point p384point modinvF2KpmulF2isonF2 b283point k283point $fEqArraybaseGHC.Realmod $fECPF2EPpF2 $fShowEPpF2 $fECPF2EPaF2 $fShowEPaF2 $fECurveECSC $fShowECSC $fECCNumArray $fECPEPmj $fShowEPmj$fECPEPj $fShowEPj$fECPEPp $fShowEPp$fECPEPa $fShowEPa$fShowEC