< Summary

Information
Class: Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldOperations
Assembly: Renci.SshNet
File(s): File 1: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_0.cs
File 2: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_1.cs
File 3: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_add.cs
File 4: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_cmov.cs
File 5: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_cswap.cs
File 6: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_frombytes.cs
File 7: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_invert.cs
File 8: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_isnegative.cs
File 9: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_isnonzero.cs
File 10: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_mul.cs
File 11: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_mul121666.cs
File 12: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_neg.cs
File 13: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_pow22523.cs
File 14: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_sq.cs
File 15: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_sq2.cs
File 16: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_sub.cs
File 17: \home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_tobytes.cs
Line coverage
100%
Covered lines: 919
Uncovered lines: 0
Coverable lines: 919
Total lines: 1689
Line coverage: 100%
Branch coverage
100%
Covered branches: 36
Total branches: 36
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

File(s)

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_0.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7    internal static void fe_0(out FieldElement h)
 28758    {
 28759      h = default(FieldElement);
 287510    }
 11  }
 12}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_1.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7    internal static void fe_1(out FieldElement h)
 57378    {
 57379      h = default(FieldElement);
 573710      h.x0 = 1;
 573711    }
 12  }
 13}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_add.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7    /*
 8    h = f + g
 9    Can overlap h with f or g.
 10
 11    Preconditions:
 12       |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
 13       |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
 14
 15    Postconditions:
 16       |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
 17    */
 18    //void fe_add(fe h,const fe f,const fe g)
 19    internal static void fe_add(out FieldElement h, ref FieldElement f, ref FieldElement g)
 239562420    {
 239562421      Int32 f0 = f.x0;
 239562422      Int32 f1 = f.x1;
 239562423      Int32 f2 = f.x2;
 239562424      Int32 f3 = f.x3;
 239562425      Int32 f4 = f.x4;
 239562426      Int32 f5 = f.x5;
 239562427      Int32 f6 = f.x6;
 239562428      Int32 f7 = f.x7;
 239562429      Int32 f8 = f.x8;
 239562430      Int32 f9 = f.x9;
 239562431      Int32 g0 = g.x0;
 239562432      Int32 g1 = g.x1;
 239562433      Int32 g2 = g.x2;
 239562434      Int32 g3 = g.x3;
 239562435      Int32 g4 = g.x4;
 239562436      Int32 g5 = g.x5;
 239562437      Int32 g6 = g.x6;
 239562438      Int32 g7 = g.x7;
 239562439      Int32 g8 = g.x8;
 239562440      Int32 g9 = g.x9;
 239562441      Int32 h0 = f0 + g0;
 239562442      Int32 h1 = f1 + g1;
 239562443      Int32 h2 = f2 + g2;
 239562444      Int32 h3 = f3 + g3;
 239562445      Int32 h4 = f4 + g4;
 239562446      Int32 h5 = f5 + g5;
 239562447      Int32 h6 = f6 + g6;
 239562448      Int32 h7 = f7 + g7;
 239562449      Int32 h8 = f8 + g8;
 239562450      Int32 h9 = f9 + g9;
 239562451      h.x0 = h0;
 239562452      h.x1 = h1;
 239562453      h.x2 = h2;
 239562454      h.x3 = h3;
 239562455      h.x4 = h4;
 239562456      h.x5 = h5;
 239562457      h.x6 = h6;
 239562458      h.x7 = h7;
 239562459      h.x8 = h8;
 239562460      h.x9 = h9;
 239562461    }
 62  }
 63}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_cmov.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7    /*
 8    Replace (f,g) with (g,g) if b == 1;
 9    replace (f,g) with (f,g) if b == 0.
 10
 11    Preconditions: b in {0,1}.
 12    */
 13
 14    //void fe_cmov(fe f,const fe g,unsigned int b)
 15    internal static void fe_cmov(ref FieldElement f, ref FieldElement g, int b)
 1382416    {
 1382417      Int32 f0 = f.x0;
 1382418      Int32 f1 = f.x1;
 1382419      Int32 f2 = f.x2;
 1382420      Int32 f3 = f.x3;
 1382421      Int32 f4 = f.x4;
 1382422      Int32 f5 = f.x5;
 1382423      Int32 f6 = f.x6;
 1382424      Int32 f7 = f.x7;
 1382425      Int32 f8 = f.x8;
 1382426      Int32 f9 = f.x9;
 1382427      Int32 g0 = g.x0;
 1382428      Int32 g1 = g.x1;
 1382429      Int32 g2 = g.x2;
 1382430      Int32 g3 = g.x3;
 1382431      Int32 g4 = g.x4;
 1382432      Int32 g5 = g.x5;
 1382433      Int32 g6 = g.x6;
 1382434      Int32 g7 = g.x7;
 1382435      Int32 g8 = g.x8;
 1382436      Int32 g9 = g.x9;
 1382437      Int32 x0 = f0 ^ g0;
 1382438      Int32 x1 = f1 ^ g1;
 1382439      Int32 x2 = f2 ^ g2;
 1382440      Int32 x3 = f3 ^ g3;
 1382441      Int32 x4 = f4 ^ g4;
 1382442      Int32 x5 = f5 ^ g5;
 1382443      Int32 x6 = f6 ^ g6;
 1382444      Int32 x7 = f7 ^ g7;
 1382445      Int32 x8 = f8 ^ g8;
 1382446      Int32 x9 = f9 ^ g9;
 1382447      b = -b;
 1382448      x0 &= b;
 1382449      x1 &= b;
 1382450      x2 &= b;
 1382451      x3 &= b;
 1382452      x4 &= b;
 1382453      x5 &= b;
 1382454      x6 &= b;
 1382455      x7 &= b;
 1382456      x8 &= b;
 1382457      x9 &= b;
 1382458      f.x0 = f0 ^ x0;
 1382459      f.x1 = f1 ^ x1;
 1382460      f.x2 = f2 ^ x2;
 1382461      f.x3 = f3 ^ x3;
 1382462      f.x4 = f4 ^ x4;
 1382463      f.x5 = f5 ^ x5;
 1382464      f.x6 = f6 ^ x6;
 1382465      f.x7 = f7 ^ x7;
 1382466      f.x8 = f8 ^ x8;
 1382467      f.x9 = f9 ^ x9;
 1382468    }
 69  }
 70}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_cswap.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5    internal static partial class FieldOperations
 6    {
 7        /*
 8        Replace (f,g) with (g,f) if b == 1;
 9        replace (f,g) with (f,g) if b == 0.
 10
 11        Preconditions: b in {0,1}.
 12        */
 13        internal static void fe_cswap(ref FieldElement f, ref FieldElement g, uint b)
 120012814        {
 120012815            Int32 f0 = f.x0;
 120012816            Int32 f1 = f.x1;
 120012817            Int32 f2 = f.x2;
 120012818            Int32 f3 = f.x3;
 120012819            Int32 f4 = f.x4;
 120012820            Int32 f5 = f.x5;
 120012821            Int32 f6 = f.x6;
 120012822            Int32 f7 = f.x7;
 120012823            Int32 f8 = f.x8;
 120012824            Int32 f9 = f.x9;
 120012825            Int32 g0 = g.x0;
 120012826            Int32 g1 = g.x1;
 120012827            Int32 g2 = g.x2;
 120012828            Int32 g3 = g.x3;
 120012829            Int32 g4 = g.x4;
 120012830            Int32 g5 = g.x5;
 120012831            Int32 g6 = g.x6;
 120012832            Int32 g7 = g.x7;
 120012833            Int32 g8 = g.x8;
 120012834            Int32 g9 = g.x9;
 120012835            Int32 x0 = f0 ^ g0;
 120012836            Int32 x1 = f1 ^ g1;
 120012837            Int32 x2 = f2 ^ g2;
 120012838            Int32 x3 = f3 ^ g3;
 120012839            Int32 x4 = f4 ^ g4;
 120012840            Int32 x5 = f5 ^ g5;
 120012841            Int32 x6 = f6 ^ g6;
 120012842            Int32 x7 = f7 ^ g7;
 120012843            Int32 x8 = f8 ^ g8;
 120012844            Int32 x9 = f9 ^ g9;
 120012845            int negb = unchecked((int)-b);
 120012846            x0 &= negb;
 120012847            x1 &= negb;
 120012848            x2 &= negb;
 120012849            x3 &= negb;
 120012850            x4 &= negb;
 120012851            x5 &= negb;
 120012852            x6 &= negb;
 120012853            x7 &= negb;
 120012854            x8 &= negb;
 120012855            x9 &= negb;
 120012856            f.x0 = f0 ^ x0;
 120012857            f.x1 = f1 ^ x1;
 120012858            f.x2 = f2 ^ x2;
 120012859            f.x3 = f3 ^ x3;
 120012860            f.x4 = f4 ^ x4;
 120012861            f.x5 = f5 ^ x5;
 120012862            f.x6 = f6 ^ x6;
 120012863            f.x7 = f7 ^ x7;
 120012864            f.x8 = f8 ^ x8;
 120012865            f.x9 = f9 ^ x9;
 120012866            g.x0 = g0 ^ x0;
 120012867            g.x1 = g1 ^ x1;
 120012868            g.x2 = g2 ^ x2;
 120012869            g.x3 = g3 ^ x3;
 120012870            g.x4 = g4 ^ x4;
 120012871            g.x5 = g5 ^ x5;
 120012872            g.x6 = g6 ^ x6;
 120012873            g.x7 = g7 ^ x7;
 120012874            g.x8 = g8 ^ x8;
 120012875            g.x9 = g9 ^ x9;
 120012876        }
 77    }
 78}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_frombytes.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7    private static Int64 load_3(byte[] data, int offset)
 187768    {
 9      uint result;
 1877610      result = (uint)data[offset + 0];
 1877611      result |= (uint)data[offset + 1] << 8;
 1877612      result |= (uint)data[offset + 2] << 16;
 1877613      return (Int64)(UInt64)result;
 1877614    }
 15
 16    private static Int64 load_4(byte[] data, int offset)
 469417    {
 18      uint result;
 469419      result = (uint)data[offset + 0];
 469420      result |= (uint)data[offset + 1] << 8;
 469421      result |= (uint)data[offset + 2] << 16;
 469422      result |= (uint)data[offset + 3] << 24;
 469423      return (Int64)(UInt64)result;
 469424    }
 25
 26    //  Ignores top bit of h.
 27    internal static void fe_frombytes(out FieldElement h, byte[] data, int offset)
 328    {
 329      Int64 h0 = load_4(data, offset);
 330      Int64 h1 = load_3(data, offset + 4) << 6;
 331      Int64 h2 = load_3(data, offset + 7) << 5;
 332      Int64 h3 = load_3(data, offset + 10) << 3;
 333      Int64 h4 = load_3(data, offset + 13) << 2;
 334      Int64 h5 = load_4(data, offset + 16);
 335      Int64 h6 = load_3(data, offset + 20) << 7;
 336      Int64 h7 = load_3(data, offset + 23) << 5;
 337      Int64 h8 = load_3(data, offset + 26) << 4;
 338      Int64 h9 = (load_3(data, offset + 29) & 8388607) << 2;
 39      Int64 carry0;
 40      Int64 carry1;
 41      Int64 carry2;
 42      Int64 carry3;
 43      Int64 carry4;
 44      Int64 carry5;
 45      Int64 carry6;
 46      Int64 carry7;
 47      Int64 carry8;
 48      Int64 carry9;
 49
 950      carry9 = (h9 + (Int64)(1 << 24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
 951      carry1 = (h1 + (Int64)(1 << 24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
 952      carry3 = (h3 + (Int64)(1 << 24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
 953      carry5 = (h5 + (Int64)(1 << 24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
 954      carry7 = (h7 + (Int64)(1 << 24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
 55
 956      carry0 = (h0 + (Int64)(1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
 957      carry2 = (h2 + (Int64)(1 << 25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
 958      carry4 = (h4 + (Int64)(1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
 959      carry6 = (h6 + (Int64)(1 << 25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
 960      carry8 = (h8 + (Int64)(1 << 25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
 61
 362      h.x0 = (int)h0;
 363      h.x1 = (int)h1;
 364      h.x2 = (int)h2;
 365      h.x3 = (int)h3;
 366      h.x4 = (int)h4;
 367      h.x5 = (int)h5;
 368      h.x6 = (int)h6;
 369      h.x7 = (int)h7;
 370      h.x8 = (int)h8;
 371      h.x9 = (int)h9;
 372    }
 73
 74    // does NOT ignore top bit
 75    internal static void fe_frombytes2(out FieldElement h, byte[] data, int offset)
 234476    {
 234477      Int64 h0 = load_4(data, offset);
 234478      Int64 h1 = load_3(data, offset + 4) << 6;
 234479      Int64 h2 = load_3(data, offset + 7) << 5;
 234480      Int64 h3 = load_3(data, offset + 10) << 3;
 234481      Int64 h4 = load_3(data, offset + 13) << 2;
 234482      Int64 h5 = load_4(data, offset + 16);
 234483      Int64 h6 = load_3(data, offset + 20) << 7;
 234484      Int64 h7 = load_3(data, offset + 23) << 5;
 234485      Int64 h8 = load_3(data, offset + 26) << 4;
 234486      Int64 h9 = load_3(data, offset + 29) << 2;
 87      Int64 carry0;
 88      Int64 carry1;
 89      Int64 carry2;
 90      Int64 carry3;
 91      Int64 carry4;
 92      Int64 carry5;
 93      Int64 carry6;
 94      Int64 carry7;
 95      Int64 carry8;
 96      Int64 carry9;
 97
 703298      carry9 = (h9 + (Int64)(1 << 24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
 703299      carry1 = (h1 + (Int64)(1 << 24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
 7032100      carry3 = (h3 + (Int64)(1 << 24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
 7032101      carry5 = (h5 + (Int64)(1 << 24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
 7032102      carry7 = (h7 + (Int64)(1 << 24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
 103
 7032104      carry0 = (h0 + (Int64)(1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
 7032105      carry2 = (h2 + (Int64)(1 << 25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
 7032106      carry4 = (h4 + (Int64)(1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
 7032107      carry6 = (h6 + (Int64)(1 << 25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
 7032108      carry8 = (h8 + (Int64)(1 << 25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
 109
 2344110      h.x0 = (int)h0;
 2344111      h.x1 = (int)h1;
 2344112      h.x2 = (int)h2;
 2344113      h.x3 = (int)h3;
 2344114      h.x4 = (int)h4;
 2344115      h.x5 = (int)h5;
 2344116      h.x6 = (int)h6;
 2344117      h.x7 = (int)h7;
 2344118      h.x8 = (int)h8;
 2344119      h.x9 = (int)h9;
 2344120    }
 121  }
 122}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_invert.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7    internal static void fe_invert(out FieldElement result, ref FieldElement z)
 23558    {
 9      FieldElement t0;
 10      FieldElement t1;
 11      FieldElement t2;
 12      FieldElement t3;
 13      int i;
 14
 15      /* qhasm: fe z1 */
 16
 17      /* qhasm: fe z2 */
 18
 19      /* qhasm: fe z8 */
 20
 21      /* qhasm: fe z9 */
 22
 23      /* qhasm: fe z11 */
 24
 25      /* qhasm: fe z22 */
 26
 27      /* qhasm: fe z_5_0 */
 28
 29      /* qhasm: fe z_10_5 */
 30
 31      /* qhasm: fe z_10_0 */
 32
 33      /* qhasm: fe z_20_10 */
 34
 35      /* qhasm: fe z_20_0 */
 36
 37      /* qhasm: fe z_40_20 */
 38
 39      /* qhasm: fe z_40_0 */
 40
 41      /* qhasm: fe z_50_10 */
 42
 43      /* qhasm: fe z_50_0 */
 44
 45      /* qhasm: fe z_100_50 */
 46
 47      /* qhasm: fe z_100_0 */
 48
 49      /* qhasm: fe z_200_100 */
 50
 51      /* qhasm: fe z_200_0 */
 52
 53      /* qhasm: fe z_250_50 */
 54
 55      /* qhasm: fe z_250_0 */
 56
 57      /* qhasm: fe z_255_5 */
 58
 59      /* qhasm: fe z_255_21 */
 60
 61      /* qhasm: enter pow225521 */
 62
 63      /* qhasm: z2 = z1^2^1 */
 64      /* asm 1: fe_sq(>z2=fe#1,<z1=fe#11); for (i = 1;i < 1;++i) fe_sq(>z2=fe#1,>z2=fe#1); */
 65      /* asm 2: fe_sq(>z2=t0,<z1=z); for (i = 1;i < 1;++i) fe_sq(>z2=t0,>z2=t0); */
 235566      fe_sq(out t0, ref z); //for (i = 1; i < 1; ++i) fe_sq(out t0, ref t0);
 67
 68      /* qhasm: z8 = z2^2^2 */
 69      /* asm 1: fe_sq(>z8=fe#2,<z2=fe#1); for (i = 1;i < 2;++i) fe_sq(>z8=fe#2,>z8=fe#2); */
 70      /* asm 2: fe_sq(>z8=t1,<z2=t0); for (i = 1;i < 2;++i) fe_sq(>z8=t1,>z8=t1); */
 1413071      fe_sq(out t1, ref t0); for (i = 1; i < 2; ++i) fe_sq(out t1, ref t1);
 72
 73      /* qhasm: z9 = z1*z8 */
 74      /* asm 1: fe_mul(>z9=fe#2,<z1=fe#11,<z8=fe#2); */
 75      /* asm 2: fe_mul(>z9=t1,<z1=z,<z8=t1); */
 235576      fe_mul(out t1, ref z, ref t1);
 77
 78      /* qhasm: z11 = z2*z9 */
 79      /* asm 1: fe_mul(>z11=fe#1,<z2=fe#1,<z9=fe#2); */
 80      /* asm 2: fe_mul(>z11=t0,<z2=t0,<z9=t1); */
 235581      fe_mul(out t0, ref t0, ref t1);
 82
 83      /* qhasm: z22 = z11^2^1 */
 84      /* asm 1: fe_sq(>z22=fe#3,<z11=fe#1); for (i = 1;i < 1;++i) fe_sq(>z22=fe#3,>z22=fe#3); */
 85      /* asm 2: fe_sq(>z22=t2,<z11=t0); for (i = 1;i < 1;++i) fe_sq(>z22=t2,>z22=t2); */
 235586      fe_sq(out t2, ref t0); //for (i = 1; i < 1; ++i) fe_sq(out t2, ref t2);
 87
 88      /* qhasm: z_5_0 = z9*z22 */
 89      /* asm 1: fe_mul(>z_5_0=fe#2,<z9=fe#2,<z22=fe#3); */
 90      /* asm 2: fe_mul(>z_5_0=t1,<z9=t1,<z22=t2); */
 235591      fe_mul(out t1, ref t1, ref t2);
 92
 93      /* qhasm: z_10_5 = z_5_0^2^5 */
 94      /* asm 1: fe_sq(>z_10_5=fe#3,<z_5_0=fe#2); for (i = 1;i < 5;++i) fe_sq(>z_10_5=fe#3,>z_10_5=fe#3); */
 95      /* asm 2: fe_sq(>z_10_5=t2,<z_5_0=t1); for (i = 1;i < 5;++i) fe_sq(>z_10_5=t2,>z_10_5=t2); */
 3532596      fe_sq(out t2, ref t1); for (i = 1; i < 5; ++i) fe_sq(out t2, ref t2);
 97
 98      /* qhasm: z_10_0 = z_10_5*z_5_0 */
 99      /* asm 1: fe_mul(>z_10_0=fe#2,<z_10_5=fe#3,<z_5_0=fe#2); */
 100      /* asm 2: fe_mul(>z_10_0=t1,<z_10_5=t2,<z_5_0=t1); */
 2355101      fe_mul(out t1, ref t2, ref t1);
 102
 103      /* qhasm: z_20_10 = z_10_0^2^10 */
 104      /* asm 1: fe_sq(>z_20_10=fe#3,<z_10_0=fe#2); for (i = 1;i < 10;++i) fe_sq(>z_20_10=fe#3,>z_20_10=fe#3); */
 105      /* asm 2: fe_sq(>z_20_10=t2,<z_10_0=t1); for (i = 1;i < 10;++i) fe_sq(>z_20_10=t2,>z_20_10=t2); */
 70650106      fe_sq(out t2, ref t1); for (i = 1; i < 10; ++i) fe_sq(out t2, ref t2);
 107
 108      /* qhasm: z_20_0 = z_20_10*z_10_0 */
 109      /* asm 1: fe_mul(>z_20_0=fe#3,<z_20_10=fe#3,<z_10_0=fe#2); */
 110      /* asm 2: fe_mul(>z_20_0=t2,<z_20_10=t2,<z_10_0=t1); */
 2355111      fe_mul(out t2, ref t2, ref t1);
 112
 113      /* qhasm: z_40_20 = z_20_0^2^20 */
 114      /* asm 1: fe_sq(>z_40_20=fe#4,<z_20_0=fe#3); for (i = 1;i < 20;++i) fe_sq(>z_40_20=fe#4,>z_40_20=fe#4); */
 115      /* asm 2: fe_sq(>z_40_20=t3,<z_20_0=t2); for (i = 1;i < 20;++i) fe_sq(>z_40_20=t3,>z_40_20=t3); */
 141300116      fe_sq(out t3, ref t2); for (i = 1; i < 20; ++i) fe_sq(out t3, ref t3);
 117
 118      /* qhasm: z_40_0 = z_40_20*z_20_0 */
 119      /* asm 1: fe_mul(>z_40_0=fe#3,<z_40_20=fe#4,<z_20_0=fe#3); */
 120      /* asm 2: fe_mul(>z_40_0=t2,<z_40_20=t3,<z_20_0=t2); */
 2355121      fe_mul(out t2, ref t3, ref t2);
 122
 123      /* qhasm: z_50_10 = z_40_0^2^10 */
 124      /* asm 1: fe_sq(>z_50_10=fe#3,<z_40_0=fe#3); for (i = 1;i < 10;++i) fe_sq(>z_50_10=fe#3,>z_50_10=fe#3); */
 125      /* asm 2: fe_sq(>z_50_10=t2,<z_40_0=t2); for (i = 1;i < 10;++i) fe_sq(>z_50_10=t2,>z_50_10=t2); */
 70650126      fe_sq(out t2, ref t2); for (i = 1; i < 10; ++i) fe_sq(out t2, ref t2);
 127
 128      /* qhasm: z_50_0 = z_50_10*z_10_0 */
 129      /* asm 1: fe_mul(>z_50_0=fe#2,<z_50_10=fe#3,<z_10_0=fe#2); */
 130      /* asm 2: fe_mul(>z_50_0=t1,<z_50_10=t2,<z_10_0=t1); */
 2355131      fe_mul(out t1, ref t2, ref t1);
 132
 133      /* qhasm: z_100_50 = z_50_0^2^50 */
 134      /* asm 1: fe_sq(>z_100_50=fe#3,<z_50_0=fe#2); for (i = 1;i < 50;++i) fe_sq(>z_100_50=fe#3,>z_100_50=fe#3); */
 135      /* asm 2: fe_sq(>z_100_50=t2,<z_50_0=t1); for (i = 1;i < 50;++i) fe_sq(>z_100_50=t2,>z_100_50=t2); */
 353250136      fe_sq(out t2, ref t1); for (i = 1; i < 50; ++i) fe_sq(out t2, ref t2);
 137
 138      /* qhasm: z_100_0 = z_100_50*z_50_0 */
 139      /* asm 1: fe_mul(>z_100_0=fe#3,<z_100_50=fe#3,<z_50_0=fe#2); */
 140      /* asm 2: fe_mul(>z_100_0=t2,<z_100_50=t2,<z_50_0=t1); */
 2355141      fe_mul(out t2, ref t2, ref t1);
 142
 143      /* qhasm: z_200_100 = z_100_0^2^100 */
 144      /* asm 1: fe_sq(>z_200_100=fe#4,<z_100_0=fe#3); for (i = 1;i < 100;++i) fe_sq(>z_200_100=fe#4,>z_200_100=fe#4); */
 145      /* asm 2: fe_sq(>z_200_100=t3,<z_100_0=t2); for (i = 1;i < 100;++i) fe_sq(>z_200_100=t3,>z_200_100=t3); */
 706500146      fe_sq(out t3, ref t2); for (i = 1; i < 100; ++i) fe_sq(out t3, ref t3);
 147
 148      /* qhasm: z_200_0 = z_200_100*z_100_0 */
 149      /* asm 1: fe_mul(>z_200_0=fe#3,<z_200_100=fe#4,<z_100_0=fe#3); */
 150      /* asm 2: fe_mul(>z_200_0=t2,<z_200_100=t3,<z_100_0=t2); */
 2355151      fe_mul(out t2, ref t3, ref t2);
 152
 153      /* qhasm: z_250_50 = z_200_0^2^50 */
 154      /* asm 1: fe_sq(>z_250_50=fe#3,<z_200_0=fe#3); for (i = 1;i < 50;++i) fe_sq(>z_250_50=fe#3,>z_250_50=fe#3); */
 155      /* asm 2: fe_sq(>z_250_50=t2,<z_200_0=t2); for (i = 1;i < 50;++i) fe_sq(>z_250_50=t2,>z_250_50=t2); */
 353250156      fe_sq(out t2, ref t2); for (i = 1; i < 50; ++i) fe_sq(out t2, ref t2);
 157
 158      /* qhasm: z_250_0 = z_250_50*z_50_0 */
 159      /* asm 1: fe_mul(>z_250_0=fe#2,<z_250_50=fe#3,<z_50_0=fe#2); */
 160      /* asm 2: fe_mul(>z_250_0=t1,<z_250_50=t2,<z_50_0=t1); */
 2355161      fe_mul(out t1, ref t2, ref t1);
 162
 163      /* qhasm: z_255_5 = z_250_0^2^5 */
 164      /* asm 1: fe_sq(>z_255_5=fe#2,<z_250_0=fe#2); for (i = 1;i < 5;++i) fe_sq(>z_255_5=fe#2,>z_255_5=fe#2); */
 165      /* asm 2: fe_sq(>z_255_5=t1,<z_250_0=t1); for (i = 1;i < 5;++i) fe_sq(>z_255_5=t1,>z_255_5=t1); */
 35325166      fe_sq(out t1, ref t1); for (i = 1; i < 5; ++i) fe_sq(out t1, ref t1);
 167
 168      /* qhasm: z_255_21 = z_255_5*z11 */
 169      /* asm 1: fe_mul(>z_255_21=fe#12,<z_255_5=fe#2,<z11=fe#1); */
 170      /* asm 2: fe_mul(>z_255_21=out,<z_255_5=t1,<z11=t0); */
 2355171      fe_mul(out result, ref t1, ref t0);
 172
 173      /* qhasm: return */
 174
 175
 2355176      return;
 2355177    }
 178  }
 179}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_isnegative.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5    internal static partial class FieldOperations
 6    {
 7        /*
 8        return 1 if f is in {1,3,5,...,q-2}
 9        return 0 if f is in {0,2,4,...,q-1}
 10
 11        Preconditions:
 12        |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
 13        */
 14        //int fe_isnegative(const fe f)
 15        internal static int fe_isnegative(ref FieldElement f)
 1416        {
 17            FieldElement fr;
 1418            fe_reduce(out fr, ref f);
 1419            return fr.x0 & 1;
 1420        }
 21    }
 22}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_isnonzero.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5    internal static partial class FieldOperations
 6    {
 7        /*
 8        return 1 if f == 0
 9        return 0 if f != 0
 10
 11        Preconditions:
 12           |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
 13        */
 14        // Todo: Discuss this with upstream
 15        // Above comment is from the original code. But I believe the original code returned
 16        //   0 if f == 0
 17        //  -1 if f != 0
 18        // This code actually returns 0 if f==0 and 1 if f != 0
 19        internal static int fe_isnonzero(ref FieldElement f)
 620        {
 21            FieldElement fr;
 622            fe_reduce(out fr, ref f);
 623            int differentBits = 0;
 624            differentBits |= fr.x0;
 625            differentBits |= fr.x1;
 626            differentBits |= fr.x2;
 627            differentBits |= fr.x3;
 628            differentBits |= fr.x4;
 629            differentBits |= fr.x5;
 630            differentBits |= fr.x6;
 631            differentBits |= fr.x7;
 632            differentBits |= fr.x8;
 633            differentBits |= fr.x9;
 634            return (int)((unchecked((uint)differentBits - 1) >> 31) ^ 1);
 635        }
 36    }
 37}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_mul.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7    /*
 8    h = f * g
 9    Can overlap h with f or g.
 10
 11    Preconditions:
 12       |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
 13       |g| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
 14
 15    Postconditions:
 16       |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
 17    */
 18
 19    /*
 20    Notes on implementation strategy:
 21
 22    Using schoolbook multiplication.
 23    Karatsuba would save a little in some cost models.
 24
 25    Most multiplications by 2 and 19 are 32-bit precomputations;
 26    cheaper than 64-bit postcomputations.
 27
 28    There is one remaining multiplication by 19 in the carry chain;
 29    one *19 precomputation can be merged into this,
 30    but the resulting data flow is considerably less clean.
 31
 32    There are 12 carries below.
 33    10 of them are 2-way parallelizable and vectorizable.
 34    Can get away with 11 carries, but then data flow is much deeper.
 35
 36    With tighter constraints on inputs can squeeze carries into int32.
 37    */
 38
 39    internal static void fe_mul(out FieldElement h, ref FieldElement f, ref FieldElement g)
 302496840    {
 302496841      Int32 f0 = f.x0;
 302496842      Int32 f1 = f.x1;
 302496843      Int32 f2 = f.x2;
 302496844      Int32 f3 = f.x3;
 302496845      Int32 f4 = f.x4;
 302496846      Int32 f5 = f.x5;
 302496847      Int32 f6 = f.x6;
 302496848      Int32 f7 = f.x7;
 302496849      Int32 f8 = f.x8;
 302496850      Int32 f9 = f.x9;
 302496851      Int32 g0 = g.x0;
 302496852      Int32 g1 = g.x1;
 302496853      Int32 g2 = g.x2;
 302496854      Int32 g3 = g.x3;
 302496855      Int32 g4 = g.x4;
 302496856      Int32 g5 = g.x5;
 302496857      Int32 g6 = g.x6;
 302496858      Int32 g7 = g.x7;
 302496859      Int32 g8 = g.x8;
 302496860      Int32 g9 = g.x9;
 302496861      Int32 g1_19 = 19 * g1; /* 1.959375*2^29 */
 302496862      Int32 g2_19 = 19 * g2; /* 1.959375*2^30; still ok */
 302496863      Int32 g3_19 = 19 * g3;
 302496864      Int32 g4_19 = 19 * g4;
 302496865      Int32 g5_19 = 19 * g5;
 302496866      Int32 g6_19 = 19 * g6;
 302496867      Int32 g7_19 = 19 * g7;
 302496868      Int32 g8_19 = 19 * g8;
 302496869      Int32 g9_19 = 19 * g9;
 302496870      Int32 f1_2 = 2 * f1;
 302496871      Int32 f3_2 = 2 * f3;
 302496872      Int32 f5_2 = 2 * f5;
 302496873      Int32 f7_2 = 2 * f7;
 302496874      Int32 f9_2 = 2 * f9;
 302496875      Int64 f0g0 = f0 * (Int64)g0;
 302496876      Int64 f0g1 = f0 * (Int64)g1;
 302496877      Int64 f0g2 = f0 * (Int64)g2;
 302496878      Int64 f0g3 = f0 * (Int64)g3;
 302496879      Int64 f0g4 = f0 * (Int64)g4;
 302496880      Int64 f0g5 = f0 * (Int64)g5;
 302496881      Int64 f0g6 = f0 * (Int64)g6;
 302496882      Int64 f0g7 = f0 * (Int64)g7;
 302496883      Int64 f0g8 = f0 * (Int64)g8;
 302496884      Int64 f0g9 = f0 * (Int64)g9;
 302496885      Int64 f1g0 = f1 * (Int64)g0;
 302496886      Int64 f1g1_2 = f1_2 * (Int64)g1;
 302496887      Int64 f1g2 = f1 * (Int64)g2;
 302496888      Int64 f1g3_2 = f1_2 * (Int64)g3;
 302496889      Int64 f1g4 = f1 * (Int64)g4;
 302496890      Int64 f1g5_2 = f1_2 * (Int64)g5;
 302496891      Int64 f1g6 = f1 * (Int64)g6;
 302496892      Int64 f1g7_2 = f1_2 * (Int64)g7;
 302496893      Int64 f1g8 = f1 * (Int64)g8;
 302496894      Int64 f1g9_38 = f1_2 * (Int64)g9_19;
 302496895      Int64 f2g0 = f2 * (Int64)g0;
 302496896      Int64 f2g1 = f2 * (Int64)g1;
 302496897      Int64 f2g2 = f2 * (Int64)g2;
 302496898      Int64 f2g3 = f2 * (Int64)g3;
 302496899      Int64 f2g4 = f2 * (Int64)g4;
 3024968100      Int64 f2g5 = f2 * (Int64)g5;
 3024968101      Int64 f2g6 = f2 * (Int64)g6;
 3024968102      Int64 f2g7 = f2 * (Int64)g7;
 3024968103      Int64 f2g8_19 = f2 * (Int64)g8_19;
 3024968104      Int64 f2g9_19 = f2 * (Int64)g9_19;
 3024968105      Int64 f3g0 = f3 * (Int64)g0;
 3024968106      Int64 f3g1_2 = f3_2 * (Int64)g1;
 3024968107      Int64 f3g2 = f3 * (Int64)g2;
 3024968108      Int64 f3g3_2 = f3_2 * (Int64)g3;
 3024968109      Int64 f3g4 = f3 * (Int64)g4;
 3024968110      Int64 f3g5_2 = f3_2 * (Int64)g5;
 3024968111      Int64 f3g6 = f3 * (Int64)g6;
 3024968112      Int64 f3g7_38 = f3_2 * (Int64)g7_19;
 3024968113      Int64 f3g8_19 = f3 * (Int64)g8_19;
 3024968114      Int64 f3g9_38 = f3_2 * (Int64)g9_19;
 3024968115      Int64 f4g0 = f4 * (Int64)g0;
 3024968116      Int64 f4g1 = f4 * (Int64)g1;
 3024968117      Int64 f4g2 = f4 * (Int64)g2;
 3024968118      Int64 f4g3 = f4 * (Int64)g3;
 3024968119      Int64 f4g4 = f4 * (Int64)g4;
 3024968120      Int64 f4g5 = f4 * (Int64)g5;
 3024968121      Int64 f4g6_19 = f4 * (Int64)g6_19;
 3024968122      Int64 f4g7_19 = f4 * (Int64)g7_19;
 3024968123      Int64 f4g8_19 = f4 * (Int64)g8_19;
 3024968124      Int64 f4g9_19 = f4 * (Int64)g9_19;
 3024968125      Int64 f5g0 = f5 * (Int64)g0;
 3024968126      Int64 f5g1_2 = f5_2 * (Int64)g1;
 3024968127      Int64 f5g2 = f5 * (Int64)g2;
 3024968128      Int64 f5g3_2 = f5_2 * (Int64)g3;
 3024968129      Int64 f5g4 = f5 * (Int64)g4;
 3024968130      Int64 f5g5_38 = f5_2 * (Int64)g5_19;
 3024968131      Int64 f5g6_19 = f5 * (Int64)g6_19;
 3024968132      Int64 f5g7_38 = f5_2 * (Int64)g7_19;
 3024968133      Int64 f5g8_19 = f5 * (Int64)g8_19;
 3024968134      Int64 f5g9_38 = f5_2 * (Int64)g9_19;
 3024968135      Int64 f6g0 = f6 * (Int64)g0;
 3024968136      Int64 f6g1 = f6 * (Int64)g1;
 3024968137      Int64 f6g2 = f6 * (Int64)g2;
 3024968138      Int64 f6g3 = f6 * (Int64)g3;
 3024968139      Int64 f6g4_19 = f6 * (Int64)g4_19;
 3024968140      Int64 f6g5_19 = f6 * (Int64)g5_19;
 3024968141      Int64 f6g6_19 = f6 * (Int64)g6_19;
 3024968142      Int64 f6g7_19 = f6 * (Int64)g7_19;
 3024968143      Int64 f6g8_19 = f6 * (Int64)g8_19;
 3024968144      Int64 f6g9_19 = f6 * (Int64)g9_19;
 3024968145      Int64 f7g0 = f7 * (Int64)g0;
 3024968146      Int64 f7g1_2 = f7_2 * (Int64)g1;
 3024968147      Int64 f7g2 = f7 * (Int64)g2;
 3024968148      Int64 f7g3_38 = f7_2 * (Int64)g3_19;
 3024968149      Int64 f7g4_19 = f7 * (Int64)g4_19;
 3024968150      Int64 f7g5_38 = f7_2 * (Int64)g5_19;
 3024968151      Int64 f7g6_19 = f7 * (Int64)g6_19;
 3024968152      Int64 f7g7_38 = f7_2 * (Int64)g7_19;
 3024968153      Int64 f7g8_19 = f7 * (Int64)g8_19;
 3024968154      Int64 f7g9_38 = f7_2 * (Int64)g9_19;
 3024968155      Int64 f8g0 = f8 * (Int64)g0;
 3024968156      Int64 f8g1 = f8 * (Int64)g1;
 3024968157      Int64 f8g2_19 = f8 * (Int64)g2_19;
 3024968158      Int64 f8g3_19 = f8 * (Int64)g3_19;
 3024968159      Int64 f8g4_19 = f8 * (Int64)g4_19;
 3024968160      Int64 f8g5_19 = f8 * (Int64)g5_19;
 3024968161      Int64 f8g6_19 = f8 * (Int64)g6_19;
 3024968162      Int64 f8g7_19 = f8 * (Int64)g7_19;
 3024968163      Int64 f8g8_19 = f8 * (Int64)g8_19;
 3024968164      Int64 f8g9_19 = f8 * (Int64)g9_19;
 3024968165      Int64 f9g0 = f9 * (Int64)g0;
 3024968166      Int64 f9g1_38 = f9_2 * (Int64)g1_19;
 3024968167      Int64 f9g2_19 = f9 * (Int64)g2_19;
 3024968168      Int64 f9g3_38 = f9_2 * (Int64)g3_19;
 3024968169      Int64 f9g4_19 = f9 * (Int64)g4_19;
 3024968170      Int64 f9g5_38 = f9_2 * (Int64)g5_19;
 3024968171      Int64 f9g6_19 = f9 * (Int64)g6_19;
 3024968172      Int64 f9g7_38 = f9_2 * (Int64)g7_19;
 3024968173      Int64 f9g8_19 = f9 * (Int64)g8_19;
 3024968174      Int64 f9g9_38 = f9_2 * (Int64)g9_19;
 3024968175      Int64 h0 = f0g0 + f1g9_38 + f2g8_19 + f3g7_38 + f4g6_19 + f5g5_38 + f6g4_19 + f7g3_38 + f8g2_19 + f9g1_38;
 3024968176      Int64 h1 = f0g1 + f1g0 + f2g9_19 + f3g8_19 + f4g7_19 + f5g6_19 + f6g5_19 + f7g4_19 + f8g3_19 + f9g2_19;
 3024968177      Int64 h2 = f0g2 + f1g1_2 + f2g0 + f3g9_38 + f4g8_19 + f5g7_38 + f6g6_19 + f7g5_38 + f8g4_19 + f9g3_38;
 3024968178      Int64 h3 = f0g3 + f1g2 + f2g1 + f3g0 + f4g9_19 + f5g8_19 + f6g7_19 + f7g6_19 + f8g5_19 + f9g4_19;
 3024968179      Int64 h4 = f0g4 + f1g3_2 + f2g2 + f3g1_2 + f4g0 + f5g9_38 + f6g8_19 + f7g7_38 + f8g6_19 + f9g5_38;
 3024968180      Int64 h5 = f0g5 + f1g4 + f2g3 + f3g2 + f4g1 + f5g0 + f6g9_19 + f7g8_19 + f8g7_19 + f9g6_19;
 3024968181      Int64 h6 = f0g6 + f1g5_2 + f2g4 + f3g3_2 + f4g2 + f5g1_2 + f6g0 + f7g9_38 + f8g8_19 + f9g7_38;
 3024968182      Int64 h7 = f0g7 + f1g6 + f2g5 + f3g4 + f4g3 + f5g2 + f6g1 + f7g0 + f8g9_19 + f9g8_19;
 3024968183      Int64 h8 = f0g8 + f1g7_2 + f2g6 + f3g5_2 + f4g4 + f5g3_2 + f6g2 + f7g1_2 + f8g0 + f9g9_38;
 3024968184      Int64 h9 = f0g9 + f1g8 + f2g7 + f3g6 + f4g5 + f5g4 + f6g3 + f7g2 + f8g1 + f9g0;
 185      Int64 carry0;
 186      Int64 carry1;
 187      Int64 carry2;
 188      Int64 carry3;
 189      Int64 carry4;
 190      Int64 carry5;
 191      Int64 carry6;
 192      Int64 carry7;
 193      Int64 carry8;
 194      Int64 carry9;
 195
 196      /*
 197      |h0| <= (1.65*1.65*2^52*(1+19+19+19+19)+1.65*1.65*2^50*(38+38+38+38+38))
 198        i.e. |h0| <= 1.4*2^60; narrower ranges for h2, h4, h6, h8
 199      |h1| <= (1.65*1.65*2^51*(1+1+19+19+19+19+19+19+19+19))
 200        i.e. |h1| <= 1.7*2^59; narrower ranges for h3, h5, h7, h9
 201      */
 202
 9074904203      carry0 = (h0 + (Int64)(1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
 9074904204      carry4 = (h4 + (Int64)(1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
 205      /* |h0| <= 2^25 */
 206      /* |h4| <= 2^25 */
 207      /* |h1| <= 1.71*2^59 */
 208      /* |h5| <= 1.71*2^59 */
 209
 9074904210      carry1 = (h1 + (Int64)(1 << 24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
 9074904211      carry5 = (h5 + (Int64)(1 << 24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
 212      /* |h1| <= 2^24; from now on fits into int32 */
 213      /* |h5| <= 2^24; from now on fits into int32 */
 214      /* |h2| <= 1.41*2^60 */
 215      /* |h6| <= 1.41*2^60 */
 216
 9074904217      carry2 = (h2 + (Int64)(1 << 25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
 9074904218      carry6 = (h6 + (Int64)(1 << 25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
 219      /* |h2| <= 2^25; from now on fits into int32 unchanged */
 220      /* |h6| <= 2^25; from now on fits into int32 unchanged */
 221      /* |h3| <= 1.71*2^59 */
 222      /* |h7| <= 1.71*2^59 */
 223
 9074904224      carry3 = (h3 + (Int64)(1 << 24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
 9074904225      carry7 = (h7 + (Int64)(1 << 24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
 226      /* |h3| <= 2^24; from now on fits into int32 unchanged */
 227      /* |h7| <= 2^24; from now on fits into int32 unchanged */
 228      /* |h4| <= 1.72*2^34 */
 229      /* |h8| <= 1.41*2^60 */
 230
 9074904231      carry4 = (h4 + (Int64)(1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
 9074904232      carry8 = (h8 + (Int64)(1 << 25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
 233      /* |h4| <= 2^25; from now on fits into int32 unchanged */
 234      /* |h8| <= 2^25; from now on fits into int32 unchanged */
 235      /* |h5| <= 1.01*2^24 */
 236      /* |h9| <= 1.71*2^59 */
 237
 9074904238      carry9 = (h9 + (Int64)(1 << 24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
 239      /* |h9| <= 2^24; from now on fits into int32 unchanged */
 240      /* |h0| <= 1.1*2^39 */
 241
 9074904242      carry0 = (h0 + (Int64)(1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
 243      /* |h0| <= 2^25; from now on fits into int32 unchanged */
 244      /* |h1| <= 1.01*2^24 */
 245
 3024968246      h.x0 = (Int32)h0;
 3024968247      h.x1 = (Int32)h1;
 3024968248      h.x2 = (Int32)h2;
 3024968249      h.x3 = (Int32)h3;
 3024968250      h.x4 = (Int32)h4;
 3024968251      h.x5 = (Int32)h5;
 3024968252      h.x6 = (Int32)h6;
 3024968253      h.x7 = (Int32)h7;
 3024968254      h.x8 = (Int32)h8;
 3024968255      h.x9 = (Int32)h9;
 3024968256    }
 257  }
 258}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_mul121666.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7
 8    /*
 9    h = f * 121666
 10    Can overlap h with f.
 11
 12    Preconditions:
 13       |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
 14
 15    Postconditions:
 16       |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
 17    */
 18
 19    internal static void fe_mul121666(out FieldElement h, ref FieldElement f)
 59772020    {
 59772021      Int32 f0 = f.x0;
 59772022      Int32 f1 = f.x1;
 59772023      Int32 f2 = f.x2;
 59772024      Int32 f3 = f.x3;
 59772025      Int32 f4 = f.x4;
 59772026      Int32 f5 = f.x5;
 59772027      Int32 f6 = f.x6;
 59772028      Int32 f7 = f.x7;
 59772029      Int32 f8 = f.x8;
 59772030      Int32 f9 = f.x9;
 59772031      Int64 h0 = f0 * (Int64)121666;
 59772032      Int64 h1 = f1 * (Int64)121666;
 59772033      Int64 h2 = f2 * (Int64)121666;
 59772034      Int64 h3 = f3 * (Int64)121666;
 59772035      Int64 h4 = f4 * (Int64)121666;
 59772036      Int64 h5 = f5 * (Int64)121666;
 59772037      Int64 h6 = f6 * (Int64)121666;
 59772038      Int64 h7 = f7 * (Int64)121666;
 59772039      Int64 h8 = f8 * (Int64)121666;
 59772040      Int64 h9 = f9 * (Int64)121666;
 41      Int64 carry0;
 42      Int64 carry1;
 43      Int64 carry2;
 44      Int64 carry3;
 45      Int64 carry4;
 46      Int64 carry5;
 47      Int64 carry6;
 48      Int64 carry7;
 49      Int64 carry8;
 50      Int64 carry9;
 51
 179316052      carry9 = (h9 + (Int64)(1 << 24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
 179316053      carry1 = (h1 + (Int64)(1 << 24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
 179316054      carry3 = (h3 + (Int64)(1 << 24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
 179316055      carry5 = (h5 + (Int64)(1 << 24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
 179316056      carry7 = (h7 + (Int64)(1 << 24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
 57
 179316058      carry0 = (h0 + (Int64)(1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
 179316059      carry2 = (h2 + (Int64)(1 << 25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
 179316060      carry4 = (h4 + (Int64)(1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
 179316061      carry6 = (h6 + (Int64)(1 << 25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
 179316062      carry8 = (h8 + (Int64)(1 << 25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
 63
 59772064      h.x0 = (int)h0;
 59772065      h.x1 = (int)h1;
 59772066      h.x2 = (int)h2;
 59772067      h.x3 = (int)h3;
 59772068      h.x4 = (int)h4;
 59772069      h.x5 = (int)h5;
 59772070      h.x6 = (int)h6;
 59772071      h.x7 = (int)h7;
 59772072      h.x8 = (int)h8;
 59772073      h.x9 = (int)h9;
 59772074    }
 75  }
 76}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_neg.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7    /*
 8    h = -f
 9
 10    Preconditions:
 11       |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
 12
 13    Postconditions:
 14       |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
 15    */
 16    internal static void fe_neg(out FieldElement h, ref FieldElement f)
 51217    {
 51218      Int32 f0 = f.x0;
 51219      Int32 f1 = f.x1;
 51220      Int32 f2 = f.x2;
 51221      Int32 f3 = f.x3;
 51222      Int32 f4 = f.x4;
 51223      Int32 f5 = f.x5;
 51224      Int32 f6 = f.x6;
 51225      Int32 f7 = f.x7;
 51226      Int32 f8 = f.x8;
 51227      Int32 f9 = f.x9;
 51228      Int32 h0 = -f0;
 51229      Int32 h1 = -f1;
 51230      Int32 h2 = -f2;
 51231      Int32 h3 = -f3;
 51232      Int32 h4 = -f4;
 51233      Int32 h5 = -f5;
 51234      Int32 h6 = -f6;
 51235      Int32 h7 = -f7;
 51236      Int32 h8 = -f8;
 51237      Int32 h9 = -f9;
 51238      h.x0 = h0;
 51239      h.x1 = h1;
 51240      h.x2 = h2;
 51241      h.x3 = h3;
 51242      h.x4 = h4;
 51243      h.x5 = h5;
 51244      h.x6 = h6;
 51245      h.x7 = h7;
 51246      h.x8 = h8;
 51247      h.x9 = h9;
 51248    }
 49  }
 50}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_pow22523.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7    internal static void fe_pow22523(out FieldElement result, ref FieldElement z)
 38    {
 9      FieldElement t0;
 10      FieldElement t1;
 11      FieldElement t2;
 12      int i;
 13
 14      /* qhasm: fe z1 */
 15
 16      /* qhasm: fe z2 */
 17
 18      /* qhasm: fe z8 */
 19
 20      /* qhasm: fe z9 */
 21
 22      /* qhasm: fe z11 */
 23
 24      /* qhasm: fe z22 */
 25
 26      /* qhasm: fe z_5_0 */
 27
 28      /* qhasm: fe z_10_5 */
 29
 30      /* qhasm: fe z_10_0 */
 31
 32      /* qhasm: fe z_20_10 */
 33
 34      /* qhasm: fe z_20_0 */
 35
 36      /* qhasm: fe z_40_20 */
 37
 38      /* qhasm: fe z_40_0 */
 39
 40      /* qhasm: fe z_50_10 */
 41
 42      /* qhasm: fe z_50_0 */
 43
 44      /* qhasm: fe z_100_50 */
 45
 46      /* qhasm: fe z_100_0 */
 47
 48      /* qhasm: fe z_200_100 */
 49
 50      /* qhasm: fe z_200_0 */
 51
 52      /* qhasm: fe z_250_50 */
 53
 54      /* qhasm: fe z_250_0 */
 55
 56      /* qhasm: fe z_252_2 */
 57
 58      /* qhasm: fe z_252_3 */
 59
 60      /* qhasm: enter pow22523 */
 61
 62      /* qhasm: z2 = z1^2^1 */
 63      /* asm 1: fe_sq(>z2=fe#1,<z1=fe#11); for (i = 1;i < 1;++i) fe_sq(>z2=fe#1,>z2=fe#1); */
 64      /* asm 2: fe_sq(>z2=t0,<z1=z); for (i = 1;i < 1;++i) fe_sq(>z2=t0,>z2=t0); */
 365      fe_sq(out t0, ref z); //for (i = 1; i < 1; ++i) fe_sq(out t0, ref t0);
 66
 67      /* qhasm: z8 = z2^2^2 */
 68      /* asm 1: fe_sq(>z8=fe#2,<z2=fe#1); for (i = 1;i < 2;++i) fe_sq(>z8=fe#2,>z8=fe#2); */
 69      /* asm 2: fe_sq(>z8=t1,<z2=t0); for (i = 1;i < 2;++i) fe_sq(>z8=t1,>z8=t1); */
 1870      fe_sq(out t1, ref t0); for (i = 1; i < 2; ++i) fe_sq(out t1, ref t1);
 71
 72      /* qhasm: z9 = z1*z8 */
 73      /* asm 1: fe_mul(>z9=fe#2,<z1=fe#11,<z8=fe#2); */
 74      /* asm 2: fe_mul(>z9=t1,<z1=z,<z8=t1); */
 375      fe_mul(out t1, ref z, ref t1);
 76
 77      /* qhasm: z11 = z2*z9 */
 78      /* asm 1: fe_mul(>z11=fe#1,<z2=fe#1,<z9=fe#2); */
 79      /* asm 2: fe_mul(>z11=t0,<z2=t0,<z9=t1); */
 380      fe_mul(out t0, ref  t0, ref  t1);
 81
 82      /* qhasm: z22 = z11^2^1 */
 83      /* asm 1: fe_sq(>z22=fe#1,<z11=fe#1); for (i = 1;i < 1;++i) fe_sq(>z22=fe#1,>z22=fe#1); */
 84      /* asm 2: fe_sq(>z22=t0,<z11=t0); for (i = 1;i < 1;++i) fe_sq(>z22=t0,>z22=t0); */
 385      fe_sq(out t0, ref t0); //for (i = 1; i < 1; ++i) fe_sq(out t0, ref  t0);
 86
 87      /* qhasm: z_5_0 = z9*z22 */
 88      /* asm 1: fe_mul(>z_5_0=fe#1,<z9=fe#2,<z22=fe#1); */
 89      /* asm 2: fe_mul(>z_5_0=t0,<z9=t1,<z22=t0); */
 390      fe_mul(out t0, ref t1, ref  t0);
 91
 92      /* qhasm: z_10_5 = z_5_0^2^5 */
 93      /* asm 1: fe_sq(>z_10_5=fe#2,<z_5_0=fe#1); for (i = 1;i < 5;++i) fe_sq(>z_10_5=fe#2,>z_10_5=fe#2); */
 94      /* asm 2: fe_sq(>z_10_5=t1,<z_5_0=t0); for (i = 1;i < 5;++i) fe_sq(>z_10_5=t1,>z_10_5=t1); */
 4595      fe_sq(out t1, ref t0); for (i = 1; i < 5; ++i) fe_sq(out t1, ref  t1);
 96
 97      /* qhasm: z_10_0 = z_10_5*z_5_0 */
 98      /* asm 1: fe_mul(>z_10_0=fe#1,<z_10_5=fe#2,<z_5_0=fe#1); */
 99      /* asm 2: fe_mul(>z_10_0=t0,<z_10_5=t1,<z_5_0=t0); */
 3100      fe_mul(out t0, ref  t1, ref  t0);
 101
 102      /* qhasm: z_20_10 = z_10_0^2^10 */
 103      /* asm 1: fe_sq(>z_20_10=fe#2,<z_10_0=fe#1); for (i = 1;i < 10;++i) fe_sq(>z_20_10=fe#2,>z_20_10=fe#2); */
 104      /* asm 2: fe_sq(>z_20_10=t1,<z_10_0=t0); for (i = 1;i < 10;++i) fe_sq(>z_20_10=t1,>z_20_10=t1); */
 90105      fe_sq(out t1, ref  t0); for (i = 1; i < 10; ++i) fe_sq(out t1, ref  t1);
 106
 107      /* qhasm: z_20_0 = z_20_10*z_10_0 */
 108      /* asm 1: fe_mul(>z_20_0=fe#2,<z_20_10=fe#2,<z_10_0=fe#1); */
 109      /* asm 2: fe_mul(>z_20_0=t1,<z_20_10=t1,<z_10_0=t0); */
 3110      fe_mul(out t1, ref  t1, ref  t0);
 111
 112      /* qhasm: z_40_20 = z_20_0^2^20 */
 113      /* asm 1: fe_sq(>z_40_20=fe#3,<z_20_0=fe#2); for (i = 1;i < 20;++i) fe_sq(>z_40_20=fe#3,>z_40_20=fe#3); */
 114      /* asm 2: fe_sq(>z_40_20=t2,<z_20_0=t1); for (i = 1;i < 20;++i) fe_sq(>z_40_20=t2,>z_40_20=t2); */
 180115      fe_sq(out t2, ref  t1); for (i = 1; i < 20; ++i) fe_sq(out t2, ref  t2);
 116
 117      /* qhasm: z_40_0 = z_40_20*z_20_0 */
 118      /* asm 1: fe_mul(>z_40_0=fe#2,<z_40_20=fe#3,<z_20_0=fe#2); */
 119      /* asm 2: fe_mul(>z_40_0=t1,<z_40_20=t2,<z_20_0=t1); */
 3120      fe_mul(out t1, ref t2, ref  t1);
 121
 122      /* qhasm: z_50_10 = z_40_0^2^10 */
 123      /* asm 1: fe_sq(>z_50_10=fe#2,<z_40_0=fe#2); for (i = 1;i < 10;++i) fe_sq(>z_50_10=fe#2,>z_50_10=fe#2); */
 124      /* asm 2: fe_sq(>z_50_10=t1,<z_40_0=t1); for (i = 1;i < 10;++i) fe_sq(>z_50_10=t1,>z_50_10=t1); */
 90125      fe_sq(out t1, ref t1); for (i = 1; i < 10; ++i) fe_sq(out t1, ref t1);
 126
 127      /* qhasm: z_50_0 = z_50_10*z_10_0 */
 128      /* asm 1: fe_mul(>z_50_0=fe#1,<z_50_10=fe#2,<z_10_0=fe#1); */
 129      /* asm 2: fe_mul(>z_50_0=t0,<z_50_10=t1,<z_10_0=t0); */
 3130      fe_mul(out t0, ref  t1, ref  t0);
 131
 132      /* qhasm: z_100_50 = z_50_0^2^50 */
 133      /* asm 1: fe_sq(>z_100_50=fe#2,<z_50_0=fe#1); for (i = 1;i < 50;++i) fe_sq(>z_100_50=fe#2,>z_100_50=fe#2); */
 134      /* asm 2: fe_sq(>z_100_50=t1,<z_50_0=t0); for (i = 1;i < 50;++i) fe_sq(>z_100_50=t1,>z_100_50=t1); */
 450135      fe_sq(out t1, ref  t0); for (i = 1; i < 50; ++i) fe_sq(out t1, ref  t1);
 136
 137      /* qhasm: z_100_0 = z_100_50*z_50_0 */
 138      /* asm 1: fe_mul(>z_100_0=fe#2,<z_100_50=fe#2,<z_50_0=fe#1); */
 139      /* asm 2: fe_mul(>z_100_0=t1,<z_100_50=t1,<z_50_0=t0); */
 3140      fe_mul(out t1, ref t1, ref  t0);
 141
 142      /* qhasm: z_200_100 = z_100_0^2^100 */
 143      /* asm 1: fe_sq(>z_200_100=fe#3,<z_100_0=fe#2); for (i = 1;i < 100;++i) fe_sq(>z_200_100=fe#3,>z_200_100=fe#3); */
 144      /* asm 2: fe_sq(>z_200_100=t2,<z_100_0=t1); for (i = 1;i < 100;++i) fe_sq(>z_200_100=t2,>z_200_100=t2); */
 900145      fe_sq(out t2, ref  t1); for (i = 1; i < 100; ++i) fe_sq(out t2, ref  t2);
 146
 147      /* qhasm: z_200_0 = z_200_100*z_100_0 */
 148      /* asm 1: fe_mul(>z_200_0=fe#2,<z_200_100=fe#3,<z_100_0=fe#2); */
 149      /* asm 2: fe_mul(>z_200_0=t1,<z_200_100=t2,<z_100_0=t1); */
 3150      fe_mul(out t1, ref  t2, ref  t1);
 151
 152      /* qhasm: z_250_50 = z_200_0^2^50 */
 153      /* asm 1: fe_sq(>z_250_50=fe#2,<z_200_0=fe#2); for (i = 1;i < 50;++i) fe_sq(>z_250_50=fe#2,>z_250_50=fe#2); */
 154      /* asm 2: fe_sq(>z_250_50=t1,<z_200_0=t1); for (i = 1;i < 50;++i) fe_sq(>z_250_50=t1,>z_250_50=t1); */
 450155      fe_sq(out t1, ref t1); for (i = 1; i < 50; ++i) fe_sq(out t1, ref t1);
 156
 157      /* qhasm: z_250_0 = z_250_50*z_50_0 */
 158      /* asm 1: fe_mul(>z_250_0=fe#1,<z_250_50=fe#2,<z_50_0=fe#1); */
 159      /* asm 2: fe_mul(>z_250_0=t0,<z_250_50=t1,<z_50_0=t0); */
 3160      fe_mul(out t0, ref  t1, ref  t0);
 161
 162      /* qhasm: z_252_2 = z_250_0^2^2 */
 163      /* asm 1: fe_sq(>z_252_2=fe#1,<z_250_0=fe#1); for (i = 1;i < 2;++i) fe_sq(>z_252_2=fe#1,>z_252_2=fe#1); */
 164      /* asm 2: fe_sq(>z_252_2=t0,<z_250_0=t0); for (i = 1;i < 2;++i) fe_sq(>z_252_2=t0,>z_252_2=t0); */
 18165      fe_sq(out t0, ref  t0); for (i = 1; i < 2; ++i) fe_sq(out t0, ref t0);
 166
 167      /* qhasm: z_252_3 = z_252_2*z1 */
 168      /* asm 1: fe_mul(>z_252_3=fe#12,<z_252_2=fe#1,<z1=fe#11); */
 169      /* asm 2: fe_mul(>z_252_3=out,<z_252_2=t0,<z1=z); */
 3170      fe_mul(out result, ref  t0, ref z);
 171
 172      /* qhasm: return */
 3173    }
 174  }
 175}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_sq.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7    /*
 8    h = f * f
 9    Can overlap h with f.
 10
 11    Preconditions:
 12       |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
 13
 14    Postconditions:
 15       |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
 16    */
 17
 18    /*
 19    See fe_mul.c for discussion of implementation strategy.
 20    */
 21    internal static void fe_sq(out FieldElement h, ref FieldElement f)
 299218222    {
 299218223      Int32 f0 = f.x0;
 299218224      Int32 f1 = f.x1;
 299218225      Int32 f2 = f.x2;
 299218226      Int32 f3 = f.x3;
 299218227      Int32 f4 = f.x4;
 299218228      Int32 f5 = f.x5;
 299218229      Int32 f6 = f.x6;
 299218230      Int32 f7 = f.x7;
 299218231      Int32 f8 = f.x8;
 299218232      Int32 f9 = f.x9;
 299218233      Int32 f0_2 = 2 * f0;
 299218234      Int32 f1_2 = 2 * f1;
 299218235      Int32 f2_2 = 2 * f2;
 299218236      Int32 f3_2 = 2 * f3;
 299218237      Int32 f4_2 = 2 * f4;
 299218238      Int32 f5_2 = 2 * f5;
 299218239      Int32 f6_2 = 2 * f6;
 299218240      Int32 f7_2 = 2 * f7;
 299218241      Int32 f5_38 = 38 * f5; /* 1.959375*2^30 */
 299218242      Int32 f6_19 = 19 * f6; /* 1.959375*2^30 */
 299218243      Int32 f7_38 = 38 * f7; /* 1.959375*2^30 */
 299218244      Int32 f8_19 = 19 * f8; /* 1.959375*2^30 */
 299218245      Int32 f9_38 = 38 * f9; /* 1.959375*2^30 */
 299218246      Int64 f0f0 = f0 * (Int64)f0;
 299218247      Int64 f0f1_2 = f0_2 * (Int64)f1;
 299218248      Int64 f0f2_2 = f0_2 * (Int64)f2;
 299218249      Int64 f0f3_2 = f0_2 * (Int64)f3;
 299218250      Int64 f0f4_2 = f0_2 * (Int64)f4;
 299218251      Int64 f0f5_2 = f0_2 * (Int64)f5;
 299218252      Int64 f0f6_2 = f0_2 * (Int64)f6;
 299218253      Int64 f0f7_2 = f0_2 * (Int64)f7;
 299218254      Int64 f0f8_2 = f0_2 * (Int64)f8;
 299218255      Int64 f0f9_2 = f0_2 * (Int64)f9;
 299218256      Int64 f1f1_2 = f1_2 * (Int64)f1;
 299218257      Int64 f1f2_2 = f1_2 * (Int64)f2;
 299218258      Int64 f1f3_4 = f1_2 * (Int64)f3_2;
 299218259      Int64 f1f4_2 = f1_2 * (Int64)f4;
 299218260      Int64 f1f5_4 = f1_2 * (Int64)f5_2;
 299218261      Int64 f1f6_2 = f1_2 * (Int64)f6;
 299218262      Int64 f1f7_4 = f1_2 * (Int64)f7_2;
 299218263      Int64 f1f8_2 = f1_2 * (Int64)f8;
 299218264      Int64 f1f9_76 = f1_2 * (Int64)f9_38;
 299218265      Int64 f2f2 = f2 * (Int64)f2;
 299218266      Int64 f2f3_2 = f2_2 * (Int64)f3;
 299218267      Int64 f2f4_2 = f2_2 * (Int64)f4;
 299218268      Int64 f2f5_2 = f2_2 * (Int64)f5;
 299218269      Int64 f2f6_2 = f2_2 * (Int64)f6;
 299218270      Int64 f2f7_2 = f2_2 * (Int64)f7;
 299218271      Int64 f2f8_38 = f2_2 * (Int64)f8_19;
 299218272      Int64 f2f9_38 = f2 * (Int64)f9_38;
 299218273      Int64 f3f3_2 = f3_2 * (Int64)f3;
 299218274      Int64 f3f4_2 = f3_2 * (Int64)f4;
 299218275      Int64 f3f5_4 = f3_2 * (Int64)f5_2;
 299218276      Int64 f3f6_2 = f3_2 * (Int64)f6;
 299218277      Int64 f3f7_76 = f3_2 * (Int64)f7_38;
 299218278      Int64 f3f8_38 = f3_2 * (Int64)f8_19;
 299218279      Int64 f3f9_76 = f3_2 * (Int64)f9_38;
 299218280      Int64 f4f4 = f4 * (Int64)f4;
 299218281      Int64 f4f5_2 = f4_2 * (Int64)f5;
 299218282      Int64 f4f6_38 = f4_2 * (Int64)f6_19;
 299218283      Int64 f4f7_38 = f4 * (Int64)f7_38;
 299218284      Int64 f4f8_38 = f4_2 * (Int64)f8_19;
 299218285      Int64 f4f9_38 = f4 * (Int64)f9_38;
 299218286      Int64 f5f5_38 = f5 * (Int64)f5_38;
 299218287      Int64 f5f6_38 = f5_2 * (Int64)f6_19;
 299218288      Int64 f5f7_76 = f5_2 * (Int64)f7_38;
 299218289      Int64 f5f8_38 = f5_2 * (Int64)f8_19;
 299218290      Int64 f5f9_76 = f5_2 * (Int64)f9_38;
 299218291      Int64 f6f6_19 = f6 * (Int64)f6_19;
 299218292      Int64 f6f7_38 = f6 * (Int64)f7_38;
 299218293      Int64 f6f8_38 = f6_2 * (Int64)f8_19;
 299218294      Int64 f6f9_38 = f6 * (Int64)f9_38;
 299218295      Int64 f7f7_38 = f7 * (Int64)f7_38;
 299218296      Int64 f7f8_38 = f7_2 * (Int64)f8_19;
 299218297      Int64 f7f9_76 = f7_2 * (Int64)f9_38;
 299218298      Int64 f8f8_19 = f8 * (Int64)f8_19;
 299218299      Int64 f8f9_38 = f8 * (Int64)f9_38;
 2992182100      Int64 f9f9_38 = f9 * (Int64)f9_38;
 2992182101      Int64 h0 = f0f0 + f1f9_76 + f2f8_38 + f3f7_76 + f4f6_38 + f5f5_38;
 2992182102      Int64 h1 = f0f1_2 + f2f9_38 + f3f8_38 + f4f7_38 + f5f6_38;
 2992182103      Int64 h2 = f0f2_2 + f1f1_2 + f3f9_76 + f4f8_38 + f5f7_76 + f6f6_19;
 2992182104      Int64 h3 = f0f3_2 + f1f2_2 + f4f9_38 + f5f8_38 + f6f7_38;
 2992182105      Int64 h4 = f0f4_2 + f1f3_4 + f2f2 + f5f9_76 + f6f8_38 + f7f7_38;
 2992182106      Int64 h5 = f0f5_2 + f1f4_2 + f2f3_2 + f6f9_38 + f7f8_38;
 2992182107      Int64 h6 = f0f6_2 + f1f5_4 + f2f4_2 + f3f3_2 + f7f9_76 + f8f8_19;
 2992182108      Int64 h7 = f0f7_2 + f1f6_2 + f2f5_2 + f3f4_2 + f8f9_38;
 2992182109      Int64 h8 = f0f8_2 + f1f7_4 + f2f6_2 + f3f5_4 + f4f4 + f9f9_38;
 2992182110      Int64 h9 = f0f9_2 + f1f8_2 + f2f7_2 + f3f6_2 + f4f5_2;
 111      Int64 carry0;
 112      Int64 carry1;
 113      Int64 carry2;
 114      Int64 carry3;
 115      Int64 carry4;
 116      Int64 carry5;
 117      Int64 carry6;
 118      Int64 carry7;
 119      Int64 carry8;
 120      Int64 carry9;
 121
 8976546122      carry0 = (h0 + (Int64)(1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
 8976546123      carry4 = (h4 + (Int64)(1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
 124
 8976546125      carry1 = (h1 + (Int64)(1 << 24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
 8976546126      carry5 = (h5 + (Int64)(1 << 24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
 127
 8976546128      carry2 = (h2 + (Int64)(1 << 25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
 8976546129      carry6 = (h6 + (Int64)(1 << 25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
 130
 8976546131      carry3 = (h3 + (Int64)(1 << 24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
 8976546132      carry7 = (h7 + (Int64)(1 << 24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
 133
 8976546134      carry4 = (h4 + (Int64)(1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
 8976546135      carry8 = (h8 + (Int64)(1 << 25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
 136
 8976546137      carry9 = (h9 + (Int64)(1 << 24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
 138
 8976546139      carry0 = (h0 + (Int64)(1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
 140
 2992182141      h.x0 = (Int32)h0;
 2992182142      h.x1 = (Int32)h1;
 2992182143      h.x2 = (Int32)h2;
 2992182144      h.x3 = (Int32)h3;
 2992182145      h.x4 = (Int32)h4;
 2992182146      h.x5 = (Int32)h5;
 2992182147      h.x6 = (Int32)h6;
 2992182148      h.x7 = (Int32)h7;
 2992182149      h.x8 = (Int32)h8;
 2992182150      h.x9 = (Int32)h9;
 2992182151    }
 152  }
 153}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_sq2.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7    /*
 8h = 2 * f * f
 9Can overlap h with f.
 10
 11Preconditions:
 12   |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
 13
 14Postconditions:
 15   |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
 16*/
 17
 18    /*
 19    See fe_mul.c for discussion of implementation strategy.
 20    */
 21    internal static void fe_sq2(out FieldElement h, ref FieldElement f)
 78922    {
 78923      Int32 f0 = f.x0;
 78924      Int32 f1 = f.x1;
 78925      Int32 f2 = f.x2;
 78926      Int32 f3 = f.x3;
 78927      Int32 f4 = f.x4;
 78928      Int32 f5 = f.x5;
 78929      Int32 f6 = f.x6;
 78930      Int32 f7 = f.x7;
 78931      Int32 f8 = f.x8;
 78932      Int32 f9 = f.x9;
 78933      Int32 f0_2 = 2 * f0;
 78934      Int32 f1_2 = 2 * f1;
 78935      Int32 f2_2 = 2 * f2;
 78936      Int32 f3_2 = 2 * f3;
 78937      Int32 f4_2 = 2 * f4;
 78938      Int32 f5_2 = 2 * f5;
 78939      Int32 f6_2 = 2 * f6;
 78940      Int32 f7_2 = 2 * f7;
 78941      Int32 f5_38 = 38 * f5; /* 1.959375*2^30 */
 78942      Int32 f6_19 = 19 * f6; /* 1.959375*2^30 */
 78943      Int32 f7_38 = 38 * f7; /* 1.959375*2^30 */
 78944      Int32 f8_19 = 19 * f8; /* 1.959375*2^30 */
 78945      Int32 f9_38 = 38 * f9; /* 1.959375*2^30 */
 78946      Int64 f0f0 = f0 * (Int64)f0;
 78947      Int64 f0f1_2 = f0_2 * (Int64)f1;
 78948      Int64 f0f2_2 = f0_2 * (Int64)f2;
 78949      Int64 f0f3_2 = f0_2 * (Int64)f3;
 78950      Int64 f0f4_2 = f0_2 * (Int64)f4;
 78951      Int64 f0f5_2 = f0_2 * (Int64)f5;
 78952      Int64 f0f6_2 = f0_2 * (Int64)f6;
 78953      Int64 f0f7_2 = f0_2 * (Int64)f7;
 78954      Int64 f0f8_2 = f0_2 * (Int64)f8;
 78955      Int64 f0f9_2 = f0_2 * (Int64)f9;
 78956      Int64 f1f1_2 = f1_2 * (Int64)f1;
 78957      Int64 f1f2_2 = f1_2 * (Int64)f2;
 78958      Int64 f1f3_4 = f1_2 * (Int64)f3_2;
 78959      Int64 f1f4_2 = f1_2 * (Int64)f4;
 78960      Int64 f1f5_4 = f1_2 * (Int64)f5_2;
 78961      Int64 f1f6_2 = f1_2 * (Int64)f6;
 78962      Int64 f1f7_4 = f1_2 * (Int64)f7_2;
 78963      Int64 f1f8_2 = f1_2 * (Int64)f8;
 78964      Int64 f1f9_76 = f1_2 * (Int64)f9_38;
 78965      Int64 f2f2 = f2 * (Int64)f2;
 78966      Int64 f2f3_2 = f2_2 * (Int64)f3;
 78967      Int64 f2f4_2 = f2_2 * (Int64)f4;
 78968      Int64 f2f5_2 = f2_2 * (Int64)f5;
 78969      Int64 f2f6_2 = f2_2 * (Int64)f6;
 78970      Int64 f2f7_2 = f2_2 * (Int64)f7;
 78971      Int64 f2f8_38 = f2_2 * (Int64)f8_19;
 78972      Int64 f2f9_38 = f2 * (Int64)f9_38;
 78973      Int64 f3f3_2 = f3_2 * (Int64)f3;
 78974      Int64 f3f4_2 = f3_2 * (Int64)f4;
 78975      Int64 f3f5_4 = f3_2 * (Int64)f5_2;
 78976      Int64 f3f6_2 = f3_2 * (Int64)f6;
 78977      Int64 f3f7_76 = f3_2 * (Int64)f7_38;
 78978      Int64 f3f8_38 = f3_2 * (Int64)f8_19;
 78979      Int64 f3f9_76 = f3_2 * (Int64)f9_38;
 78980      Int64 f4f4 = f4 * (Int64)f4;
 78981      Int64 f4f5_2 = f4_2 * (Int64)f5;
 78982      Int64 f4f6_38 = f4_2 * (Int64)f6_19;
 78983      Int64 f4f7_38 = f4 * (Int64)f7_38;
 78984      Int64 f4f8_38 = f4_2 * (Int64)f8_19;
 78985      Int64 f4f9_38 = f4 * (Int64)f9_38;
 78986      Int64 f5f5_38 = f5 * (Int64)f5_38;
 78987      Int64 f5f6_38 = f5_2 * (Int64)f6_19;
 78988      Int64 f5f7_76 = f5_2 * (Int64)f7_38;
 78989      Int64 f5f8_38 = f5_2 * (Int64)f8_19;
 78990      Int64 f5f9_76 = f5_2 * (Int64)f9_38;
 78991      Int64 f6f6_19 = f6 * (Int64)f6_19;
 78992      Int64 f6f7_38 = f6 * (Int64)f7_38;
 78993      Int64 f6f8_38 = f6_2 * (Int64)f8_19;
 78994      Int64 f6f9_38 = f6 * (Int64)f9_38;
 78995      Int64 f7f7_38 = f7 * (Int64)f7_38;
 78996      Int64 f7f8_38 = f7_2 * (Int64)f8_19;
 78997      Int64 f7f9_76 = f7_2 * (Int64)f9_38;
 78998      Int64 f8f8_19 = f8 * (Int64)f8_19;
 78999      Int64 f8f9_38 = f8 * (Int64)f9_38;
 789100      Int64 f9f9_38 = f9 * (Int64)f9_38;
 789101      Int64 h0 = f0f0 + f1f9_76 + f2f8_38 + f3f7_76 + f4f6_38 + f5f5_38;
 789102      Int64 h1 = f0f1_2 + f2f9_38 + f3f8_38 + f4f7_38 + f5f6_38;
 789103      Int64 h2 = f0f2_2 + f1f1_2 + f3f9_76 + f4f8_38 + f5f7_76 + f6f6_19;
 789104      Int64 h3 = f0f3_2 + f1f2_2 + f4f9_38 + f5f8_38 + f6f7_38;
 789105      Int64 h4 = f0f4_2 + f1f3_4 + f2f2 + f5f9_76 + f6f8_38 + f7f7_38;
 789106      Int64 h5 = f0f5_2 + f1f4_2 + f2f3_2 + f6f9_38 + f7f8_38;
 789107      Int64 h6 = f0f6_2 + f1f5_4 + f2f4_2 + f3f3_2 + f7f9_76 + f8f8_19;
 789108      Int64 h7 = f0f7_2 + f1f6_2 + f2f5_2 + f3f4_2 + f8f9_38;
 789109      Int64 h8 = f0f8_2 + f1f7_4 + f2f6_2 + f3f5_4 + f4f4 + f9f9_38;
 789110      Int64 h9 = f0f9_2 + f1f8_2 + f2f7_2 + f3f6_2 + f4f5_2;
 111      Int64 carry0;
 112      Int64 carry1;
 113      Int64 carry2;
 114      Int64 carry3;
 115      Int64 carry4;
 116      Int64 carry5;
 117      Int64 carry6;
 118      Int64 carry7;
 119      Int64 carry8;
 120      Int64 carry9;
 121
 789122      h0 += h0;
 789123      h1 += h1;
 789124      h2 += h2;
 789125      h3 += h3;
 789126      h4 += h4;
 789127      h5 += h5;
 789128      h6 += h6;
 789129      h7 += h7;
 789130      h8 += h8;
 789131      h9 += h9;
 132
 2367133      carry0 = (h0 + (Int64)(1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
 2367134      carry4 = (h4 + (Int64)(1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
 135
 2367136      carry1 = (h1 + (Int64)(1 << 24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
 2367137      carry5 = (h5 + (Int64)(1 << 24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
 138
 2367139      carry2 = (h2 + (Int64)(1 << 25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
 2367140      carry6 = (h6 + (Int64)(1 << 25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
 141
 2367142      carry3 = (h3 + (Int64)(1 << 24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
 2367143      carry7 = (h7 + (Int64)(1 << 24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
 144
 2367145      carry4 = (h4 + (Int64)(1 << 25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
 2367146      carry8 = (h8 + (Int64)(1 << 25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
 147
 2367148      carry9 = (h9 + (Int64)(1 << 24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
 149
 2367150      carry0 = (h0 + (Int64)(1 << 25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
 151
 789152      h.x0 = (Int32)h0;
 789153      h.x1 = (Int32)h1;
 789154      h.x2 = (Int32)h2;
 789155      h.x3 = (Int32)h3;
 789156      h.x4 = (Int32)h4;
 789157      h.x5 = (Int32)h5;
 789158      h.x6 = (Int32)h6;
 789159      h.x7 = (Int32)h7;
 789160      h.x8 = (Int32)h8;
 789161      h.x9 = (Int32)h9;
 789162    }
 163  }
 164}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_sub.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5  internal static partial class FieldOperations
 6  {
 7    /*
 8    h = f - g
 9    Can overlap h with f or g.
 10
 11    Preconditions:
 12       |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
 13       |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
 14
 15    Postconditions:
 16       |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
 17    */
 18
 19    internal static void fe_sub(out FieldElement h, ref FieldElement f, ref FieldElement g)
 239562920    {
 239562921      Int32 f0 = f.x0;
 239562922      Int32 f1 = f.x1;
 239562923      Int32 f2 = f.x2;
 239562924      Int32 f3 = f.x3;
 239562925      Int32 f4 = f.x4;
 239562926      Int32 f5 = f.x5;
 239562927      Int32 f6 = f.x6;
 239562928      Int32 f7 = f.x7;
 239562929      Int32 f8 = f.x8;
 239562930      Int32 f9 = f.x9;
 239562931      Int32 g0 = g.x0;
 239562932      Int32 g1 = g.x1;
 239562933      Int32 g2 = g.x2;
 239562934      Int32 g3 = g.x3;
 239562935      Int32 g4 = g.x4;
 239562936      Int32 g5 = g.x5;
 239562937      Int32 g6 = g.x6;
 239562938      Int32 g7 = g.x7;
 239562939      Int32 g8 = g.x8;
 239562940      Int32 g9 = g.x9;
 239562941      Int32 h0 = f0 - g0;
 239562942      Int32 h1 = f1 - g1;
 239562943      Int32 h2 = f2 - g2;
 239562944      Int32 h3 = f3 - g3;
 239562945      Int32 h4 = f4 - g4;
 239562946      Int32 h5 = f5 - g5;
 239562947      Int32 h6 = f6 - g6;
 239562948      Int32 h7 = f7 - g7;
 239562949      Int32 h8 = f8 - g8;
 239562950      Int32 h9 = f9 - g9;
 239562951      h.x0 = h0;
 239562952      h.x1 = h1;
 239562953      h.x2 = h2;
 239562954      h.x3 = h3;
 239562955      h.x4 = h4;
 239562956      h.x5 = h5;
 239562957      h.x6 = h6;
 239562958      h.x7 = h7;
 239562959      h.x8 = h8;
 239562960      h.x9 = h9;
 239562961    }
 62  }
 63}

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Security\Chaos.NaCl\Internal\Ed25519Ref10\fe_tobytes.cs

#LineLine coverage
 1using System;
 2
 3namespace Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10
 4{
 5    internal static partial class FieldOperations
 6    {
 7        /*
 8        Preconditions:
 9          |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
 10
 11        Write p=2^255-19; q=floor(h/p).
 12        Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))).
 13
 14        Proof:
 15          Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4.
 16          Also have |h-2^230 h9|<2^231 so |19 2^(-255)(h-2^230 h9)|<1/4.
 17
 18          Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9).
 19          Then 0<y<1.
 20
 21          Write r=h-pq.
 22          Have 0<=r<=p-1=2^255-20.
 23          Thus 0<=r+19(2^-255)r<r+19(2^-255)2^255<=2^255-1.
 24
 25          Write x=r+19(2^-255)r+y.
 26          Then 0<x<2^255 so floor(2^(-255)x) = 0 so floor(q+2^(-255)x) = q.
 27
 28          Have q+2^(-255)x = 2^(-255)(h + 19 2^(-25) h9 + 2^(-1))
 29          so floor(2^(-255)(h + 19 2^(-25) h9 + 2^(-1))) = q.
 30        */
 31        internal static void fe_tobytes(byte[] s, int offset, ref FieldElement h)
 235532        {
 33            FieldElement hr;
 235534            fe_reduce(out hr, ref h);
 35
 235536            Int32 h0 = hr.x0;
 235537            Int32 h1 = hr.x1;
 235538            Int32 h2 = hr.x2;
 235539            Int32 h3 = hr.x3;
 235540            Int32 h4 = hr.x4;
 235541            Int32 h5 = hr.x5;
 235542            Int32 h6 = hr.x6;
 235543            Int32 h7 = hr.x7;
 235544            Int32 h8 = hr.x8;
 235545            Int32 h9 = hr.x9;
 46
 47            /*
 48            Goal: Output h0+...+2^255 h10-2^255 q, which is between 0 and 2^255-20.
 49            Have h0+...+2^230 h9 between 0 and 2^255-1;
 50            evidently 2^255 h10-2^255 q = 0.
 51            Goal: Output h0+...+2^230 h9.
 52            */
 53            unchecked
 235554            {
 235555                s[offset + 0] = (byte) (h0 >> 0);
 235556                s[offset + 1] = (byte) (h0 >> 8);
 235557                s[offset + 2] = (byte) (h0 >> 16);
 235558                s[offset + 3] = (byte) ((h0 >> 24) | (h1 << 2));
 235559                s[offset + 4] = (byte) (h1 >> 6);
 235560                s[offset + 5] = (byte) (h1 >> 14);
 235561                s[offset + 6] = (byte) ((h1 >> 22) | (h2 << 3));
 235562                s[offset + 7] = (byte) (h2 >> 5);
 235563                s[offset + 8] = (byte) (h2 >> 13);
 235564                s[offset + 9] = (byte) ((h2 >> 21) | (h3 << 5));
 235565                s[offset + 10] = (byte) (h3 >> 3);
 235566                s[offset + 11] = (byte) (h3 >> 11);
 235567                s[offset + 12] = (byte) ((h3 >> 19) | (h4 << 6));
 235568                s[offset + 13] = (byte) (h4 >> 2);
 235569                s[offset + 14] = (byte) (h4 >> 10);
 235570                s[offset + 15] = (byte) (h4 >> 18);
 235571                s[offset + 16] = (byte) (h5 >> 0);
 235572                s[offset + 17] = (byte) (h5 >> 8);
 235573                s[offset + 18] = (byte) (h5 >> 16);
 235574                s[offset + 19] = (byte) ((h5 >> 24) | (h6 << 1));
 235575                s[offset + 20] = (byte) (h6 >> 7);
 235576                s[offset + 21] = (byte) (h6 >> 15);
 235577                s[offset + 22] = (byte) ((h6 >> 23) | (h7 << 3));
 235578                s[offset + 23] = (byte) (h7 >> 5);
 235579                s[offset + 24] = (byte) (h7 >> 13);
 235580                s[offset + 25] = (byte) ((h7 >> 21) | (h8 << 4));
 235581                s[offset + 26] = (byte) (h8 >> 4);
 235582                s[offset + 27] = (byte) (h8 >> 12);
 235583                s[offset + 28] = (byte) ((h8 >> 20) | (h9 << 6));
 235584                s[offset + 29] = (byte) (h9 >> 2);
 235585                s[offset + 30] = (byte) (h9 >> 10);
 235586                s[offset + 31] = (byte) (h9 >> 18);
 235587            }
 235588        }
 89
 90        internal static void fe_reduce(out FieldElement hr, ref FieldElement h)
 237591        {
 237592            Int32 h0 = h.x0;
 237593            Int32 h1 = h.x1;
 237594            Int32 h2 = h.x2;
 237595            Int32 h3 = h.x3;
 237596            Int32 h4 = h.x4;
 237597            Int32 h5 = h.x5;
 237598            Int32 h6 = h.x6;
 237599            Int32 h7 = h.x7;
 2375100            Int32 h8 = h.x8;
 2375101            Int32 h9 = h.x9;
 102            Int32 q;
 103            Int32 carry0;
 104            Int32 carry1;
 105            Int32 carry2;
 106            Int32 carry3;
 107            Int32 carry4;
 108            Int32 carry5;
 109            Int32 carry6;
 110            Int32 carry7;
 111            Int32 carry8;
 112            Int32 carry9;
 113
 2375114            q = (19 * h9 + (((Int32)1) << 24)) >> 25;
 2375115            q = (h0 + q) >> 26;
 2375116            q = (h1 + q) >> 25;
 2375117            q = (h2 + q) >> 26;
 2375118            q = (h3 + q) >> 25;
 2375119            q = (h4 + q) >> 26;
 2375120            q = (h5 + q) >> 25;
 2375121            q = (h6 + q) >> 26;
 2375122            q = (h7 + q) >> 25;
 2375123            q = (h8 + q) >> 26;
 2375124            q = (h9 + q) >> 25;
 125
 126            /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */
 2375127            h0 += 19 * q;
 128            /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */
 129
 7125130            carry0 = h0 >> 26; h1 += carry0; h0 -= carry0 << 26;
 7125131            carry1 = h1 >> 25; h2 += carry1; h1 -= carry1 << 25;
 7125132            carry2 = h2 >> 26; h3 += carry2; h2 -= carry2 << 26;
 7125133            carry3 = h3 >> 25; h4 += carry3; h3 -= carry3 << 25;
 7125134            carry4 = h4 >> 26; h5 += carry4; h4 -= carry4 << 26;
 7125135            carry5 = h5 >> 25; h6 += carry5; h5 -= carry5 << 25;
 7125136            carry6 = h6 >> 26; h7 += carry6; h6 -= carry6 << 26;
 7125137            carry7 = h7 >> 25; h8 += carry7; h7 -= carry7 << 25;
 7125138            carry8 = h8 >> 26; h9 += carry8; h8 -= carry8 << 26;
 4750139            carry9 = h9 >> 25; h9 -= carry9 << 25;
 140            /* h10 = carry9 */
 141
 2375142            hr.x0 = h0;
 2375143            hr.x1 = h1;
 2375144            hr.x2 = h2;
 2375145            hr.x3 = h3;
 2375146            hr.x4 = h4;
 2375147            hr.x5 = h5;
 2375148            hr.x6 = h6;
 2375149            hr.x7 = h7;
 2375150            hr.x8 = h8;
 2375151            hr.x9 = h9;
 2375152        }
 153    }
 154}

Methods/Properties

fe_0(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_1(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_add(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_cmov(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,System.Int32)
fe_cswap(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,System.UInt32)
load_3(System.Byte[],System.Int32)
load_4(System.Byte[],System.Int32)
fe_frombytes(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,System.Byte[],System.Int32)
fe_frombytes2(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,System.Byte[],System.Int32)
fe_invert(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_isnegative(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_isnonzero(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_mul(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_mul121666(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_neg(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_pow22523(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_sq(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_sq2(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_sub(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_tobytes(System.Byte[],System.Int32,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)
fe_reduce(Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&,Renci.SshNet.Security.Chaos.NaCl.Internal.Ed25519Ref10.FieldElement&)