Running the perl code: use Crypt::OpenSSL::Bignum; use Crypt::OpenSSL::ECDSA; my $num = Crypt::OpenSSL::Bignum->new_from_word( 1000 ); my $dsasig = Crypt::OpenSSL::ECDSA::ECDSA_SIG->new(); $dsasig->set_r($num); $dsasig->set_s($num); 1; Fails with Could not duplicate unchanged ECDSA paramater when the port is compiled with openssl-1.1.1h_1,1 (probably all versions after openssl 1.1) Looking at the code in ./work/Crypt-OpenSSL-ECDSA-0.08/ECDSA.xs I can see that the set_r and set_s methods try to duplicate the previously initialised values for s and r respectively in the $dsasig object (ECDSA_SIG structure). However, since openssl 1.1 the ECDSA_SIG_new() method no longer initialises the r and s components (see man ECDSA_SIG_get0)