@@ -321,7 +321,46 @@ public void TestGenerateRandomElement()
321
321
}
322
322
323
323
[ Test ]
324
- public void TestIsElement ( )
324
+ public void TestIsPotentialElement ( )
325
+ {
326
+ var order = BigPrime . CreateWithoutChecks ( 11 ) ;
327
+ int element = 7 ;
328
+
329
+ var generatorStub = 1 ;
330
+ var cofactor = new BigInteger ( 2 ) ;
331
+ var neutralElement = 0 ;
332
+ var elementBitLength = 8 ;
333
+
334
+ var algebraMock = new Mock < CryptoGroupAlgebra < int > > ( generatorStub , order , cofactor , neutralElement , elementBitLength ) { CallBase = true } ;
335
+ algebraMock . Protected ( ) . As < ICryptoGroupAlgebraProtectedMembers > ( )
336
+ . Setup ( alg => alg . IsElementDerived ( It . IsAny < int > ( ) ) )
337
+ . Returns ( true ) ;
338
+
339
+ Assert . IsTrue ( algebraMock . Object . IsPotentialElement ( element ) ) ;
340
+ }
341
+
342
+
343
+ [ Test ]
344
+ public void TestIsPotentialElementFalseIfDerivedIsFalse ( )
345
+ {
346
+ var order = BigPrime . CreateWithoutChecks ( 11 ) ;
347
+ int element = 7 ;
348
+
349
+ var generatorStub = 1 ;
350
+ var cofactor = new BigInteger ( 2 ) ;
351
+ var neutralElement = 0 ;
352
+ var elementBitLength = 8 ;
353
+
354
+ var algebraMock = new Mock < CryptoGroupAlgebra < int > > ( generatorStub , order , cofactor , neutralElement , elementBitLength ) { CallBase = true } ;
355
+ algebraMock . Protected ( ) . As < ICryptoGroupAlgebraProtectedMembers > ( )
356
+ . Setup ( alg => alg . IsElementDerived ( It . IsAny < int > ( ) ) )
357
+ . Returns ( false ) ;
358
+
359
+ Assert . IsFalse ( algebraMock . Object . IsPotentialElement ( element ) ) ;
360
+ }
361
+
362
+ [ Test ]
363
+ public void TestIsSafeElement ( )
325
364
{
326
365
var order = BigPrime . CreateWithoutChecks ( 11 ) ;
327
366
int element = 7 ;
@@ -343,11 +382,12 @@ public void TestIsElement()
343
382
. Returns ( neutralElement ) ;
344
383
345
384
346
- Assert . IsTrue ( algebraMock . Object . IsElement ( element ) ) ;
385
+ Assert . IsTrue ( algebraMock . Object . IsSafeElement ( element ) ) ;
347
386
}
348
387
388
+
349
389
[ Test ]
350
- public void TestIsElementFalseForUnsafeSubgroup ( )
390
+ public void TestIsSafeElementFalseIfDerivedIsFalse ( )
351
391
{
352
392
var order = BigPrime . CreateWithoutChecks ( 11 ) ;
353
393
int element = 7 ;
@@ -360,19 +400,17 @@ public void TestIsElementFalseForUnsafeSubgroup()
360
400
var algebraMock = new Mock < CryptoGroupAlgebra < int > > ( generatorStub , order , cofactor , neutralElement , elementBitLength ) { CallBase = true } ;
361
401
algebraMock . Protected ( ) . As < ICryptoGroupAlgebraProtectedMembers > ( )
362
402
. Setup ( alg => alg . IsElementDerived ( It . IsAny < int > ( ) ) )
363
- . Returns ( true ) ;
364
-
365
- // an element is in an unsafe subgroup if it results in neutral element when multiplied by cofactor
366
- algebraMock . Protected ( ) . As < ICryptoGroupAlgebraProtectedMembers > ( )
367
- . Setup ( alg => alg . MultiplyScalarUnchecked ( It . IsAny < int > ( ) , It . Is < BigInteger > ( x => x . Equals ( cofactor ) ) , It . IsAny < int > ( ) ) )
368
- . Returns ( neutralElement ) ;
403
+ . Returns ( false ) ;
404
+ // algebraMock.Protected().As<ICryptoGroupAlgebraProtectedMembers>()
405
+ // .Setup(alg => alg.MultiplyScalarUnchecked(It.IsAny<int>(), It.IsAny<BigInteger>(), It.IsAny<int>()))
406
+ // .Returns(1);
369
407
370
408
371
- Assert . IsFalse ( algebraMock . Object . IsElement ( element ) ) ;
409
+ Assert . IsFalse ( algebraMock . Object . IsSafeElement ( element ) ) ;
372
410
}
373
411
374
412
[ Test ]
375
- public void TestIsElementFalseIfDerivedIsFalse ( )
413
+ public void TestIsSafeElementFalseForUnsafeSubgroup ( )
376
414
{
377
415
var order = BigPrime . CreateWithoutChecks ( 11 ) ;
378
416
int element = 7 ;
@@ -385,14 +423,17 @@ public void TestIsElementFalseIfDerivedIsFalse()
385
423
var algebraMock = new Mock < CryptoGroupAlgebra < int > > ( generatorStub , order , cofactor , neutralElement , elementBitLength ) { CallBase = true } ;
386
424
algebraMock . Protected ( ) . As < ICryptoGroupAlgebraProtectedMembers > ( )
387
425
. Setup ( alg => alg . IsElementDerived ( It . IsAny < int > ( ) ) )
388
- . Returns ( false ) ;
426
+ . Returns ( true ) ;
427
+
428
+ // an element is in an unsafe subgroup if it results in neutral element when multiplied by cofactor
389
429
algebraMock . Protected ( ) . As < ICryptoGroupAlgebraProtectedMembers > ( )
390
- . Setup ( alg => alg . MultiplyScalarUnchecked ( It . IsAny < int > ( ) , It . IsAny < BigInteger > ( ) , It . IsAny < int > ( ) ) )
391
- . Returns ( 1 ) ;
430
+ . Setup ( alg => alg . MultiplyScalarUnchecked ( It . IsAny < int > ( ) , It . Is < BigInteger > ( x => x . Equals ( cofactor ) ) , It . IsAny < int > ( ) ) )
431
+ . Returns ( neutralElement ) ;
392
432
393
433
394
- Assert . IsFalse ( algebraMock . Object . IsElement ( element ) ) ;
434
+ Assert . IsFalse ( algebraMock . Object . IsSafeElement ( element ) ) ;
395
435
}
396
436
437
+
397
438
}
398
439
}
0 commit comments