genio / alien-sodium

Alien::Sodium
https://metacpan.org/release/Alien-Sodium
Other
0 stars 0 forks source link

Alien-Sodium 2.000 breaks compat with Crypt-NaCl-Sodium #2

Open richvdh opened 4 years ago

richvdh commented 4 years ago

Sadly crypt-nacl-sodium seems as abandoned as Alien-Sodium was; however, it did work until the recent release of Alien-Sodium 2.000. Now we get:

Running make for A/AJ/AJGB/Crypt-NaCl-Sodium-1.0.8.0.tar.gz
cp lib/Crypt/NaCl/Sodium/shorthash.pod blib/lib/Crypt/NaCl/Sodium/shorthash.pod
cp lib/Crypt/NaCl/Sodium.pm blib/lib/Crypt/NaCl/Sodium.pm
cp lib/Crypt/NaCl/Sodium/onetimeauth.pod blib/lib/Crypt/NaCl/Sodium/onetimeauth.pod
cp lib/Crypt/NaCl/Sodium/secretbox.pod blib/lib/Crypt/NaCl/Sodium/secretbox.pod
cp lib/Crypt/NaCl/Sodium/hash.pod blib/lib/Crypt/NaCl/Sodium/hash.pod
cp lib/Data/BytesLocker.pod blib/lib/Data/BytesLocker.pod
cp lib/Crypt/NaCl/Sodium/stream.pod blib/lib/Crypt/NaCl/Sodium/stream.pod
cp lib/Crypt/NaCl/Sodium/box.pod blib/lib/Crypt/NaCl/Sodium/box.pod
cp lib/Crypt/NaCl/Sodium/pwhash.pod blib/lib/Crypt/NaCl/Sodium/pwhash.pod
cp lib/Crypt/NaCl/Sodium/auth.pod blib/lib/Crypt/NaCl/Sodium/auth.pod
cp lib/Crypt/NaCl/Sodium/sign.pod blib/lib/Crypt/NaCl/Sodium/sign.pod
cp lib/Crypt/NaCl/Sodium/generichash.pod blib/lib/Crypt/NaCl/Sodium/generichash.pod
cp lib/Crypt/NaCl/Sodium/aead.pod blib/lib/Crypt/NaCl/Sodium/aead.pod
cp lib/Crypt/NaCl/Sodium/scalarmult.pod blib/lib/Crypt/NaCl/Sodium/scalarmult.pod
Running Mkbootstrap for Sodium ()
chmod 644 "Sodium.bs"
"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Sodium.bs blib/arch/auto/Crypt/NaCl/Sodium/Sodium.bs 644
"/usr/bin/perl" "/usr/share/perl/5.28/ExtUtils/xsubpp"  -typemap '/usr/share/perl/5.28/ExtUtils/typemap' -typemap '/root/.cpan/build/Crypt-NaCl-Sodium-1.0.8.0-0/typemap'  Sodium.xs > Sodium.xsc
mv Sodium.xsc Sodium.c
x86_64-linux-gnu-gcc -c  -I. -I/usr/local/lib/x86_64-linux-gnu/perl/5.28.1/auto/share/dist/Alien-Sodium/include  -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"1.0.8.0\" -DXS_VERSION=\"1.0.8.0\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.28/CORE"  -DAES256GCM_IS_AVAILABLE Sodium.c
Sodium.xs: In function ‘XS_Crypt__NaCl__Sodium__stream_AES128CTR_NONCEBYTES’:
Sodium.xs:4538:18: error: ‘crypto_stream_aes128ctr_NONCEBYTES’ undeclared (first use in this function); did you mean ‘crypto_stream_salsa208_NONCEBYTES’?
         RETVAL = crypto_stream_aes128ctr_NONCEBYTES;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  crypto_stream_salsa208_NONCEBYTES
Sodium.xs:4538:18: note: each undeclared identifier is reported only once for each function it appears in
Sodium.xs: In function ‘XS_Crypt__NaCl__Sodium__stream_AES128CTR_KEYBYTES’:
Sodium.xs:4545:18: error: ‘crypto_stream_aes128ctr_KEYBYTES’ undeclared (first use in this function); did you mean ‘crypto_stream_salsa20_KEYBYTES’?
         RETVAL = crypto_stream_aes128ctr_KEYBYTES;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  crypto_stream_salsa20_KEYBYTES
Sodium.xs: In function ‘XS_Crypt__NaCl__Sodium__stream_keygen’:
Sodium.xs:4573:28: error: ‘crypto_stream_aes128ctr_KEYBYTES’ undeclared (first use in this function); did you mean ‘crypto_stream_salsa20_KEYBYTES’?
                 key_size = crypto_stream_aes128ctr_KEYBYTES;
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            crypto_stream_salsa20_KEYBYTES
Sodium.xs: In function ‘XS_Crypt__NaCl__Sodium__stream_nonce’:
Sodium.xs:4608:30: error: ‘crypto_stream_aes128ctr_NONCEBYTES’ undeclared (first use in this function); did you mean ‘crypto_stream_salsa208_NONCEBYTES’?
                 nonce_size = crypto_stream_aes128ctr_NONCEBYTES;
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                              crypto_stream_salsa208_NONCEBYTES
Sodium.xs: In function ‘XS_Crypt__NaCl__Sodium__stream_bytes’:
Sodium.xs:4690:30: error: ‘crypto_stream_aes128ctr_NONCEBYTES’ undeclared (first use in this function); did you mean ‘crypto_stream_salsa208_NONCEBYTES’?
                 nonce_size = crypto_stream_aes128ctr_NONCEBYTES;
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                              crypto_stream_salsa208_NONCEBYTES
Sodium.xs:4691:28: error: ‘crypto_stream_aes128ctr_KEYBYTES’ undeclared (first use in this function); did you mean ‘crypto_stream_salsa20_KEYBYTES’?
                 key_size = crypto_stream_aes128ctr_KEYBYTES;
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            crypto_stream_salsa20_KEYBYTES
Sodium.xs:4692:35: error: ‘crypto_stream_aes128ctr’ undeclared (first use in this function); did you mean ‘crypto_stream_salsa208_xor’?
                 bytes_function = &crypto_stream_aes128ctr;
                                   ^~~~~~~~~~~~~~~~~~~~~~~
                                   crypto_stream_salsa208_xor
Sodium.xs:4702:17: warning: ‘crypto_stream_salsa208’ is deprecated [-Wdeprecated-declarations]
                 bytes_function = &crypto_stream_salsa208;
                 ^~~~~~~~~~~~~~
In file included from /usr/local/lib/x86_64-linux-gnu/perl/5.28.1/auto/share/dist/Alien-Sodium/include/sodium.h:65,
                 from Sodium.xs:11:
/usr/local/lib/x86_64-linux-gnu/perl/5.28.1/auto/share/dist/Alien-Sodium/include/sodium/crypto_stream_salsa208.h:38:5: note: declared here
 int crypto_stream_salsa208(unsigned char *c, unsigned long long clen,
     ^~~~~~~~~~~~~~~~~~~~~~
Sodium.xs: In function ‘XS_Crypt__NaCl__Sodium__stream_xor’:
Sodium.xs:4780:30: error: ‘crypto_stream_aes128ctr_NONCEBYTES’ undeclared (first use in this function); did you mean ‘crypto_stream_salsa208_NONCEBYTES’?
                 nonce_size = crypto_stream_aes128ctr_NONCEBYTES;
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                              crypto_stream_salsa208_NONCEBYTES
Sodium.xs:4781:28: error: ‘crypto_stream_aes128ctr_KEYBYTES’ undeclared (first use in this function); did you mean ‘crypto_stream_salsa20_KEYBYTES’?
                 key_size = crypto_stream_aes128ctr_KEYBYTES;
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            crypto_stream_salsa20_KEYBYTES
Sodium.xs:4782:33: error: ‘crypto_stream_aes128ctr_xor’ undeclared (first use in this function); did you mean ‘crypto_stream_salsa208_xor’?
                 xor_function = &crypto_stream_aes128ctr_xor;
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
                                 crypto_stream_salsa208_xor
Sodium.xs:4792:17: warning: ‘crypto_stream_salsa208_xor’ is deprecated [-Wdeprecated-declarations]
                 xor_function = &crypto_stream_salsa208_xor;
                 ^~~~~~~~~~~~
In file included from /usr/local/lib/x86_64-linux-gnu/perl/5.28.1/auto/share/dist/Alien-Sodium/include/sodium.h:65,
                 from Sodium.xs:11:
/usr/local/lib/x86_64-linux-gnu/perl/5.28.1/auto/share/dist/Alien-Sodium/include/sodium/crypto_stream_salsa208.h:43:5: note: declared here
 int crypto_stream_salsa208_xor(unsigned char *c, const unsigned char *m,
     ^~~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:366: Sodium.o] Error 1
ara4n commented 4 years ago

I just worked around this by stripping out every reference to aes128ctr from Sodium.xs and it worked (the problem being that libsodium removed aes128ctr years ago at https://github.com/jedisct1/libsodium/commit/96be673f82ed7068046cb80584e257f5b81572a4#diff-90c54a2f5f88237dba59c6231015b58f, and Sodium.xs is out of sync)