Skip to main content
. 2021 Apr 19;21(8):2859. doi: 10.3390/s21082859
Algorithm 6 Adaptive method.
Input: s=6t+2, m= the bit length of s, P={(P1,…,Pd)∣Pj∈G1}, Q″={(Q1′,…,Qk′,Qk+1,…,Qd)∣Qj′ is the precomputation tuple for Qj∈G2,1<k≤d}
Output: eprod(P,Q)
  • 1:

    Write s in signed binary form, s=∑i=0m−1s[i]2i with s[i]∈{−1,0,1}

  • 2:

    f←1

  • 3:

    forj←1tokdo

  • 4:

        cnt[j]←1

  • 5:

    end for

  • 6:

    forj←k+1toddo

  • 7:

        Tj←Qj

  • 8:

    end for

  • 9:

    fori←m−2down to 0 do

  • 10:

        f←f2

  • 11:

        for j←1 to k do

  • 12:

            GDBL,GADD←Qj′

  • 13:

            λ,c←GDBL[i]

  • 14:

            Compute g←(yP+λxP+c)

  • 15:

            f←f·g

  • 16:

            if s[i]≠0 then

  • 17:

               λ,c←GADD[cnt[j]]

  • 18:

               Compute g←(yP+λxP+c)

  • 19:

               cnt[j]←cnt[j]+1

  • 20:

               f←f·g

  • 21:

            end if

  • 22:

        end for

  • 23:

        for j←k+1 to d do

  • 24:

            f←f·LTj,Tj(Pj),Tj←[2]Tj

  • 25:

            if s[i]=1 then

  • 26:

               f←f·LTj,Qj(Pj),Tj←Tj+Qj

  • 27:

            else if s[i]=−1 then

  • 28:

               f←f·LTj,−Qj(Pj),Tj←Tj−Qj

  • 29:

            end if

  • 30:

        end for

  • 31:

    end for

  • 32:

    forj←1tokdo

  • 33:

        π′Q,(π′)Q2←Qj′

  • 34:

        λ,c←π′Q

  • 35:

        Compute g←(yP+λxP+c)

  • 36:

        f←f·g

  • 37:

        λ,c←(π′)2Q

  • 38:

        Compute g←(yP+λxP+c)

  • 39:

        f←f·g

  • 40:

    end for

  • 41:

    forj←k+1toddo

  • 42:

        R←π(Qj),f←f·LTj,R(Pj),Tj←Tj+R

  • 43:

        R←π2(Qj),f←f·LTj,−R(Pj),Tj←Tj−R

  • 44:

    end for

  • 45:

    f←f(p12−1)/r

  • 46:

    returnf