Skip to content
This repository was archived by the owner on Feb 17, 2025. It is now read-only.
This repository was archived by the owner on Feb 17, 2025. It is now read-only.

How do you use this library? #4

@Lagrang3

Description

@Lagrang3

Hi @nemothenoone, I've just subscribed to boost mailing list. I am interested in c++ in general but I find cryptography particularly interesting. Thus I decided to have a look a your newly proposed library.

However I am stuck at the first step one would do, ie. try to run some examples.
The first code snippet described in the documentation does not compile.

I am using meson 0.54.2 build system, for the auto-config, compile and linking---it uses pkgconfig under the hood.

So this is the example:

#include <boost/crypto3/block/aes.hpp>
#include <boost/crypto3/block/algorithm/encrypt.hpp>

#include <string>
#include <cassert>

using namespace boost::crypto3;

int main()
{
    std::string input = 
        "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
        "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
        "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
        "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
        "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
        "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
        "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
        "\xad\x2b\x41\x7b\xe6\x6c\x37\x10";

    std::string key = 
        "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
        "\xab\xf7\x15\x88\x09\xcf\x4f\x3c";


    std::string out = encrypt<block::aes<128>>(input.begin(), input.end(), key);

    assert(out == "3ad77bb40d7a3660a89ecaf32466ef97f5d3d58503b9699de785895a96fdbaaf"
                  "43b1cd7f598ece23881b00e3ed0306887b0c785e27e8ad3f8223207104725dd4");
    return 0;
}

the compiler execution:

c++ -Iexample@exe -I. -I.. -I/opt/boost/1.73.0/include -I/opt/boost-crypto3/include -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -g -maes -mpclmul -mssse3 -DCRYPTO3_HAS_RIJNDAEL_NI -maes -mpclmul -mssse3 -MD -MQ 'example@exe/example.cpp.o' -MF 'example@exe/example.cpp.o.d' -o 'example@exe/example.cpp.o' -c ../example.cpp

and the error messages:

In file included from /opt/boost-crypto3/include/boost/crypto3/detail/exploder.hpp:15,
                 from /opt/boost-crypto3/include/boost/crypto3/detail/pack.hpp:15,
                 from /opt/boost-crypto3/include/boost/crypto3/block/detail/block_stream_processor.hpp:17,
                 from /opt/boost-crypto3/include/boost/crypto3/block/rijndael.hpp:15,
                 from /opt/boost-crypto3/include/boost/crypto3/block/aes.hpp:12,
                 from ../example.cpp:1:
/opt/boost-crypto3/include/boost/crypto3/detail/reverser.hpp:54:2: error: #error "BOOST_ARCH_CURRENT_WORD_BITS not set"
 #error "BOOST_ARCH_CURRENT_WORD_BITS not set"
  ^~~~~
In file included from /opt/boost-crypto3/include/boost/crypto3/block/rijndael.hpp:15,
                 from /opt/boost-crypto3/include/boost/crypto3/block/aes.hpp:12,
                 from ../example.cpp:1:
/opt/boost-crypto3/include/boost/crypto3/block/detail/block_stream_processor.hpp:125: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
In file included from /opt/boost-crypto3/include/boost/crypto3/detail/basic_functions.hpp:15,
                 from /opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_functions.hpp:16,
                 from /opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_policy.hpp:12,
                 from /opt/boost-crypto3/include/boost/crypto3/block/rijndael.hpp:18,
                 from /opt/boost-crypto3/include/boost/crypto3/block/aes.hpp:12,
                 from ../example.cpp:1:
/opt/boost-crypto3/include/boost/crypto3/detail/make_uint_t.hpp:30: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
In file included from /opt/boost-crypto3/include/boost/crypto3/block/rijndael.hpp:19,
                 from /opt/boost-crypto3/include/boost/crypto3/block/aes.hpp:12,
                 from ../example.cpp:1:
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:44: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:54: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:64: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:67: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:71: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:76: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:88: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:90: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:92: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:109: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:111: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:137: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:158: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:180: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_impl.hpp:198: warning: ignoring #pragma clang loop [-Wunknown-pragmas]
 #pragma clang loop unroll(full)
 
