@@ -141,7 +141,7 @@ func (i *Int) Nonzero() bool {
141
141
// Since this method copies the modulus as well,
142
142
// it may be used as an alternative to Init().
143
143
func (i * Int ) Set (a kyber.Scalar ) kyber.Scalar {
144
- ai := a .(* Int ) //nolint:errcheck // V4 may bring better error handling
144
+ ai := a .(* Int ) //nolint:errcheck // Design pattern to emulate generics
145
145
i .V .Set (& ai .V )
146
146
i .M = ai .M
147
147
return i
@@ -194,8 +194,8 @@ func (i *Int) Uint64() uint64 {
194
194
195
195
// Add sets the target to a + b mod M, where M is a's modulus..
196
196
func (i * Int ) Add (a , b kyber.Scalar ) kyber.Scalar {
197
- ai := a .(* Int ) //nolint:errcheck // V4 may bring better error handling
198
- bi := b .(* Int ) //nolint:errcheck // V4 may bring better error handling
197
+ ai := a .(* Int ) //nolint:errcheck // Design pattern to emulate generics
198
+ bi := b .(* Int ) //nolint:errcheck // Design pattern to emulate generics
199
199
i .M = ai .M
200
200
i .V .Add (& ai .V , & bi .V ).Mod (& i .V , i .M )
201
201
return i
@@ -204,16 +204,16 @@ func (i *Int) Add(a, b kyber.Scalar) kyber.Scalar {
204
204
// Sub sets the target to a - b mod M.
205
205
// Target receives a's modulus.
206
206
func (i * Int ) Sub (a , b kyber.Scalar ) kyber.Scalar {
207
- ai := a .(* Int ) //nolint:errcheck // V4 may bring better error handling
208
- bi := b .(* Int ) //nolint:errcheck // V4 may bring better error handling
207
+ ai := a .(* Int ) //nolint:errcheck // Design pattern to emulate generics
208
+ bi := b .(* Int ) //nolint:errcheck // Design pattern to emulate generics
209
209
i .M = ai .M
210
210
i .V .Sub (& ai .V , & bi .V ).Mod (& i .V , i .M )
211
211
return i
212
212
}
213
213
214
214
// Neg sets the target to -a mod M.
215
215
func (i * Int ) Neg (a kyber.Scalar ) kyber.Scalar {
216
- ai := a .(* Int ) //nolint:errcheck // V4 may bring better error handling
216
+ ai := a .(* Int ) //nolint:errcheck // Design pattern to emulate generics
217
217
i .M = ai .M
218
218
if ai .V .Sign () > 0 {
219
219
i .V .Sub (i .M , & ai .V )
@@ -226,17 +226,17 @@ func (i *Int) Neg(a kyber.Scalar) kyber.Scalar {
226
226
// Mul sets the target to a * b mod M.
227
227
// Target receives a's modulus.
228
228
func (i * Int ) Mul (a , b kyber.Scalar ) kyber.Scalar {
229
- ai := a .(* Int ) //nolint:errcheck // V4 may bring better error handling
230
- bi := b .(* Int ) //nolint:errcheck // V4 may bring better error handling
229
+ ai := a .(* Int ) //nolint:errcheck // Design pattern to emulate generics
230
+ bi := b .(* Int ) //nolint:errcheck // Design pattern to emulate generics
231
231
i .M = ai .M
232
232
i .V .Mul (& ai .V , & bi .V ).Mod (& i .V , i .M )
233
233
return i
234
234
}
235
235
236
236
// Div sets the target to a * b^-1 mod M, where b^-1 is the modular inverse of b.
237
237
func (i * Int ) Div (a , b kyber.Scalar ) kyber.Scalar {
238
- ai := a .(* Int ) //nolint:errcheck // V4 may bring better error handling
239
- bi := b .(* Int ) //nolint:errcheck // V4 may bring better error handling
238
+ ai := a .(* Int ) //nolint:errcheck // Design pattern to emulate generics
239
+ bi := b .(* Int ) //nolint:errcheck // Design pattern to emulate generics
240
240
var t big.Int
241
241
i .M = ai .M
242
242
i .V .Mul (& ai .V , t .ModInverse (& bi .V , i .M ))
@@ -246,7 +246,7 @@ func (i *Int) Div(a, b kyber.Scalar) kyber.Scalar {
246
246
247
247
// Inv sets the target to the modular inverse of a with respect to modulus M.
248
248
func (i * Int ) Inv (a kyber.Scalar ) kyber.Scalar {
249
- ai := a .(* Int ) //nolint:errcheck // V4 may bring better error handling
249
+ ai := a .(* Int ) //nolint:errcheck // Design pattern to emulate generics
250
250
i .M = ai .M
251
251
i .V .ModInverse (& a .(* Int ).V , i .M )
252
252
return i
@@ -255,7 +255,7 @@ func (i *Int) Inv(a kyber.Scalar) kyber.Scalar {
255
255
// Exp sets the target to a^e mod M,
256
256
// where e is an arbitrary big.Int exponent (not necessarily 0 <= e < M).
257
257
func (i * Int ) Exp (a kyber.Scalar , e * big.Int ) kyber.Scalar {
258
- ai := a .(* Int ) //nolint:errcheck // V4 may bring better error handling
258
+ ai := a .(* Int ) //nolint:errcheck // Design pattern to emulate generics
259
259
i .M = ai .M
260
260
// to protect against golang/go#22830
261
261
var tmp big.Int
@@ -267,7 +267,7 @@ func (i *Int) Exp(a kyber.Scalar, e *big.Int) kyber.Scalar {
267
267
// Jacobi computes the Jacobi symbol of (a/M), which indicates whether a is
268
268
// zero (0), a positive square in M (1), or a non-square in M (-1).
269
269
func (i * Int ) Jacobi (as kyber.Scalar ) kyber.Scalar {
270
- ai := as .(* Int ) //nolint:errcheck // V4 may bring better error handling
270
+ ai := as .(* Int ) //nolint:errcheck // Design pattern to emulate generics
271
271
i .M = ai .M
272
272
i .V .SetInt64 (int64 (big .Jacobi (& ai .V , i .M )))
273
273
return i
@@ -277,7 +277,7 @@ func (i *Int) Jacobi(as kyber.Scalar) kyber.Scalar {
277
277
// Assumes the modulus M is an odd prime.
278
278
// Returns true on success, false if input a is not a square.
279
279
func (i * Int ) Sqrt (as kyber.Scalar ) bool {
280
- ai := as .(* Int ) //nolint:errcheck // V4 may bring better error handling
280
+ ai := as .(* Int ) //nolint:errcheck // Design pattern to emulate generics
281
281
out := i .V .ModSqrt (& ai .V , ai .M )
282
282
i .M = ai .M
283
283
return out != nil
0 commit comments