@@ -41,7 +41,7 @@ using namespace std;
41
41
Nan::ThrowTypeError (" Argument " #I " must be a uint32" ); \
42
42
return ; \
43
43
} \
44
- uint32_t VAR = info[I]-> ToUint32 ()->Value ();
44
+ uint32_t VAR = Nan::To< int32_t >( info[I]).FromJust ();
45
45
46
46
#define REQ_INT64_ARG (I, VAR ) \
47
47
if (info.Length() <= (I) || !info[I]->IsNumber ()) { \
@@ -66,8 +66,8 @@ using namespace std;
66
66
67
67
#define WRAP_RESULT (RES, VAR ) \
68
68
Local<Value> arg[1 ] = { Nan::New<External>(static_cast <BigNum*>(RES)) }; \
69
- Local<Object> VAR = Nan::New<FunctionTemplate>(constructor_template)-> \
70
- GetFunction ()->NewInstance( 1 , arg);
69
+ Local<Object> VAR = Nan::NewInstance(Nan:: New<FunctionTemplate>(constructor_template)->GetFunction (), \
70
+ 1, arg).ToLocalChecked( );
71
71
72
72
class AutoBN_CTX
73
73
{
@@ -140,9 +140,9 @@ int BN_jacobi_priv(const BIGNUM *A,const BIGNUM *N,int *jacobi,
140
140
BN_copy (a1,A);
141
141
BN_copy (n1,N);
142
142
startjacobistep1:
143
- if BN_is_zero (a1) /* step 1 */
143
+ if ( BN_is_zero (a1) ) /* step 1 */
144
144
goto endBN_jacobi; /* *jacobi = 1; */
145
- if BN_is_one (a1) /* step 2 */
145
+ if ( BN_is_one (a1) ) /* step 2 */
146
146
goto endBN_jacobi; /* *jacobi = 1; */
147
147
for (e=0 ;;e++) /* step 3 */
148
148
if (BN_is_odd (a1))
@@ -180,14 +180,14 @@ int BN_jacobi_priv(const BIGNUM *A,const BIGNUM *N,int *jacobi,
180
180
class BigNum : public Nan ::ObjectWrap {
181
181
public:
182
182
static void Initialize (Local<Object> target);
183
- BIGNUM bignum_;
183
+ BIGNUM* bignum_;
184
184
static Nan::Persistent<Function> js_conditioner;
185
185
static void SetJSConditioner (Local<Function> constructor);
186
186
187
187
protected:
188
188
static Nan::Persistent<FunctionTemplate> constructor_template;
189
189
190
- BigNum (const String::Utf8Value & str, uint64_t base);
190
+ BigNum (const Nan::Utf8String & str, uint64_t base);
191
191
BigNum (uint64_t num);
192
192
BigNum (int64_t num);
193
193
BigNum (BIGNUM *num);
@@ -291,20 +291,19 @@ void BigNum::Initialize(v8::Local<v8::Object> target) {
291
291
target->Set (Nan::New (" BigNum" ).ToLocalChecked (), tmpl->GetFunction ());
292
292
}
293
293
294
- BigNum::BigNum (const v8::String::Utf8Value& str, uint64_t base) : Nan::ObjectWrap ()
294
+ BigNum::BigNum (const Nan::Utf8String& str, uint64_t base) : Nan::ObjectWrap (),
295
+ bignum_(BN_new())
295
296
{
296
- BN_init (&bignum_);
297
- BN_zero (&bignum_);
297
+ BN_zero (bignum_);
298
298
299
- BIGNUM *res = & bignum_;
299
+ BIGNUM *res = bignum_;
300
300
301
301
const char *cstr = *str;
302
302
switch (base) {
303
303
case 2 :
304
- BN_init (&bignum_);
305
304
for (int i = 0 , l = str.length (); i < l; i++) {
306
305
if (cstr[l-i-1 ] != ' 0' ) {
307
- BN_set_bit (& bignum_, i);
306
+ BN_set_bit (bignum_, i);
308
307
}
309
308
}
310
309
break ;
@@ -320,57 +319,56 @@ BigNum::BigNum(const v8::String::Utf8Value& str, uint64_t base) : Nan::ObjectWra
320
319
}
321
320
}
322
321
323
- BigNum::BigNum (uint64_t num) : Nan::ObjectWrap ()
322
+ BigNum::BigNum (uint64_t num) : Nan::ObjectWrap (),
323
+ bignum_(BN_new())
324
324
{
325
- BN_init (&bignum_);
326
-
327
325
if (sizeof (BN_ULONG) >= 8 || num <= 0xFFFFFFFFL ) {
328
- BN_set_word (& bignum_, num);
326
+ BN_set_word (bignum_, num);
329
327
} else {
330
- BN_set_word (& bignum_, num >> 32 );
331
- BN_lshift (& bignum_, & bignum_, 32 );
332
- BN_add_word (& bignum_, num & 0xFFFFFFFFL );
328
+ BN_set_word (bignum_, num >> 32 );
329
+ BN_lshift (bignum_, bignum_, 32 );
330
+ BN_add_word (bignum_, num & 0xFFFFFFFFL );
333
331
}
334
332
}
335
333
336
- BigNum::BigNum (int64_t num) : Nan::ObjectWrap ()
334
+ BigNum::BigNum (int64_t num) : Nan::ObjectWrap (),
335
+ bignum_(BN_new())
337
336
{
338
337
bool neg = (num < 0 );
339
- BN_init (&bignum_);
340
338
341
339
if (neg) {
342
340
num = -num;
343
341
}
344
342
if (num < 0 ) { // num is -2^63
345
- BN_one (& bignum_);
346
- BN_lshift (& bignum_, & bignum_, 63 );
343
+ BN_one (bignum_);
344
+ BN_lshift (bignum_, bignum_, 63 );
347
345
} else if (sizeof (BN_ULONG) >= 8 || num <= 0xFFFFFFFFL ) {
348
- BN_set_word (& bignum_, num);
346
+ BN_set_word (bignum_, num);
349
347
} else {
350
- BN_set_word (& bignum_, num >> 32 );
351
- BN_lshift (& bignum_, & bignum_, 32 );
352
- BN_add_word (& bignum_, num & 0xFFFFFFFFL );
348
+ BN_set_word (bignum_, num >> 32 );
349
+ BN_lshift (bignum_, bignum_, 32 );
350
+ BN_add_word (bignum_, num & 0xFFFFFFFFL );
353
351
}
354
352
if (neg) {
355
- BN_set_negative (& bignum_, 1 );
353
+ BN_set_negative (bignum_, 1 );
356
354
}
357
355
}
358
356
359
- BigNum::BigNum (BIGNUM *num) : Nan::ObjectWrap ()
357
+ BigNum::BigNum (BIGNUM *num) : Nan::ObjectWrap (),
358
+ bignum_(BN_new())
360
359
{
361
- BN_init (&bignum_);
362
- BN_copy (&bignum_, num);
360
+ BN_copy (bignum_, num);
363
361
}
364
362
365
- BigNum::BigNum () : Nan::ObjectWrap ()
363
+ BigNum::BigNum () : Nan::ObjectWrap (),
364
+ bignum_(BN_new())
366
365
{
367
- BN_init (&bignum_);
368
- BN_zero (&bignum_);
366
+ BN_zero (bignum_);
369
367
}
370
368
371
369
BigNum::~BigNum ()
372
370
{
373
- BN_clear_free (& bignum_);
371
+ BN_clear_free (bignum_);
374
372
}
375
373
376
374
NAN_METHOD (BigNum::New)
@@ -381,8 +379,16 @@ NAN_METHOD(BigNum::New)
381
379
for (int i = 0 ; i < len; i++) {
382
380
newArgs[i] = info[i];
383
381
}
384
- Local<Value> newInst = Nan::New<FunctionTemplate>(constructor_template)->
385
- GetFunction ()->NewInstance (len, newArgs);
382
+
383
+ Nan::TryCatch tryCatch;
384
+ Nan::MaybeLocal<Object> newInstMaybeLocal = Nan::NewInstance (
385
+ Nan::New<FunctionTemplate>(constructor_template)->GetFunction (), len, newArgs);
386
+ if (tryCatch.HasCaught ()) {
387
+ tryCatch.ReThrow ();
388
+ return ;
389
+ }
390
+
391
+ Local<Value> newInst = newInstMaybeLocal.ToLocalChecked ();
386
392
delete[] newArgs;
387
393
info.GetReturnValue ().Set (newInst);
388
394
return ;
@@ -409,8 +415,8 @@ NAN_METHOD(BigNum::New)
409
415
return ;
410
416
}
411
417
412
- String::Utf8Value str (obj->ToObject ()->Get (Nan::New (" num" ).ToLocalChecked ())->ToString ());
413
- base = obj->ToObject ()->Get (Nan::New (" base" ).ToLocalChecked ())-> ToNumber ()-> Value ();
418
+ Nan::Utf8String str (obj->ToObject ()->Get (Nan::New (" num" ).ToLocalChecked ())->ToString ());
419
+ base = Nan::To< int64_t >( obj->ToObject ()->Get (Nan::New (" base" ).ToLocalChecked ())). FromJust ();
414
420
415
421
bignum = new BigNum (str, base);
416
422
}
@@ -433,10 +439,10 @@ NAN_METHOD(BigNum::ToString)
433
439
char *to = NULL ;
434
440
switch (base) {
435
441
case 10 :
436
- to = BN_bn2dec (& bignum->bignum_ );
442
+ to = BN_bn2dec (bignum->bignum_ );
437
443
break ;
438
444
case 16 :
439
- to = BN_bn2hex (& bignum->bignum_ );
445
+ to = BN_bn2hex (bignum->bignum_ );
440
446
break ;
441
447
default :
442
448
Nan::ThrowError (" Invalid base, only 10 and 16 are supported" );
@@ -456,7 +462,7 @@ NAN_METHOD(BigNum::Badd)
456
462
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
457
463
BigNum *res = new BigNum ();
458
464
459
- BN_add (& res->bignum_ , & bignum->bignum_ , & bn->bignum_ );
465
+ BN_add (res->bignum_ , bignum->bignum_ , bn->bignum_ );
460
466
461
467
WRAP_RESULT (res, result);
462
468
@@ -469,7 +475,7 @@ NAN_METHOD(BigNum::Bsub)
469
475
470
476
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
471
477
BigNum *res = new BigNum ();
472
- BN_sub (& res->bignum_ , & bignum->bignum_ , & bn->bignum_ );
478
+ BN_sub (res->bignum_ , bignum->bignum_ , bn->bignum_ );
473
479
474
480
WRAP_RESULT (res, result);
475
481
@@ -483,7 +489,7 @@ NAN_METHOD(BigNum::Bmul)
483
489
484
490
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
485
491
BigNum *res = new BigNum ();
486
- BN_mul (& res->bignum_ , & bignum->bignum_ , & bn->bignum_ , ctx);
492
+ BN_mul (res->bignum_ , bignum->bignum_ , bn->bignum_ , ctx);
487
493
488
494
WRAP_RESULT (res, result);
489
495
@@ -497,7 +503,7 @@ NAN_METHOD(BigNum::Bdiv)
497
503
498
504
BigNum *bi = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
499
505
BigNum *res = new BigNum ();
500
- BN_div (& res->bignum_ , NULL , & bignum->bignum_ , & bi->bignum_ , ctx);
506
+ BN_div (res->bignum_ , NULL , bignum->bignum_ , bi->bignum_ , ctx);
501
507
502
508
WRAP_RESULT (res, result);
503
509
@@ -509,12 +515,12 @@ NAN_METHOD(BigNum::Uadd)
509
515
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
510
516
511
517
REQ_UINT64_ARG (0 , x);
512
- BigNum *res = new BigNum (& bignum->bignum_ );
518
+ BigNum *res = new BigNum (bignum->bignum_ );
513
519
if (sizeof (BN_ULONG) >= 8 || x <= 0xFFFFFFFFL ) {
514
- BN_add_word (& res->bignum_ , x);
520
+ BN_add_word (res->bignum_ , x);
515
521
} else {
516
522
BigNum *bn = new BigNum (x);
517
- BN_add (& res->bignum_ , & bignum->bignum_ , & bn->bignum_ );
523
+ BN_add (res->bignum_ , bignum->bignum_ , bn->bignum_ );
518
524
}
519
525
520
526
WRAP_RESULT (res, result);
@@ -527,12 +533,12 @@ NAN_METHOD(BigNum::Usub)
527
533
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
528
534
529
535
REQ_UINT64_ARG (0 , x);
530
- BigNum *res = new BigNum (& bignum->bignum_ );
536
+ BigNum *res = new BigNum (bignum->bignum_ );
531
537
if (sizeof (BN_ULONG) >= 8 || x <= 0xFFFFFFFFL ) {
532
- BN_sub_word (& res->bignum_ , x);
538
+ BN_sub_word (res->bignum_ , x);
533
539
} else {
534
540
BigNum *bn = new BigNum (x);
535
- BN_sub (& res->bignum_ , & bignum->bignum_ , & bn->bignum_ );
541
+ BN_sub (res->bignum_ , bignum->bignum_ , bn->bignum_ );
536
542
}
537
543
538
544
WRAP_RESULT (res, result);
@@ -545,13 +551,13 @@ NAN_METHOD(BigNum::Umul)
545
551
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
546
552
547
553
REQ_UINT64_ARG (0 , x);
548
- BigNum *res = new BigNum (& bignum->bignum_ );
554
+ BigNum *res = new BigNum (bignum->bignum_ );
549
555
if (sizeof (BN_ULONG) >= 8 || x <= 0xFFFFFFFFL ) {
550
- BN_mul_word (& res->bignum_ , x);
556
+ BN_mul_word (res->bignum_ , x);
551
557
} else {
552
558
AutoBN_CTX ctx;
553
559
BigNum *bn = new BigNum (x);
554
- BN_mul (& res->bignum_ , & bignum->bignum_ , & bn->bignum_ , ctx);
560
+ BN_mul (res->bignum_ , bignum->bignum_ , bn->bignum_ , ctx);
555
561
}
556
562
557
563
WRAP_RESULT (res, result);
@@ -564,13 +570,13 @@ NAN_METHOD(BigNum::Udiv)
564
570
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
565
571
566
572
REQ_UINT64_ARG (0 , x);
567
- BigNum *res = new BigNum (& bignum->bignum_ );
573
+ BigNum *res = new BigNum (bignum->bignum_ );
568
574
if (sizeof (BN_ULONG) >= 8 || x <= 0xFFFFFFFFL ) {
569
- BN_div_word (& res->bignum_ , x);
575
+ BN_div_word (res->bignum_ , x);
570
576
} else {
571
577
AutoBN_CTX ctx;
572
578
BigNum *bn = new BigNum (x);
573
- BN_div (& res->bignum_ , NULL , & bignum->bignum_ , & bn->bignum_ , ctx);
579
+ BN_div (res->bignum_ , NULL , bignum->bignum_ , bn->bignum_ , ctx);
574
580
}
575
581
576
582
WRAP_RESULT (res, result);
@@ -584,7 +590,7 @@ NAN_METHOD(BigNum::Umul_2exp)
584
590
585
591
REQ_UINT32_ARG (0 , x);
586
592
BigNum *res = new BigNum ();
587
- BN_lshift (& res->bignum_ , & bignum->bignum_ , x);
593
+ BN_lshift (res->bignum_ , bignum->bignum_ , x);
588
594
589
595
WRAP_RESULT (res, result);
590
596
@@ -597,7 +603,7 @@ NAN_METHOD(BigNum::Udiv_2exp)
597
603
598
604
REQ_UINT32_ARG (0 , x);
599
605
BigNum *res = new BigNum ();
600
- BN_rshift (& res->bignum_ , & bignum->bignum_ , x);
606
+ BN_rshift (res->bignum_ , bignum->bignum_ , x);
601
607
602
608
WRAP_RESULT (res, result);
603
609
@@ -608,8 +614,8 @@ NAN_METHOD(BigNum::Babs)
608
614
{
609
615
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
610
616
611
- BigNum *res = new BigNum (& bignum->bignum_ );
612
- BN_set_negative (& res->bignum_ , 0 );
617
+ BigNum *res = new BigNum (bignum->bignum_ );
618
+ BN_set_negative (res->bignum_ , 0 );
613
619
614
620
WRAP_RESULT (res, result);
615
621
@@ -620,8 +626,8 @@ NAN_METHOD(BigNum::Bneg)
620
626
{
621
627
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
622
628
623
- BigNum *res = new BigNum (& bignum->bignum_ );
624
- BN_set_negative (& res->bignum_ , !BN_is_negative (& res->bignum_ ));
629
+ BigNum *res = new BigNum (bignum->bignum_ );
630
+ BN_set_negative (res->bignum_ , !BN_is_negative (res->bignum_ ));
625
631
626
632
WRAP_RESULT (res, result);
627
633
@@ -635,7 +641,7 @@ NAN_METHOD(BigNum::Bmod)
635
641
636
642
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
637
643
BigNum *res = new BigNum ();
638
- BN_div (NULL , & res->bignum_ , & bignum->bignum_ , & bn->bignum_ , ctx);
644
+ BN_div (NULL , res->bignum_ , bignum->bignum_ , bn->bignum_ , ctx);
639
645
640
646
WRAP_RESULT (res, result);
641
647
@@ -649,11 +655,11 @@ NAN_METHOD(BigNum::Umod)
649
655
REQ_UINT64_ARG (0 , x);
650
656
BigNum *res = new BigNum ();
651
657
if (sizeof (BN_ULONG) >= 8 || x <= 0xFFFFFFFFL ) {
652
- BN_set_word (& res->bignum_ , BN_mod_word (& bignum->bignum_ , x));
658
+ BN_set_word (res->bignum_ , BN_mod_word (bignum->bignum_ , x));
653
659
} else {
654
660
AutoBN_CTX ctx;
655
661
BigNum *bn = new BigNum (x);
656
- BN_div (NULL , & res->bignum_ , & bignum->bignum_ , & bn->bignum_ , ctx);
662
+ BN_div (NULL , res->bignum_ , bignum->bignum_ , bn->bignum_ , ctx);
657
663
}
658
664
659
665
WRAP_RESULT (res, result);
@@ -669,7 +675,7 @@ NAN_METHOD(BigNum::Bpowm)
669
675
BigNum *bn1 = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
670
676
BigNum *bn2 = Nan::ObjectWrap::Unwrap<BigNum>(info[1 ]->ToObject ());
671
677
BigNum *res = new BigNum ();
672
- BN_mod_exp (& res->bignum_ , & bignum->bignum_ , & bn1->bignum_ , & bn2->bignum_ , ctx);
678
+ BN_mod_exp (res->bignum_ , bignum->bignum_ , bn1->bignum_ , bn2->bignum_ , ctx);
673
679
674
680
WRAP_RESULT (res, result);
675
681
@@ -686,7 +692,7 @@ NAN_METHOD(BigNum::Upowm)
686
692
BigNum *exp = new BigNum (x);
687
693
688
694
BigNum *res = new BigNum ();
689
- BN_mod_exp (& res->bignum_ , & bignum->bignum_ , & exp ->bignum_ , & bn->bignum_ , ctx);
695
+ BN_mod_exp (res->bignum_ , bignum->bignum_ , exp ->bignum_ , bn->bignum_ , ctx);
690
696
691
697
WRAP_RESULT (res, result);
692
698
@@ -702,7 +708,7 @@ NAN_METHOD(BigNum::Upow)
702
708
BigNum *exp = new BigNum (x);
703
709
704
710
BigNum *res = new BigNum ();
705
- BN_exp (& res->bignum_ , & bignum->bignum_ , & exp ->bignum_ , ctx);
711
+ BN_exp (res->bignum_ , bignum->bignum_ , exp ->bignum_ , ctx);
706
712
707
713
WRAP_RESULT (res, result);
708
714
@@ -715,7 +721,7 @@ NAN_METHOD(BigNum::Brand0)
715
721
716
722
BigNum *res = new BigNum ();
717
723
718
- BN_rand_range (& res->bignum_ , & bignum->bignum_ );
724
+ BN_rand_range (res->bignum_ , bignum->bignum_ );
719
725
720
726
WRAP_RESULT (res, result);
721
727
@@ -729,7 +735,7 @@ NAN_METHOD(BigNum::Uprime0)
729
735
730
736
BigNum *res = new BigNum ();
731
737
732
- BN_generate_prime_ex (& res->bignum_ , x, safe, NULL , NULL , NULL );
738
+ BN_generate_prime_ex (res->bignum_ , x, safe, NULL , NULL , NULL );
733
739
734
740
WRAP_RESULT (res, result);
735
741
@@ -743,7 +749,7 @@ NAN_METHOD(BigNum::Probprime)
743
749
744
750
REQ_UINT32_ARG (0 , reps);
745
751
746
- info.GetReturnValue ().Set (Nan::New<Number>(BN_is_prime_ex (& bignum->bignum_ , reps, ctx, NULL )));
752
+ info.GetReturnValue ().Set (Nan::New<Number>(BN_is_prime_ex (bignum->bignum_ , reps, ctx, NULL )));
747
753
}
748
754
749
755
NAN_METHOD (BigNum::IsBitSet)
@@ -752,7 +758,7 @@ NAN_METHOD(BigNum::IsBitSet)
752
758
753
759
REQ_UINT32_ARG (0 , n);
754
760
755
- info.GetReturnValue ().Set (Nan::New<Number>(BN_is_bit_set (& bignum->bignum_ , n)));
761
+ info.GetReturnValue ().Set (Nan::New<Number>(BN_is_bit_set (bignum->bignum_ , n)));
756
762
}
757
763
758
764
NAN_METHOD (BigNum::Bcompare)
@@ -761,7 +767,7 @@ NAN_METHOD(BigNum::Bcompare)
761
767
762
768
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
763
769
764
- info.GetReturnValue ().Set (Nan::New<Number>(BN_cmp (& bignum->bignum_ , & bn->bignum_ )));
770
+ info.GetReturnValue ().Set (Nan::New<Number>(BN_cmp (bignum->bignum_ , bn->bignum_ )));
765
771
}
766
772
767
773
NAN_METHOD (BigNum::Scompare)
@@ -770,7 +776,7 @@ NAN_METHOD(BigNum::Scompare)
770
776
771
777
REQ_INT64_ARG (0 , x);
772
778
BigNum *bn = new BigNum (x);
773
- int res = BN_cmp (& bignum->bignum_ , & bn->bignum_ );
779
+ int res = BN_cmp (bignum->bignum_ , bn->bignum_ );
774
780
775
781
info.GetReturnValue ().Set (Nan::New<Number>(res));
776
782
}
@@ -782,14 +788,13 @@ NAN_METHOD(BigNum::Ucompare)
782
788
REQ_UINT64_ARG (0 , x);
783
789
int res;
784
790
if (sizeof (BN_ULONG) >= 8 || x <= 0xFFFFFFFFL ) {
785
- BIGNUM bn;
786
- BN_init (&bn);
787
- BN_set_word (&bn, x);
788
- res = BN_cmp (&bignum->bignum_ , &bn);
789
- BN_clear_free (&bn);
791
+ BIGNUM* bn = BN_new ();
792
+ BN_set_word (bn, x);
793
+ res = BN_cmp (bignum->bignum_ , bn);
794
+ BN_clear_free (bn);
790
795
} else {
791
796
BigNum *bn = new BigNum (x);
792
- res = BN_cmp (& bignum->bignum_ , & bn->bignum_ );
797
+ res = BN_cmp (bignum->bignum_ , bn->bignum_ );
793
798
}
794
799
795
800
info.GetReturnValue ().Set (Nan::New<Number>(res));
@@ -892,17 +897,17 @@ BigNum::Bop(Nan::NAN_METHOD_ARGS_TYPE info, int op)
892
897
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
893
898
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
894
899
895
- bool bignumNegative = BN_is_negative (& bignum->bignum_ );
896
- bool bnNegative = BN_is_negative (& bn->bignum_ );
900
+ bool bignumNegative = BN_is_negative (bignum->bignum_ );
901
+ bool bnNegative = BN_is_negative (bn->bignum_ );
897
902
898
903
BigNum *res = new BigNum ();
899
904
900
905
// Modified from https://github.com/Worlize/WebSocket-Node/blob/master/src/xor.cpp
901
906
// Portions Copyright (c) Agora S.A.
902
907
// Licensed under the MIT License.
903
908
904
- int payloadSize = BN_bn2mpi (& bignum->bignum_ , NULL );
905
- int maskSize = BN_bn2mpi (& bn->bignum_ , NULL );
909
+ int payloadSize = BN_bn2mpi (bignum->bignum_ , NULL );
910
+ int maskSize = BN_bn2mpi (bn->bignum_ , NULL );
906
911
907
912
uint32_t size = max (payloadSize, maskSize);
908
913
int offset = abs (payloadSize - maskSize);
@@ -919,8 +924,8 @@ BigNum::Bop(Nan::NAN_METHOD_ARGS_TYPE info, int op)
919
924
uint8_t * payload = (uint8_t *) calloc (size, sizeof (char ));
920
925
uint8_t * mask = (uint8_t *) calloc (size, sizeof (char ));
921
926
922
- BN_bn2mpi (& bignum->bignum_ , payload + payloadOffset);
923
- BN_bn2mpi (& bn->bignum_ , mask + maskOffset);
927
+ BN_bn2mpi (bignum->bignum_ , payload + payloadOffset);
928
+ BN_bn2mpi (bn->bignum_ , mask + maskOffset);
924
929
925
930
if (payloadSize < maskSize) {
926
931
shiftSizeAndMSB (payload, mask, payloadOffset);
@@ -989,7 +994,7 @@ BigNum::Bop(Nan::NAN_METHOD_ARGS_TYPE info, int op)
989
994
twos_complement2mpi (payload + BN_PAYLOAD_OFFSET, size - BN_PAYLOAD_OFFSET);
990
995
}
991
996
992
- BN_mpi2bn (payload, size, & res->bignum_ );
997
+ BN_mpi2bn (payload, size, res->bignum_ );
993
998
994
999
WRAP_RESULT (res, result);
995
1000
@@ -1021,7 +1026,7 @@ NAN_METHOD(BigNum::Binvertm)
1021
1026
1022
1027
BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
1023
1028
BigNum *res = new BigNum ();
1024
- BN_mod_inverse (& res->bignum_ , & bignum->bignum_ , & bn->bignum_ , ctx);
1029
+ BN_mod_inverse (res->bignum_ , bignum->bignum_ , bn->bignum_ , ctx);
1025
1030
1026
1031
WRAP_RESULT (res, result);
1027
1032
@@ -1042,7 +1047,7 @@ NAN_METHOD(BigNum::BitLength)
1042
1047
{
1043
1048
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
1044
1049
1045
- int size = BN_num_bits (& bignum->bignum_ );
1050
+ int size = BN_num_bits (bignum->bignum_ );
1046
1051
Local<Value> result = Nan::New<Integer>(size);
1047
1052
1048
1053
info.GetReturnValue ().Set (result);
@@ -1056,7 +1061,7 @@ NAN_METHOD(BigNum::Bgcd)
1056
1061
BigNum *bi = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
1057
1062
BigNum *res = new BigNum ();
1058
1063
1059
- BN_gcd (& res->bignum_ , & bignum->bignum_ , & bi->bignum_ , ctx);
1064
+ BN_gcd (res->bignum_ , bignum->bignum_ , bi->bignum_ , ctx);
1060
1065
1061
1066
WRAP_RESULT (res, result);
1062
1067
info.GetReturnValue ().Set (result);
@@ -1070,7 +1075,7 @@ NAN_METHOD(BigNum::Bjacobi)
1070
1075
BigNum *bn_n = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
1071
1076
int res = 0 ;
1072
1077
1073
- if (BN_jacobi_priv (& bn_a->bignum_ , & bn_n->bignum_ , &res, ctx) == -1 ) {
1078
+ if (BN_jacobi_priv (bn_a->bignum_ , bn_n->bignum_ , &res, ctx) == -1 ) {
1074
1079
Nan::ThrowError (" Jacobi symbol calculation failed" );
1075
1080
return ;
1076
1081
}
@@ -1082,21 +1087,21 @@ NAN_METHOD(BigNum::Bsetcompact)
1082
1087
{
1083
1088
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
1084
1089
1085
- unsigned int nCompact = info[0 ]-> ToUint32 ()-> Value ();
1090
+ unsigned int nCompact = Nan::To< uint32_t >( info[0 ]). FromJust ();
1086
1091
unsigned int nSize = nCompact >> 24 ;
1087
1092
bool fNegative =(nCompact & 0x00800000 ) != 0 ;
1088
1093
unsigned int nWord = nCompact & 0x007fffff ;
1089
1094
if (nSize <= 3 )
1090
1095
{
1091
1096
nWord >>= 8 *(3 -nSize);
1092
- BN_set_word (& bignum->bignum_ , nWord);
1097
+ BN_set_word (bignum->bignum_ , nWord);
1093
1098
}
1094
1099
else
1095
1100
{
1096
- BN_set_word (& bignum->bignum_ , nWord);
1097
- BN_lshift (& bignum->bignum_ , & bignum->bignum_ , 8 *(nSize-3 ));
1101
+ BN_set_word (bignum->bignum_ , nWord);
1102
+ BN_lshift (bignum->bignum_ , bignum->bignum_ , 8 *(nSize-3 ));
1098
1103
}
1099
- BN_set_negative (& bignum->bignum_ , fNegative );
1104
+ BN_set_negative (bignum->bignum_ , fNegative );
1100
1105
1101
1106
info.GetReturnValue ().Set (info.This ());
1102
1107
}
0 commit comments