In file included from /opt/boost-crypto3/include/boost/crypto3/block/rijndael.hpp:23,
                 from /opt/boost-crypto3/include/boost/crypto3/block/aes.hpp:12,
                 from ../example.cpp:1:
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:28:39: error: expected constructor, destructor, or type conversion before ‘(’ token
                 BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                       ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:37:39: error: expected constructor, destructor, or type conversion before ‘(’ token
                 BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                       ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:67:39: error: expected constructor, destructor, or type conversion before ‘(’ token
                 BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                       ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:93:44: error: expected identifier before string constant
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                            ^~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:93:44: error: expected ‘,’ or ‘...’ before string constant
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:93:55: error: ISO C++ forbids declaration of ‘BOOST_ATTRIBUTE_TARGET’ with no type [-fpermissive]
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:93:55: error: expected ‘;’ at end of member declaration
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
                                                        ;
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:134:44: error: expected identifier before string constant
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                            ^~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:134:44: error: expected ‘,’ or ‘...’ before string constant
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:134:55: error: ISO C++ forbids declaration of ‘BOOST_ATTRIBUTE_TARGET’ with no type [-fpermissive]
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:134:55: error: expected ‘;’ at end of member declaration
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
                                                        ;
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:134:21: error: ‘int boost::crypto3::block::detail::rijndael_ni_impl<128, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’ cannot be overloaded with ‘int boost::crypto3::block::detail::rijndael_ni_impl<128, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                     ^~~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:93:21: note: previous declaration ‘int boost::crypto3::block::detail::rijndael_ni_impl<128, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                     ^~~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:175:44: error: expected identifier before string constant
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                            ^~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:175:44: error: expected ‘,’ or ‘...’ before string constant
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:175:55: error: ISO C++ forbids declaration of ‘BOOST_ATTRIBUTE_TARGET’ with no type [-fpermissive]
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:175:55: error: expected ‘;’ at end of member declaration
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
                                                        ;
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:175:21: error: ‘int boost::crypto3::block::detail::rijndael_ni_impl<128, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’ cannot be overloaded with ‘int boost::crypto3::block::detail::rijndael_ni_impl<128, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                     ^~~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:93:21: note: previous declaration ‘int boost::crypto3::block::detail::rijndael_ni_impl<128, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                     ^~~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp: In static member function ‘static void boost::crypto3::block::detail::rijndael_ni_impl<128, 128, PolicyType>::schedule_key(const key_type&, boost::crypto3::block::detail::rijndael_ni_impl<128, 128, PolicyType>::key_schedule_type&, boost::crypto3::block::detail::rijndael_ni_impl<128, 128, PolicyType>::key_schedule_type&)’:
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:179:48: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
 #define AES_128_KEY_EXPANSION(K, RCON) detail::aes_128_key_expansion(K, _mm_aeskeygenassist_si128(K, RCON))
                                                ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:182:44: note: in expansion of macro ‘AES_128_KEY_EXPANSION’
                         const __m128i K1 = AES_128_KEY_EXPANSION(K0, 0x01);
                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:179:48: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
 #define AES_128_KEY_EXPANSION(K, RCON) detail::aes_128_key_expansion(K, _mm_aeskeygenassist_si128(K, RCON))
                                                ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:183:44: note: in expansion of macro ‘AES_128_KEY_EXPANSION’
                         const __m128i K2 = AES_128_KEY_EXPANSION(K1, 0x02);
                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:179:48: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
 #define AES_128_KEY_EXPANSION(K, RCON) detail::aes_128_key_expansion(K, _mm_aeskeygenassist_si128(K, RCON))
                                                ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:184:44: note: in expansion of macro ‘AES_128_KEY_EXPANSION’
                         const __m128i K3 = AES_128_KEY_EXPANSION(K2, 0x04);
                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:179:48: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
 #define AES_128_KEY_EXPANSION(K, RCON) detail::aes_128_key_expansion(K, _mm_aeskeygenassist_si128(K, RCON))
                                                ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:185:44: note: in expansion of macro ‘AES_128_KEY_EXPANSION’
                         const __m128i K4 = AES_128_KEY_EXPANSION(K3, 0x08);
                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:179:48: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
 #define AES_128_KEY_EXPANSION(K, RCON) detail::aes_128_key_expansion(K, _mm_aeskeygenassist_si128(K, RCON))
                                                ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:186:44: note: in expansion of macro ‘AES_128_KEY_EXPANSION’
                         const __m128i K5 = AES_128_KEY_EXPANSION(K4, 0x10);
                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:179:48: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
 #define AES_128_KEY_EXPANSION(K, RCON) detail::aes_128_key_expansion(K, _mm_aeskeygenassist_si128(K, RCON))
                                                ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:187:44: note: in expansion of macro ‘AES_128_KEY_EXPANSION’
                         const __m128i K6 = AES_128_KEY_EXPANSION(K5, 0x20);
                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:179:48: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
 #define AES_128_KEY_EXPANSION(K, RCON) detail::aes_128_key_expansion(K, _mm_aeskeygenassist_si128(K, RCON))
                                                ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:188:44: note: in expansion of macro ‘AES_128_KEY_EXPANSION’
                         const __m128i K7 = AES_128_KEY_EXPANSION(K6, 0x40);
                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:179:48: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
 #define AES_128_KEY_EXPANSION(K, RCON) detail::aes_128_key_expansion(K, _mm_aeskeygenassist_si128(K, RCON))
                                                ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:189:44: note: in expansion of macro ‘AES_128_KEY_EXPANSION’
                         const __m128i K8 = AES_128_KEY_EXPANSION(K7, 0x80);
                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:179:48: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
 #define AES_128_KEY_EXPANSION(K, RCON) detail::aes_128_key_expansion(K, _mm_aeskeygenassist_si128(K, RCON))
                                                ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:190:44: note: in expansion of macro ‘AES_128_KEY_EXPANSION’
                         const __m128i K9 = AES_128_KEY_EXPANSION(K8, 0x1B);
                                            ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:179:48: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
 #define AES_128_KEY_EXPANSION(K, RCON) detail::aes_128_key_expansion(K, _mm_aeskeygenassist_si128(K, RCON))
                                                ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:191:45: note: in expansion of macro ‘AES_128_KEY_EXPANSION’
                         const __m128i K10 = AES_128_KEY_EXPANSION(K9, 0x36);
                                             ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp: At global scope:
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:236:44: error: expected identifier before string constant
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                            ^~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:236:44: error: expected ‘,’ or ‘...’ before string constant
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:236:55: error: ISO C++ forbids declaration of ‘BOOST_ATTRIBUTE_TARGET’ with no type [-fpermissive]
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:236:55: error: expected ‘;’ at end of member declaration
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
                                                        ;
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:281:44: error: expected identifier before string constant
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                            ^~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:281:44: error: expected ‘,’ or ‘...’ before string constant
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:281:55: error: ISO C++ forbids declaration of ‘BOOST_ATTRIBUTE_TARGET’ with no type [-fpermissive]
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:281:55: error: expected ‘;’ at end of member declaration
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
                                                        ;
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:281:21: error: ‘int boost::crypto3::block::detail::rijndael_ni_impl<192, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’ cannot be overloaded with ‘int boost::crypto3::block::detail::rijndael_ni_impl<192, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                     ^~~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:236:21: note: previous declaration ‘int boost::crypto3::block::detail::rijndael_ni_impl<192, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                     ^~~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:355:44: error: expected identifier before string constant
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                            ^~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:355:44: error: expected ‘,’ or ‘...’ before string constant
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:355:55: error: ISO C++ forbids declaration of ‘BOOST_ATTRIBUTE_TARGET’ with no type [-fpermissive]
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:355:55: error: expected ‘;’ at end of member declaration
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
                                                        ;
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:355:21: error: ‘int boost::crypto3::block::detail::rijndael_ni_impl<192, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’ cannot be overloaded with ‘int boost::crypto3::block::detail::rijndael_ni_impl<192, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                     ^~~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:236:21: note: previous declaration ‘int boost::crypto3::block::detail::rijndael_ni_impl<192, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                     ^~~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp: In static member function ‘static void boost::crypto3::block::detail::rijndael_ni_impl<192, 128, PolicyType>::schedule_key(const key_type&, boost::crypto3::block::detail::rijndael_ni_impl<192, 128, PolicyType>::key_schedule_type&, boost::crypto3::block::detail::rijndael_ni_impl<192, 128, PolicyType>::key_schedule_type&)’:
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:366:13: error: ‘aes_192_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
     detail::aes_192_key_expansion(&K0, &K1, _mm_aeskeygenassist_si128(K1, RCON), &encryption_key[EK_OFF], EK_OFF == 48)
             ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:368:25: note: in expansion of macro ‘AES_192_KEY_EXPANSION’
                         AES_192_KEY_EXPANSION(0x01, 6);
                         ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:366:13: error: ‘aes_192_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
     detail::aes_192_key_expansion(&K0, &K1, _mm_aeskeygenassist_si128(K1, RCON), &encryption_key[EK_OFF], EK_OFF == 48)
             ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:369:25: note: in expansion of macro ‘AES_192_KEY_EXPANSION’
                         AES_192_KEY_EXPANSION(0x02, 12);
                         ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:366:13: error: ‘aes_192_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
     detail::aes_192_key_expansion(&K0, &K1, _mm_aeskeygenassist_si128(K1, RCON), &encryption_key[EK_OFF], EK_OFF == 48)
             ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:370:25: note: in expansion of macro ‘AES_192_KEY_EXPANSION’
                         AES_192_KEY_EXPANSION(0x04, 18);
                         ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:366:13: error: ‘aes_192_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
     detail::aes_192_key_expansion(&K0, &K1, _mm_aeskeygenassist_si128(K1, RCON), &encryption_key[EK_OFF], EK_OFF == 48)
             ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:371:25: note: in expansion of macro ‘AES_192_KEY_EXPANSION’
                         AES_192_KEY_EXPANSION(0x08, 24);
                         ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:366:13: error: ‘aes_192_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
     detail::aes_192_key_expansion(&K0, &K1, _mm_aeskeygenassist_si128(K1, RCON), &encryption_key[EK_OFF], EK_OFF == 48)
             ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:372:25: note: in expansion of macro ‘AES_192_KEY_EXPANSION’
                         AES_192_KEY_EXPANSION(0x10, 30);
                         ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:366:13: error: ‘aes_192_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
     detail::aes_192_key_expansion(&K0, &K1, _mm_aeskeygenassist_si128(K1, RCON), &encryption_key[EK_OFF], EK_OFF == 48)
             ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:373:25: note: in expansion of macro ‘AES_192_KEY_EXPANSION’
                         AES_192_KEY_EXPANSION(0x20, 36);
                         ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:366:13: error: ‘aes_192_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
     detail::aes_192_key_expansion(&K0, &K1, _mm_aeskeygenassist_si128(K1, RCON), &encryption_key[EK_OFF], EK_OFF == 48)
             ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:374:25: note: in expansion of macro ‘AES_192_KEY_EXPANSION’
                         AES_192_KEY_EXPANSION(0x40, 42);
                         ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:366:13: error: ‘aes_192_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
     detail::aes_192_key_expansion(&K0, &K1, _mm_aeskeygenassist_si128(K1, RCON), &encryption_key[EK_OFF], EK_OFF == 48)
             ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:375:25: note: in expansion of macro ‘AES_192_KEY_EXPANSION’
                         AES_192_KEY_EXPANSION(0x80, 48);
                         ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp: At global scope:
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:410:44: error: expected identifier before string constant
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                            ^~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:410:44: error: expected ‘,’ or ‘...’ before string constant
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:410:55: error: ISO C++ forbids declaration of ‘BOOST_ATTRIBUTE_TARGET’ with no type [-fpermissive]
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:410:55: error: expected ‘;’ at end of member declaration
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
                                                        ;
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:459:44: error: expected identifier before string constant
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                            ^~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:459:44: error: expected ‘,’ or ‘...’ before string constant
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:459:55: error: ISO C++ forbids declaration of ‘BOOST_ATTRIBUTE_TARGET’ with no type [-fpermissive]
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:459:55: error: expected ‘;’ at end of member declaration
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
                                                        ;
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:459:21: error: ‘int boost::crypto3::block::detail::rijndael_ni_impl<256, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’ cannot be overloaded with ‘int boost::crypto3::block::detail::rijndael_ni_impl<256, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                     ^~~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:410:21: note: previous declaration ‘int boost::crypto3::block::detail::rijndael_ni_impl<256, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                     ^~~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:508:44: error: expected identifier before string constant
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                            ^~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:508:44: error: expected ‘,’ or ‘...’ before string constant
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:508:55: error: ISO C++ forbids declaration of ‘BOOST_ATTRIBUTE_TARGET’ with no type [-fpermissive]
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:508:55: error: expected ‘;’ at end of member declaration
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                                                       ^
                                                        ;
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:508:21: error: ‘int boost::crypto3::block::detail::rijndael_ni_impl<256, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’ cannot be overloaded with ‘int boost::crypto3::block::detail::rijndael_ni_impl<256, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                     ^~~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:410:21: note: previous declaration ‘int boost::crypto3::block::detail::rijndael_ni_impl<256, 128, PolicyType>::BOOST_ATTRIBUTE_TARGET(int)’
                     BOOST_ATTRIBUTE_TARGET("ssse3,aes")
                     ^~~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp: In static member function ‘static void boost::crypto3::block::detail::rijndael_ni_impl<256, 128, PolicyType>::schedule_key(const key_type&, boost::crypto3::block::detail::rijndael_ni_impl<256, 128, PolicyType>::key_schedule_type&, boost::crypto3::block::detail::rijndael_ni_impl<256, 128, PolicyType>::key_schedule_type&)’:
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:515:52: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K2 = detail::aes_128_key_expansion(K0, _mm_aeskeygenassist_si128(K1, 0x01));
                                                    ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:516:52: error: ‘aes_256_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K3 = detail::aes_256_key_expansion(K1, K2);
                                                    ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:518:52: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K4 = detail::aes_128_key_expansion(K2, _mm_aeskeygenassist_si128(K3, 0x02));
                                                    ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:519:52: error: ‘aes_256_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K5 = detail::aes_256_key_expansion(K3, K4);
                                                    ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:521:52: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K6 = detail::aes_128_key_expansion(K4, _mm_aeskeygenassist_si128(K5, 0x04));
                                                    ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:522:52: error: ‘aes_256_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K7 = detail::aes_256_key_expansion(K5, K6);
                                                    ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:524:52: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K8 = detail::aes_128_key_expansion(K6, _mm_aeskeygenassist_si128(K7, 0x08));
                                                    ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:525:52: error: ‘aes_256_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K9 = detail::aes_256_key_expansion(K7, K8);
                                                    ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:527:53: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K10 = detail::aes_128_key_expansion(K8, _mm_aeskeygenassist_si128(K9, 0x10));
                                                     ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:528:53: error: ‘aes_256_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K11 = detail::aes_256_key_expansion(K9, K10);
                                                     ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:530:53: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K12 = detail::aes_128_key_expansion(K10, _mm_aeskeygenassist_si128(K11, 0x20));
                                                     ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:531:53: error: ‘aes_256_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K13 = detail::aes_256_key_expansion(K11, K12);
                                                     ^~~~~~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/rijndael/rijndael_ni_impl.hpp:533:53: error: ‘aes_128_key_expansion’ is not a member of ‘boost::crypto3::block::detail’
                         const __m128i K14 = detail::aes_128_key_expansion(K12, _mm_aeskeygenassist_si128(K13, 0x40));
                                                     ^~~~~~~~~~~~~~~~~~~~~
In file included from ../example.cpp:2:
/opt/boost-crypto3/include/boost/crypto3/block/algorithm/encrypt.hpp: In instantiation of ‘OutputRange& boost::crypto3::encrypt(const SinglePassRange&, const KeyPassRange&, OutputRange&) [with BlockCipher = boost::crypto3::block::rijndael<128, 128>; SinglePassRange = __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >; KeyPassRange = __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >; OutputRange = std::__cxx11::basic_string<char>]’:
../example.cpp:26:79:   required from here
/opt/boost-crypto3/include/boost/crypto3/block/algorithm/encrypt.hpp:275:20: error: no matching function for call to ‘boost::crypto3::block::detail::range_cipher_impl<boost::crypto3::block::detail::value_cipher_impl<boost::accumulators::accumulator_set<boost::crypto3::digest<128>, boost::accumulators::features<boost::crypto3::accumulators::tag::block<boost::crypto3::block::detail::isomorphic<boost::crypto3::block::detail::isomorphic_encryption_policy<boost::crypto3::block::rijndael<128, 128>, boost::crypto3::block::nop_padding<boost::crypto3::block::rijndael<128, 128> > > > >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, long unsigned int> > >::range_cipher_impl(const __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >&, std::remove_reference<std::__cxx11::basic_string<char>&>::type, CipherAccumulator)’
             return EncrypterImpl(
                    ^~~~~~~~~~~~~~
                 rng, std::move(out),
                 ~~~~~~~~~~~~~~~~~~~~
                 CipherAccumulator(EncryptionMode(BlockCipher(block::detail::key_value<BlockCipher>(key)))));
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/boost-crypto3/include/boost/crypto3/block/algorithm/encrypt.hpp:17,
                 from ../example.cpp:2:
/opt/boost-crypto3/include/boost/crypto3/block/cipher_value.hpp:90:21: note: candidate: ‘template<class InputIterator> boost::crypto3::block::detail::range_cipher_impl<CipherStateImpl>::range_cipher_impl(InputIterator, InputIterator, const accumulator_set_type&)’
                     range_cipher_impl(InputIterator first, InputIterator last, const accumulator_set_type &ise) :
                     ^~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/cipher_value.hpp:90:21: note:   template argument deduction/substitution failed:
In file included from ../example.cpp:2:
/opt/boost-crypto3/include/boost/crypto3/block/algorithm/encrypt.hpp:275:20: note:   deduced conflicting types for parameter ‘InputIterator’ (‘__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >’ and ‘std::__cxx11::basic_string<char>’)
             return EncrypterImpl(
                    ^~~~~~~~~~~~~~
                 rng, std::move(out),
                 ~~~~~~~~~~~~~~~~~~~~
                 CipherAccumulator(EncryptionMode(BlockCipher(block::detail::key_value<BlockCipher>(key)))));
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/boost-crypto3/include/boost/crypto3/block/algorithm/encrypt.hpp:17,
                 from ../example.cpp:2:
/opt/boost-crypto3/include/boost/crypto3/block/cipher_value.hpp:74:21: note: candidate: ‘template<class SinglePassRange> boost::crypto3::block::detail::range_cipher_impl<CipherStateImpl>::range_cipher_impl(const SinglePassRange&, const accumulator_set_type&)’
                     range_cipher_impl(const SinglePassRange &range, const accumulator_set_type &ise) :
                     ^~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/cipher_value.hpp:74:21: note:   template argument deduction/substitution failed:
In file included from ../example.cpp:2:
/opt/boost-crypto3/include/boost/crypto3/block/algorithm/encrypt.hpp:275:20: note:   candidate expects 2 arguments, 3 provided
             return EncrypterImpl(
                    ^~~~~~~~~~~~~~
                 rng, std::move(out),
                 ~~~~~~~~~~~~~~~~~~~~
                 CipherAccumulator(EncryptionMode(BlockCipher(block::detail::key_value<BlockCipher>(key)))));
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/boost-crypto3/include/boost/crypto3/block/algorithm/encrypt.hpp:17,
                 from ../example.cpp:2:
/opt/boost-crypto3/include/boost/crypto3/block/cipher_value.hpp:61:24: note: candidate: ‘constexpr boost::crypto3::block::detail::range_cipher_impl<boost::crypto3::block::detail::value_cipher_impl<boost::accumulators::accumulator_set<boost::crypto3::digest<128>, boost::accumulators::features<boost::crypto3::accumulators::tag::block<boost::crypto3::block::detail::isomorphic<boost::crypto3::block::detail::isomorphic_encryption_policy<boost::crypto3::block::rijndael<128, 128>, boost::crypto3::block::nop_padding<boost::crypto3::block::rijndael<128, 128> > > > >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, long unsigned int> > >::range_cipher_impl(const boost::crypto3::block::detail::range_cipher_impl<boost::crypto3::block::detail::value_cipher_impl<boost::accumulators::accumulator_set<boost::crypto3::digest<128>, boost::accumulators::features<boost::crypto3::accumulators::tag::block<boost::crypto3::block::detail::isomorphic<boost::crypto3::block::detail::isomorphic_encryption_policy<boost::crypto3::block::rijndael<128, 128>, boost::crypto3::block::nop_padding<boost::crypto3::block::rijndael<128, 128> > > > >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, long unsigned int> > >&)’
                 struct range_cipher_impl : public CipherStateImpl {
                        ^~~~~~~~~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/cipher_value.hpp:61:24: note:   candidate expects 1 argument, 3 provided
/opt/boost-crypto3/include/boost/crypto3/block/cipher_value.hpp:61:24: note: candidate: ‘constexpr boost::crypto3::block::detail::range_cipher_impl<boost::crypto3::block::detail::value_cipher_impl<boost::accumulators::accumulator_set<boost::crypto3::digest<128>, boost::accumulators::features<boost::crypto3::accumulators::tag::block<boost::crypto3::block::detail::isomorphic<boost::crypto3::block::detail::isomorphic_encryption_policy<boost::crypto3::block::rijndael<128, 128>, boost::crypto3::block::nop_padding<boost::crypto3::block::rijndael<128, 128> > > > >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, long unsigned int> > >::range_cipher_impl(boost::crypto3::block::detail::range_cipher_impl<boost::crypto3::block::detail::value_cipher_impl<boost::accumulators::accumulator_set<boost::crypto3::digest<128>, boost::accumulators::features<boost::crypto3::accumulators::tag::block<boost::crypto3::block::detail::isomorphic<boost::crypto3::block::detail::isomorphic_encryption_policy<boost::crypto3::block::rijndael<128, 128>, boost::crypto3::block::nop_padding<boost::crypto3::block::rijndael<128, 128> > > > >, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, long unsigned int> > >&&)’
/opt/boost-crypto3/include/boost/crypto3/block/cipher_value.hpp:61:24: note:   candidate expects 1 argument, 3 provided
In file included from /opt/boost/1.73.0/include/boost/range/size_type.hpp:20,
                 from /opt/boost/1.73.0/include/boost/range/adaptor/sliced.hpp:15,
                 from /opt/boost-crypto3/include/boost/crypto3/block/rijndael.hpp:13,
                 from /opt/boost-crypto3/include/boost/crypto3/block/aes.hpp:12,
                 from ../example.cpp:1:
/opt/boost/1.73.0/include/boost/range/concepts.hpp: In instantiation of ‘struct boost::SinglePassRangeConcept<const __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> > >’:
/opt/boost/1.73.0/include/boost/concept/detail/has_constraints.hpp:32:62:   required by substitution of ‘template<class Model> boost::concepts::detail::yes boost::concepts::detail::has_constraints_(Model*, boost::concepts::detail::wrap_constraints<Model, (& Model::constraints)>*) [with Model = boost::SinglePassRangeConcept<const __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> > >]’
/opt/boost/1.73.0/include/boost/concept/detail/has_constraints.hpp:42:5:   required from ‘const bool boost::concepts::not_satisfied<boost::SinglePassRangeConcept<const __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> > > >::value’
/opt/boost/1.73.0/include/boost/concept/detail/has_constraints.hpp:45:51:   required from ‘struct boost::concepts::not_satisfied<boost::SinglePassRangeConcept<const __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> > > >’
/opt/boost/1.73.0/include/boost/concept/detail/general.hpp:51:8:   required from ‘struct boost::concepts::requirement_<void (*)(boost::SinglePassRangeConcept<const __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> > >)>’
/opt/boost/1.73.0/include/boost/range/algorithm/equal.hpp:175:13:   required from ‘typename Cipher::key_type boost::crypto3::block::detail::key_value(const SinglePassRange&) [with Cipher = boost::crypto3::block::rijndael<128, 128>; SinglePassRange = __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >; typename Cipher::key_type = std::array<unsigned char, 16>]’
/opt/boost-crypto3/include/boost/crypto3/block/algorithm/encrypt.hpp:277:99:   required from ‘OutputRange& boost::crypto3::encrypt(const SinglePassRange&, const KeyPassRange&, OutputRange&) [with BlockCipher = boost::crypto3::block::rijndael<128, 128>; SinglePassRange = __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >; KeyPassRange = __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >; OutputRange = std::__cxx11::basic_string<char>]’
../example.cpp:26:79:   required from here
/opt/boost/1.73.0/include/boost/range/concepts.hpp:274:17: error: no type named ‘type’ in ‘struct boost::range_iterator<const __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >, void>’
         >::type const_iterator;
                 ^~~~~~~~~~~~~~
/opt/boost/1.73.0/include/boost/range/concepts.hpp:276:66: error: no type named ‘type’ in ‘struct boost::range_iterator<const __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >, void>’
         typedef BOOST_DEDUCED_TYPENAME range_iterator<Rng>::type iterator;
                                                                  ^~~~~~~~
In file included from /opt/boost/1.73.0/include/boost/concept/assert.hpp:35,
                 from /opt/boost/1.73.0/include/boost/concept_check.hpp:20,
                 from /opt/boost/1.73.0/include/boost/range/concepts.hpp:19,
                 from /opt/boost/1.73.0/include/boost/range/size_type.hpp:20,
                 from /opt/boost/1.73.0/include/boost/range/adaptor/sliced.hpp:15,
                 from /opt/boost-crypto3/include/boost/crypto3/block/rijndael.hpp:13,
                 from /opt/boost-crypto3/include/boost/crypto3/block/aes.hpp:12,
                 from ../example.cpp:1:
/opt/boost/1.73.0/include/boost/concept/detail/general.hpp:71:5: error: no type named ‘type’ in ‘struct boost::range_iterator<const __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >, void>’
     &::boost::concepts::requirement_<ModelFnPtr>::failed>    \
     ^
/opt/boost/1.73.0/include/boost/concept/assert.hpp:43:5: note: in expansion of macro ‘BOOST_CONCEPT_ASSERT_FN’
     BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens)
     ^~~~~~~~~~~~~~~~~~~~~~~
/opt/boost/1.73.0/include/boost/range/concepts.hpp:104:45: note: in expansion of macro ‘BOOST_CONCEPT_ASSERT’
     #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x )
                                             ^~~~~~~~~~~~~~~~~~~~
/opt/boost/1.73.0/include/boost/range/concepts.hpp:278:9: note: in expansion of macro ‘BOOST_RANGE_CONCEPT_ASSERT’
         BOOST_RANGE_CONCEPT_ASSERT((
         ^~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/boost/1.73.0/include/boost/concept/detail/general.hpp:71:5: error: no type named ‘type’ in ‘struct boost::range_iterator<const __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >, void>’
     &::boost::concepts::requirement_<ModelFnPtr>::failed>    \
     ^
/opt/boost/1.73.0/include/boost/concept/assert.hpp:43:5: note: in expansion of macro ‘BOOST_CONCEPT_ASSERT_FN’
     BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens)
     ^~~~~~~~~~~~~~~~~~~~~~~
/opt/boost/1.73.0/include/boost/range/concepts.hpp:104:45: note: in expansion of macro ‘BOOST_CONCEPT_ASSERT’
     #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x )
                                             ^~~~~~~~~~~~~~~~~~~~
/opt/boost/1.73.0/include/boost/range/concepts.hpp:281:9: note: in expansion of macro ‘BOOST_RANGE_CONCEPT_ASSERT’
         BOOST_RANGE_CONCEPT_ASSERT((
         ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/boost-crypto3/include/boost/crypto3/block/algorithm/encrypt.hpp:21,
                 from ../example.cpp:2:
/opt/boost-crypto3/include/boost/crypto3/block/detail/key_value.hpp: In instantiation of ‘typename Cipher::key_type boost::crypto3::block::detail::key_value(const SinglePassRange&) [with Cipher = boost::crypto3::block::rijndael<128, 128>; SinglePassRange = __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >; typename Cipher::key_type = std::array<unsigned char, 16>]’:
/opt/boost-crypto3/include/boost/crypto3/block/algorithm/encrypt.hpp:277:99:   required from ‘OutputRange& boost::crypto3::encrypt(const SinglePassRange&, const KeyPassRange&, OutputRange&) [with BlockCipher = boost::crypto3::block::rijndael<128, 128>; SinglePassRange = __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >; KeyPassRange = __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >; OutputRange = std::__cxx11::basic_string<char>]’
../example.cpp:26:79:   required from here
/opt/boost-crypto3/include/boost/crypto3/block/detail/key_value.hpp:36:107: error: no type named ‘iterator’ in ‘class __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >’
                     typedef typename std::iterator_traits<typename SinglePassRange::iterator>::value_type value_type;
                                                                                                           ^~~~~~~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/key_value.hpp:50:31: error: no type named ‘iterator’ in ‘class __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >’
                     return key;
                               ^
/opt/boost-crypto3/include/boost/crypto3/block/detail/key_value.hpp:40:65: error: no type named ‘iterator’ in ‘class __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >’
                         std::numeric_limits<value_type>::digits + std::numeric_limits<value_type>::is_signed;
                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/key_value.hpp:40:65: error: no type named ‘iterator’ in ‘class __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >’
/opt/boost-crypto3/include/boost/crypto3/block/detail/key_value.hpp:47:100: error: ‘const class __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >’ has no member named ‘begin’
                     boost::crypto3::detail::pack_to<endian_type, value_bits, key_value_bits>(range.begin(), range.end(),
                                                                                              ~~~~~~^~~~~
/opt/boost-crypto3/include/boost/crypto3/block/detail/key_value.hpp:47:115: error: ‘const class __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >’ has no member named ‘end’
                     boost::crypto3::detail::pack_to<endian_type, value_bits, key_value_bits>(range.begin(), range.end(),
                                                                                                             ~~~~~~^~~

Am I missing some trivial step, or is it that this is still work in progress?

Best regards,
Eduardo

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions