| ... | @@ -28,7 +28,7 @@ pub const Edwards25519 = struct { | ... | @@ -28,7 +28,7 @@ pub const Edwards25519 = struct { |
| 28 | const vxx = x.sq().mul(v); | 28 | const vxx = x.sq().mul(v); |
| 29 | const has_m_root = vxx.sub(u).isZero(); | 29 | const has_m_root = vxx.sub(u).isZero(); |
| 30 | const has_p_root = vxx.add(u).isZero(); | 30 | const has_p_root = vxx.add(u).isZero(); |
| 31 | if ((@boolToInt(has_m_root) | @boolToInt(has_p_root)) == 0) { | 31 | if ((@boolToInt(has_m_root) | @boolToInt(has_p_root)) == 0) { // best-effort to avoid two conditional branches |
| 32 | return error.InvalidEncoding; | 32 | return error.InvalidEncoding; |
| 33 | } | 33 | } |
| 34 | x.cMov(x.mul(Fe.sqrtm1), 1 - @boolToInt(has_m_root)); | 34 | x.cMov(x.mul(Fe.sqrtm1), 1 - @boolToInt(has_m_root)); |
| ... | @@ -130,7 +130,7 @@ pub const Edwards25519 = struct { | ... | @@ -130,7 +130,7 @@ pub const Edwards25519 = struct { |
| 130 | var pos: usize = 252; | 130 | var pos: usize = 252; |
| 131 | while (true) : (pos -= 4) { | 131 | while (true) : (pos -= 4) { |
| 132 | q = q.dbl().dbl().dbl().dbl(); | 132 | q = q.dbl().dbl().dbl().dbl(); |
| 133 | const b = (s[pos / 8] >> @intCast(u3, pos & 7)) & 0xf; | 133 | const b = (s[pos >> 3] >> @truncate(u3, pos)) & 0xf; |
| 134 | q = q.add(pcSelect(pc, b)); | 134 | q = q.add(pcSelect(pc, b)); |
| 135 | if (pos == 0) break; | 135 | if (pos == 0) break; |
| 136 | } | 136 | } |