Package: libcrypto++6
Version: 5.6.4-8
Followup-For: Bug #932620
Came up against the same problem. Test case below:
================================================================
// Build with
// $ make LDFLAGS=$(pkg-config --libs libcrypto++) cryptopp-link
#include <iostream>
#include <crypto++/blake2.h>
#include <crypto++/hex.h>
#define DIGEST_SIZE CryptoPP::BLAKE2b::DIGESTSIZE
static std::string
hash_key (const std::list<std::string> &key)
{
CryptoPP::BLAKE2b hasher(DIGEST_SIZE);
for (auto& s : key)
{
hasher.Update(reinterpret_cast<const byte *>(s.data()),
s.size());
}
byte digest[DIGEST_SIZE];
hasher.Final(&digest[0]);
std::string digest_str;
CryptoPP::HexEncoder(new CryptoPP::StringSink(digest_str))
.Put(&digest[0], DIGEST_SIZE);
return digest_str;
}
int main (int argc, char **argv)
{
std::list<std::string> key;
for (int i = 0; i < argc; ++i)
{
key.push_back (argv[i]);
}
std::string hash( hash_key(key) );
std::cout << hash << std::endl;
return 0;
}
================================================================
Produces:
================================================================
g++ -lcrypto++ cryptopp-link.cpp -o cryptopp-link
/usr/bin/ld: /tmp/cckaN0JV.o: in function
`hash_key(std::__cxx11::list<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > > > const&)':
cryptopp-link.cpp:(.text+0x2be): undefined reference to
`CryptoPP::BLAKE2_Base<unsigned long long, true>::Update(unsigned char const*,
unsigned long)'
/usr/bin/ld: /tmp/cckaN0JV.o: in function `CryptoPP::BLAKE2b::BLAKE2b(bool,
unsigned int)':
cryptopp-link.cpp:(.text._ZN8CryptoPP7BLAKE2bC2Ebj[_ZN8CryptoPP7BLAKE2bC5Ebj]+0x25):
undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long,
true>::BLAKE2_Base(bool, unsigned int)'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0x88):
undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long,
true>::UncheckedSetKey(unsigned char const*, unsigned int,
CryptoPP::NameValuePairs const&)'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0xa8):
undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long,
true>::Update(unsigned char const*, unsigned long)'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0xb0):
undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long,
true>::Restart()'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0xb8):
undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long,
true>::TruncatedFinal(unsigned char*, unsigned long)'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0xf0):
undefined reference to `non-virtual thunk to CryptoPP::BLAKE2_Base<unsigned
long long, true>::Update(unsigned char const*, unsigned long)'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0x108):
undefined reference to `non-virtual thunk to CryptoPP::BLAKE2_Base<unsigned
long long, true>::Restart()'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0x148):
undefined reference to `non-virtual thunk to CryptoPP::BLAKE2_Base<unsigned
long long, true>::TruncatedFinal(unsigned char*, unsigned long)'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0x88):
undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long,
true>::UncheckedSetKey(unsigned char const*, unsigned int,
CryptoPP::NameValuePairs const&)'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0xa8):
undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long,
true>::Update(unsigned char const*, unsigned long)'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0xb0):
undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long,
true>::Restart()'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0xb8):
undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long,
true>::TruncatedFinal(unsigned char*, unsigned long)'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0xf0):
undefined reference to `non-virtual thunk to CryptoPP::BLAKE2_Base<unsigned
long long, true>::Update(unsigned char const*, unsigned long)'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0x108):
undefined reference to `non-virtual thunk to CryptoPP::BLAKE2_Base<unsigned
long long, true>::Restart()'
/usr/bin/ld:
/tmp/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0x148):
undefined reference to `non-virtual thunk to CryptoPP::BLAKE2_Base<unsigned
long long, true>::TruncatedFinal(unsigned char*, unsigned long)'
collect2: error: ld returned 1 exit status
make: *** [<builtin>: cryptopp-link] Error 1
================================================================
-- System Information:
Debian Release: 10.4
APT prefers stable
APT policy: (991, 'stable'), (500, 'stable-updates'), (500, 'stable-debug'),
(500, 'oldstable-updates'), (500, 'oldstable-debug'), (500, 'oldoldstable'),
(500, 'oldstable'), (70, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 5.8.0-linux-latest-34 (SMP w/16 CPU cores; PREEMPT)
Kernel taint flags: TAINT_WARN
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8),
LANGUAGE=en_GB:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: sysvinit (via /sbin/init)
Versions of packages libcrypto++6 depends on:
ii libc6 2.28-10
ii libgcc-s1 [libgcc1] 10.2.0-6
ii libgcc1 1:9.2.1-16
ii libstdc++6 9.2.1-16
libcrypto++6 recommends no packages.
libcrypto++6 suggests no packages.
-- no debconf information