1 diff -ruN Crypt-OpenSSL-Bignum-0.09.orig/Bignum.pm Crypt-OpenSSL-Bignum-0.09/Bignum.pm
2 --- Crypt-OpenSSL-Bignum-0.09.orig/Bignum.pm 2017-12-01 20:07:57.000000000 +0100
3 +++ Crypt-OpenSSL-Bignum-0.09/Bignum.pm 2020-04-04 20:21:22.290086257 +0200
5 a new Crypt::OpenSSL::Bignum object, using the second argument,
6 a Crypt::OpenSSL::Bignum::CTX object, as a scratchpad.
10 + my $new_bn_object = $self->mod_sqrt($bn_n, $ctx);
11 + # new object is created $self is not modified
13 +Computes the square root of C<$self> modulo C<$bn_n> and returns the result in
14 +a new Crypt::OpenSSL::Bignum object, using the second argument,
15 +a Crypt::OpenSSL::Bignum::CTX object, as a scratchpad.
19 my $new_bn_object = $self->gcd($bn_b, $ctx);
20 diff -ruN Crypt-OpenSSL-Bignum-0.09.orig/Bignum.xs Crypt-OpenSSL-Bignum-0.09/Bignum.xs
21 --- Crypt-OpenSSL-Bignum-0.09.orig/Bignum.xs 2017-12-01 20:05:15.000000000 +0100
22 +++ Crypt-OpenSSL-Bignum-0.09/Bignum.xs 2020-04-04 20:21:04.377184936 +0200
26 Crypt::OpenSSL::Bignum
27 +BN_mod_sqrt(self, n, ctx)
28 + Crypt::OpenSSL::Bignum self;
29 + Crypt::OpenSSL::Bignum n;
30 + Crypt::OpenSSL::Bignum::CTX ctx;
34 + checkOpenSslCall( bn = BN_new() );
35 + checkOpenSslCall( BN_mod_sqrt( bn, self, n, ctx ) );
40 +Crypt::OpenSSL::Bignum
42 Crypt::OpenSSL::Bignum self;
43 Crypt::OpenSSL::Bignum b;
44 diff -ruN Crypt-OpenSSL-Bignum-0.09.orig/test.pl Crypt-OpenSSL-Bignum-0.09/test.pl
45 --- Crypt-OpenSSL-Bignum-0.09.orig/test.pl 2016-10-22 12:46:23.000000000 +0200
46 +++ Crypt-OpenSSL-Bignum-0.09/test.pl 2020-04-04 20:28:16.946804394 +0200
48 ok( 36 == $bn6->sqr( $ctx )->get_word() );
49 ok( 12 == $bn23->mod_inverse( $bn25, $ctx )->get_word() );
51 +my $bn18 = _new_bn( 18 );
52 +ok( 8 == $bn18->mod_sqrt( $bn23, $ctx )->get_word() );
54 ok(Crypt::OpenSSL::Bignum->new()->get_word == 0);
55 ok(Crypt::OpenSSL::Bignum->rand(32, 0, 0));
56 ok(Crypt::OpenSSL::Bignum->pseudo_rand(32, 0, 0));