randombit / botan

Cryptography Toolkit
https://botan.randombit.net
BSD 2-Clause "Simplified" License
2.52k stars 559 forks source link

Create CSR from PKCS11 GOST key #1897

Open gecheim opened 5 years ago

gecheim commented 5 years ago

Hello. Please tell me how you can get the CSR for the key that is stored in PKCS#11 HSM. In the library documentation I found the function Botan::X 509::create_cert_req, which should create CSR, as a key it takes the object Botan::Private_Key. With the help of the library I can get a key that has the type Botan::PKCS11::Object. Methods of casting Botan::PKCS11::Object to Botan::Private_Key in the documentation is not found. Prompt as it is possible to give these types of objects of a key, under condition of use of keys of the GOST format.

randombit commented 5 years ago

Some GOST specific integration work in the PKCS11 layer would had to be done, as in order to create the CSR we must be able to create a signature and export the encoded public key. See for example p11_ecdsa.{h,cpp} for the equivalent ECDSA specific code.

gecheim commented 5 years ago

Faced with the problem of reading the CKA_VALUE attribute from HSM, return code match to CKR_ATTRIBUTE_SENSITIVE. Can you advise in what direction to look further?

randombit commented 5 years ago

I think this means the private key is not exportable? But you should need to export the private key here, only the public key and perform a signature. @neusdan you know PKCS11 a lot better than I do any ideas?

neusdan commented 5 years ago

When the CKR_ATTRIBUTE_SENSITIVE is set for an object you are not allowed to export it. But as @randombit already said, it is not necessary to export the private key to create a CSR. I think this will only work for GOST if there is a new PKCS11 layer implemented similar to the ECDSA and RSA layers.

gecheim commented 5 years ago

I implemented a class that allows working with GOST3410 2001 PKCS#11 keys. However, I encountered a problem in the form of unstable parsing of CSR from DER to PKCS10_Request object. So did the methods of obtaining a CSR from DER. How can I add these changes to the library?

randombit commented 5 years ago

@gecheim Sorry for delay, I missed your last comment. But, I am not sure what you mean by "unstable parsing"?

gecheim commented 5 years ago

@randombit By "unstable parsing" I mean that DER structure is formed normally, it is correctly recognized by OpenSSL and CA "Инфотекс". However, the formation of the object PKCS10_Request error occurs. The following is the call stack for this error.

1 __cxa_throw 0x7ffff76bbce0 2 Botan::(anonymous namespace)::decode_length ber_dec.cpp 80 0x55555559695f 3 Botan::BER_Decoder::get_next_object ber_dec.cpp 256 0x55555559751e 4 Botan::BER_Decoder::start_cons ber_dec.cpp 292 0x55555559798a 5 Botan::PK_Verifier::check_signature pubkey.cpp 347 0x5555556a0321 6 Botan::PK_Verifier::verify_message pubkey.cpp 328 0x5555556a0210 7 Botan::PK_Verifier::verify_message<std::allocator<unsigned char>, std::allocator<unsigned char>> pubkey.h 344 0x555555605dc2 8 Botan::X509_Object::verify_signature x509_obj.cpp 249 0x555555604ce7 9 Botan::X509_Object::check_signature x509_obj.cpp 180 0x5555556046b5 10 Botan::X509_Object::check_signature x509_obj.cpp 175 0x5555556045f7 11 Botan::PKCS10_Request::force_decode pkcs10.cpp 208 0x5555555e44e6 12 Botan::X509_Object::decode_from x509_obj.cpp 117 0x555555603f89 13 Botan::X509_Object::load_data x509_obj.cpp 59 0x555555603862 14 Botan::PKCS10_Request::PKCS10_Request pkcs10.cpp 46 0x5555555e2f42 15 Botan::PKCS10_Request::create pkcs10.cpp 118 0x5555555e380a 16 Botan::X509::create_cert_req x509self.cpp 150 0x5555556125b1 17 main main.cpp 1212 0x55555558976c

Exception text: "Length field is too large"

randombit commented 5 years ago

@gecheim Interesting - can you post some code that reproduces this issue? I ask because the test suite currently creates CSRs and certificate chain for different algorithms including GOST, and there is no problem there.

gecheim commented 5 years ago

@randombit Source code mini-program, where the problem laid out here http://dpaste.com/3NPK5MF.

randombit commented 5 years ago

@gecheim Thanks. Unfortunately it looks like it is not possible for me to run this without having a smartcard with GOST support. [Addendum: I realized I can use SoftHSM for this.] But, I think I know the problem - it looks like this is failing during signature verification because DER parsing the signature generated by the card fails. But I just recently found that normally GOST signatures are not formatted in this way. This was fixed in #2055

Can you try your test again with latest master and see if that helps?

gecheim commented 5 years ago

Merged with commit "da860c261088e33aa6b434d6bf23ca4f0d51eb72" from master.

Test program continues to fail. Callstack

Thread 1 (Thread 0x7ffff7fda780 (LWP 3321)):
#0  0x00007ffff76bbce0 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#1  0x00005555555e1cee in Botan::to_u32bit (str=...) at /mnt/src/botan/src/lib/utils/parsing.cpp:43
        chrAsString = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffbca0 "P"}, _M_string_length = 1, {_M_local_buf = "P\000\275UUU\000\000@\275\377\377\377\177\000", _M_allocated_capacity = 93824999030864}}
        chr = 80 'P'
        __for_range = @0x7fffffffbd60: {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffbd70 "PKCS9"}, _M_string_length = 5, {_M_local_buf = "PKCS9\000\000\000п\377\377\377\177\000", _M_allocated_capacity = 246210054992}}
        __for_begin = {_M_current = 0x7fffffffbd70 "PKCS9"}
        __for_end = {_M_current = 0x7fffffffbd75 ""}
        x = 140737488338240
#2  0x0000555555592bcd in Botan::(anonymous namespace)::parse_oid_str (oid=...) at /mnt/src/botan/src/lib/asn1/asn1_oid.cpp:35
        c = 46 '.'
        __for_range = @0x7fffffffc040: {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x555555bda740 "PKCS9.EmailAddress"}, _M_string_length = 18, {_M_local_buf = "\022\000\000\000\000\000\000\000\064\024YUUU\000", _M_allocated_capacity = 18}}
        __for_begin = {_M_current = 0x555555bda745 ".EmailAddress"}
        __for_end = {_M_current = 0x555555bda752 ""}
        elem = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffbd70 "PKCS9"}, _M_string_length = 5, {_M_local_buf = "PKCS9\000\000\000п\377\377\377\177\000", _M_allocated_capacity = 246210054992}}
        oid_elems = {<std::_Vector_base<unsigned int, std::allocator<unsigned int> >> = {_M_impl = {<std::allocator<unsigned int>> = {<__gnu_cxx::new_allocator<unsigned int>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}
#3  0x0000555555592df0 in Botan::OID::from_string (str=...) at /mnt/src/botan/src/lib/asn1/asn1_oid.cpp:68
        raw = {<std::_Vector_base<unsigned int, std::allocator<unsigned int> >> = {_M_impl = {<std::allocator<unsigned int>> = {<__gnu_cxx::new_allocator<unsigned int>> = {<No data fields>}, <No data fields>}, _M_start = 0x7fffffffbde0, _M_finish = 0x55555559cae2 <std::__uniq_ptr_impl<Botan::DataSource, std::default_delete<Botan::DataSource> >::_M_ptr() const+24>, _M_end_of_storage = 0x555555bd8510}}, <No data fields>}
        o = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x7fffffffbe00}, m_id = {<std::_Vector_base<unsigned int, std::allocator<unsigned int> >> = {_M_impl = {<std::allocator<unsigned int>> = {<__gnu_cxx::new_allocator<unsigned int>> = {<No data fields>}, <No data fields>}, _M_start = 0x55555559c414 <std::unique_ptr<Botan::DataSource, std::default_delete<Botan::DataSource> >::get() const+24>, _M_finish = 0x0, _M_end_of_storage = 0x13}}, <No data fields>}}
#4  0x00005555555e5bd7 in Botan::(anonymous namespace)::decode_pkcs10 (body=...) at /mnt/src/botan/src/lib/x509/pkcs10.cpp:161
        attr = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b343e8 <vtable for Botan::Attribute+16>}, oid = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b331c0 <vtable for Botan::OID+16>}, m_id = {<std::_Vector_base<unsigned int, std::allocator<unsigned int> >> = {_M_impl = {<std::allocator<unsigned int>> = {<__gnu_cxx::new_allocator<unsigned int>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555be0070, _M_finish = 0x555555be008c, _M_end_of_storage = 0x555555be0090}}, <No data fields>}}, parameters = {<std::_Vector_base<unsigned char, std::allocator<unsigned char> >> = {_M_impl = {<std::allocator<unsigned char>> = {<__gnu_cxx::new_allocator<unsigned char>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555bd8510 "0 0\t\006\003U\035\023\004\002\060", _M_finish = 0x555555bd8532 "\341\376Bw=\237\211s\332[`\356٬E!\327œ3x\212\260\373\207\060\352\266\352\344\240\177\275UUU", _M_end_of_storage = 0x555555bd8550 "\240\177\275UUU"}}, <No data fields>}}
        oid = @0x7fffffffbfe8: {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b331c0 <vtable for Botan::OID+16>}, m_id = {<std::_Vector_base<unsigned int, std::allocator<unsigned int> >> = {_M_impl = {<std::allocator<unsigned int>> = {<__gnu_cxx::new_allocator<unsigned int>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555be0070, _M_finish = 0x555555be008c, _M_end_of_storage = 0x555555be0090}}, <No data fields>}}
        value = {m_parent = 0x0, m_pushed = {type_tag = Botan::NO_OBJECT, class_tag = Botan::UNIVERSAL, value = {<std::_Vector_base<unsigned char, Botan::secure_allocator<unsigned char> >> = {_M_impl = {<Botan::secure_allocator<unsigned char>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}}, m_source = 0x555555be0040, m_data_src = {_M_t = {_M_t = {<std::_Tuple_impl<0, Botan::DataSource*, std::default_delete<Botan::DataSource> >> = {<std::_Tuple_impl<1, std::default_delete<Botan::DataSource> >> = {<std::_Head_base<1, std::default_delete<Botan::DataSource>, true>> = {<std::default_delete<Botan::DataSource>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, Botan::DataSource*, false>> = {_M_head_impl = 0x555555be0040}, <No data fields>}, <No data fields>}}}}
        attributes = {m_parent = 0x0, m_pushed = {type_tag = Botan::NO_OBJECT, class_tag = Botan::UNIVERSAL, value = {<std::_Vector_base<unsigned char, Botan::secure_allocator<unsigned char> >> = {_M_impl = {<Botan::secure_allocator<unsigned char>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}}, m_source = 0x555555bdfa60, m_data_src = {_M_t = {_M_t = {<std::_Tuple_impl<0, Botan::DataSource*, std::default_delete<Botan::DataSource> >> = {<std::_Tuple_impl<1, std::default_delete<Botan::DataSource> >> = {<std::_Head_base<1, std::default_delete<Botan::DataSource>, true>> = {<std::default_delete<Botan::DataSource>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, Botan::DataSource*, false>> = {_M_head_impl = 0x555555bdfa60}, <No data fields>}, <No data fields>}}}}
        data = {_M_t = {_M_t = {<std::_Tuple_impl<0, Botan::PKCS10_Data*, std::default_delete<Botan::PKCS10_Data> >> = {<std::_Tuple_impl<1, std::default_delete<Botan::PKCS10_Data> >> = {<std::_Head_base<1, std::default_delete<Botan::PKCS10_Data>, true>> = {<std::default_delete<Botan::PKCS10_Data>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, Botan::PKCS10_Data*, false>> = {_M_head_impl = 0x555555b93640}, <No data fields>}, <No data fields>}}}
        cert_req_info = {m_parent = 0x0, m_pushed = {type_tag = Botan::NO_OBJECT, class_tag = Botan::UNIVERSAL, value = {<std::_Vector_base<unsigned char, Botan::secure_allocator<unsigned char> >> = {_M_impl = {<Botan::secure_allocator<unsigned char>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}}, m_source = 0x555555be0100, m_data_src = {_M_t = {_M_t = {<std::_Tuple_impl<0, Botan::DataSource*, std::default_delete<Botan::DataSource> >> = {<std::_Tuple_impl<1, std::default_delete<Botan::DataSource> >> = {<std::_Head_base<1, std::default_delete<Botan::DataSource>, true>> = {<std::default_delete<Botan::DataSource>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, Botan::DataSource*, false>> = {_M_head_impl = 0x555555be0100}, <No data fields>}, <No data fields>}}}}
        version = 0
        public_key = {type_tag = Botan::SEQUENCE, class_tag = Botan::CONSTRUCTED, value = {<std::_Vector_base<unsigned char, Botan::secure_allocator<unsigned char> >> = {_M_impl = {<Botan::secure_allocator<unsigned char>> = {<No data fields>}, _M_start = 0x7ffff7f2c000 "0\034\006\006*\205\003\002\002\023\060\022\006\a*\205\003\002\002#\001\006\a*\205\003\002\002\036\001\003C", _M_finish = 0x7ffff7f2c063 "", _M_end_of_storage = 0x7ffff7f2c063 ""}}, <No data fields>}}
        attr_bits = {type_tag = Botan::UNIVERSAL, class_tag = Botan::PRIVATE, value = {<std::_Vector_base<unsigned char, Botan::secure_allocator<unsigned char> >> = {_M_impl = {<Botan::secure_allocator<unsigned char>> = {<No data fields>}, _M_start = 0x7ffff7fe90c0 "0/\006\t*\206H\206\367\r\001\t\016\061\"0 0\t\006\003U\035\023\004\002\060", _M_finish = 0x7ffff7fe90f1 "", _M_end_of_storage = 0x7ffff7fe90f1 ""}}, <No data fields>}}
        pkcs9_email = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<No data fields>}, <No data fields>}, <std::_Rb_tree_key_compare<std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_key_compare = {<std::binary_function<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}}, <std::_Rb_tree_header> = {_M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x7fffffffbef8, _M_right = 0x7fffffffbef8}, _M_node_count = 0}, <No data fields>}}}
#5  0x00005555555e64be in Botan::PKCS10_Request::force_decode (this=0x7fffffffc6c0) at /mnt/src/botan/src/lib/x509/pkcs10.cpp:204
        data = {_M_t = {_M_t = {<std::_Tuple_impl<0, Botan::PKCS10_Data*, std::default_delete<Botan::PKCS10_Data> >> = {<std::_Tuple_impl<1, std::default_delete<Botan::PKCS10_Data> >> = {<std::_Head_base<1, std::default_delete<Botan::PKCS10_Data>, true>> = {<std::default_delete<Botan::PKCS10_Data>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, Botan::PKCS10_Data*, false>> = {_M_head_impl = 0x555555b93640}, <No data fields>}, <No data fields>}}}
#6  0x000055555560598d in Botan::X509_Object::decode_from (this=0x7fffffffc6c0, from=...) at /mnt/src/botan/src/lib/x509/x509_obj.cpp:116
No locals.
#7  0x0000555555605266 in Botan::X509_Object::load_data (this=0x7fffffffc6c0, in=...) at /mnt/src/botan/src/lib/x509/x509_obj.cpp:58
        dec = {m_parent = 0x0, m_pushed = {type_tag = Botan::NO_OBJECT, class_tag = Botan::UNIVERSAL, value = {<std::_Vector_base<unsigned char, Botan::secure_allocator<unsigned char> >> = {_M_impl = {<Botan::secure_allocator<unsigned char>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}}, m_source = 0x7fffffffc380, m_data_src = {_M_t = {_M_t = {<std::_Tuple_impl<0, Botan::DataSource*, std::default_delete<Botan::DataSource> >> = {<std::_Tuple_impl<1, std::default_delete<Botan::DataSource> >> = {<std::_Head_base<1, std::default_delete<Botan::DataSource>, true>> = {<std::default_delete<Botan::DataSource>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, Botan::DataSource*, false>> = {_M_head_impl = 0x0}, <No data fields>}, <No data fields>}}}}
#8  0x00005555555e4f58 in Botan::PKCS10_Request::PKCS10_Request (this=0x7fffffffc6c0, vec=...) at /mnt/src/botan/src/lib/x509/pkcs10.cpp:46
        src = {<Botan::DataSource> = {_vptr.DataSource = 0x555555b33a00 <vtable for Botan::DataSource_Memory+16>}, m_source = {<std::_Vector_base<unsigned char, Botan::secure_allocator<unsigned char> >> = {_M_impl = {<Botan::secure_allocator<unsigned char>> = {<No data fields>}, _M_start = 0x7ffff7ff5000 "0\201\375\060\201\255\002\001", _M_finish = 0x7ffff7ff5100 "", _M_end_of_storage = 0x7ffff7ff5100 ""}}, <No data fields>}, m_offset = 256}
        src = <optimized out>
#9  0x00005555555e581c in Botan::PKCS10_Request::create (key=..., subject_dn=..., extensions=..., hash_fn=..., rng=..., padding_scheme=..., challenge=...) at /mnt/src/botan/src/lib/x509/pkcs10.cpp:118
No locals.
#10 0x0000555555614014 in Botan::X509::create_cert_req (opts=..., key=..., hash_fn=..., rng=...) at /mnt/src/botan/src/lib/x509/x509self.cpp:154
        subject_dn = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b33d18 <vtable for Botan::X509_DN+16>}, m_rdn = {<std::_Vector_base<std::pair<Botan::OID, Botan::ASN1_String>, std::allocator<std::pair<Botan::OID, Botan::ASN1_String> > >> = {_M_impl = {<std::allocator<std::pair<Botan::OID, Botan::ASN1_String> >> = {<__gnu_cxx::new_allocator<std::pair<Botan::OID, Botan::ASN1_String> >> = {<No data fields>}, <No data fields>}, _M_start = 0x555555bd3b20, _M_finish = 0x555555bd3b88, _M_end_of_storage = 0x555555bd3b88}}, <No data fields>}, m_dn_bits = {<std::_Vector_base<unsigned char, std::allocator<unsigned char> >> = {_M_impl = {<std::allocator<unsigned char>> = {<__gnu_cxx::new_allocator<unsigned char>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}}
        extensions = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b34380 <vtable for Botan::Extensions+16>}, m_extension_oids = {<std::_Vector_base<Botan::OID, std::allocator<Botan::OID> >> = {_M_impl = {<std::allocator<Botan::OID>> = {<__gnu_cxx::new_allocator<Botan::OID>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555bd9f50, _M_finish = 0x555555bd9fb0, _M_end_of_storage = 0x555555bd9fd0}}, <No data fields>}, m_extension_info = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<Botan::OID const, Botan::Extensions::Extensions_Info> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<Botan::OID const, Botan::Extensions::Extensions_Info> > >> = {<No data fields>}, <No data fields>}, <std::_Rb_tree_key_compare<std::less<Botan::OID> >> = {_M_key_compare = {<std::binary_function<Botan::OID, Botan::OID, bool>> = {<No data fields>}, <No data fields>}}, <std::_Rb_tree_header> = {_M_header = {_M_color = std::_S_red, _M_parent = 0x555555bdb210, _M_left = 0x555555bd74f0, _M_right = 0x555555bd7400}, _M_node_count = 3}, <No data fields>}}}}
#11 0x000055555558a6cc in main (argc=2, argv=0x7fffffffe398) at ../csr/main.cpp:1208
        pubKey = {<Botan::GOST_3410_PublicKey> = {<Botan::EC_PublicKey> = {<Botan::Public_Key> = {_vptr.Public_Key = 0x555555b37e28 <vtable for Botan::PKCS11::PKCS11_GOST_PublicKey+144>}, m_domain_params = {m_data = {<std::__shared_ptr<Botan::EC_Group_Data, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Botan::EC_Group_Data, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x555555c0dff0, _M_refcount = {_M_pi = 0x555555c0dfe0}}, <No data fields>}}, m_public_key = {m_curve = {m_repr = {<std::__shared_ptr<Botan::CurveGFp_Repr, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Botan::CurveGFp_Repr, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x0, _M_refcount = {_M_pi = 0x0}}, <No data fields>}}, m_coord_x = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}, m_coord_y = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}, m_coord_z = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}}, m_domain_encoding = Botan::EC_DOMPAR_ENC_EXPLICIT, m_point_encoding = Botan::PointGFp::UNCOMPRESSED}, <No data fields>}, <Botan::PKCS11::Object> = {_vptr.Object = 0x555555b37eb0 <vtable for Botan::PKCS11::PKCS11_GOST_PublicKey+280>, m_session = {<std::_Reference_wrapper_base<Botan::PKCS11::Session>> = {<std::_Weak_result_type<Botan::PKCS11::Session>> = {<std::_Weak_result_type_impl<Botan::PKCS11::Session>> = {<std::_Maybe_get_result_type<Botan::PKCS11::Session, void>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Refwrap_base_arg1<Botan::PKCS11::Session, void>> = {<No data fields>}, <std::_Refwrap_base_arg2<Botan::PKCS11::Session, void>> = {<No data fields>}, <No data fields>}, _M_data = 0x7fffffffc610}, m_handle = 2}, <No data fields>}
        opts = {common_name = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcc90 "medex"}, _M_string_length = 5, {_M_local_buf = "medex\000\000\000P\002\000\000\000\000\000", _M_allocated_capacity = 517097153901}}, country = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffccb0 ""}, _M_string_length = 0, {_M_local_buf = "\000\002\000\000\000\000\000\000!\002\000\000\000\000\000", _M_allocated_capacity = 512}}, organization = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffccd0 ""}, _M_string_length = 0, {_M_local_buf = "\000\002\000\000\000\000\000\000q\002\000\000\000\000\000", _M_allocated_capacity = 512}}, org_unit = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffccf0 ""}, _M_string_length = 0, {_M_local_buf = "\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000", _M_allocated_capacity = 0}}, more_org_units = {<std::_Vector_base<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> > > >> = {_M_impl = {<std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, locality = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcd28 ""}, _M_string_length = 0, {_M_local_buf = "\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000", _M_allocated_capacity = 0}}, state = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcd48 ""}, _M_string_length = 0, {_M_local_buf = "\000\000\000\000\000\000\000\000E\000\000\000\000\000\000", _M_allocated_capacity = 0}}, serial_number = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcd68 ""}, _M_string_length = 0, {_M_local_buf = "\000\001\000\000\000\000\000\000!\001\000\000\000\000\000", _M_allocated_capacity = 256}}, email = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcd88 ""}, _M_string_length = 0, {_M_local_buf = "\000\021\000\000\000\000\000\000\001\021\000\000\000\000\000", _M_allocated_capacity = 4352}}, uri = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcda8 ""}, _M_string_length = 0, {_M_local_buf = "\000\001\000\000\000\000\000\000\002\021\000\000\000\000\000", _M_allocated_capacity = 256}}, ip = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcdc8 ""}, _M_string_length = 0, {_M_local_buf = "\000\020\000\000\000\000\000\000\202\020\000\000\000\000\000", _M_allocated_capacity = 4096}}, dns = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcde8 ""}, _M_string_length = 0, {_M_local_buf = "\000!\000\000\000\000\000\000\004\021\000\000\000\000\000", _M_allocated_capacity = 8448}}, more_dns = {<std::_Vector_base<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> > > >> = {_M_impl = {<std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, xmpp = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffce20 ""}, _M_string_length = 0, {_M_local_buf = "\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000", _M_allocated_capacity = 0}}, challenge = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffce40 ""}, _M_string_length = 0, {_M_local_buf = "\000\000\000\000\000\000\000\000\001 \000\000\000\000\000", _M_allocated_capacity = 0}}, start = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b333b0 <vtable for Botan::X509_Time+16>}, m_year = 2019, m_month = 8, m_day = 16, m_hour = 10, m_minute = 5, m_second = 3, m_tag = Botan::UTC_TIME}, end = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b333b0 <vtable for Botan::X509_Time+16>}, m_year = 2020, m_month = 8, m_day = 15, m_hour = 10, m_minute = 5, m_second = 3, m_tag = Botan::UTC_TIME}, is_CA = false, path_limit = 0, padding_scheme = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcec0 ""}, _M_string_length = 0, {_M_local_buf = "\000ЇUUU\000\000\n\000\000\000\000\000\000", _M_allocated_capacity = 93824995545088}}, constraints = Botan::NO_CONSTRAINTS, ex_constraints = {<std::_Vector_base<Botan::OID, std::allocator<Botan::OID> >> = {_M_impl = {<std::allocator<Botan::OID>> = {<__gnu_cxx::new_allocator<Botan::OID>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, extensions = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b34380 <vtable for Botan::Extensions+16>}, m_extension_oids = {<std::_Vector_base<Botan::OID, std::allocator<Botan::OID> >> = {_M_impl = {<std::allocator<Botan::OID>> = {<__gnu_cxx::new_allocator<Botan::OID>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555bf9220, _M_finish = 0x555555bf9240, _M_end_of_storage = 0x555555bf9240}}, <No data fields>}, m_extension_info = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<Botan::OID const, Botan::Extensions::Extensions_Info> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<Botan::OID const, Botan::Extensions::Extensions_Info> > >> = {<No data fields>}, <No data fields>}, <std::_Rb_tree_key_compare<std::less<Botan::OID> >> = {_M_key_compare = {<std::binary_function<Botan::OID, Botan::OID, bool>> = {<No data fields>}, <No data fields>}}, <std::_Rb_tree_header> = {_M_header = {_M_color = std::_S_red, _M_parent = 0x555555bdb810, _M_left = 0x555555bdb810, _M_right = 0x555555bdb810}, _M_node_count = 1}, <No data fields>}}}}}
        rng = {<Botan::Hardware_RNG> = {<Botan::RandomNumberGenerator> = {_vptr.RandomNumberGenerator = 0x555555b395d0 <vtable for Botan::PKCS11::PKCS11_RNG+16>}, <No data fields>}, m_session = {<std::_Reference_wrapper_base<Botan::PKCS11::Session>> = {<std::_Weak_result_type<Botan::PKCS11::Session>> = {<std::_Weak_result_type_impl<Botan::PKCS11::Session>> = {<std::_Maybe_get_result_type<Botan::PKCS11::Session, void>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Refwrap_base_arg1<Botan::PKCS11::Session, void>> = {<No data fields>}, <std::_Refwrap_base_arg2<Botan::PKCS11::Session, void>> = {<No data fields>}, <No data fields>}, _M_data = 0x7fffffffc610}}
        req_src = {<std::_Vector_base<unsigned char, std::allocator<unsigned char> >> = {_M_impl = {<std::allocator<unsigned char>> = {<__gnu_cxx::new_allocator<unsigned char>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}
        privKey = {<Botan::GOST_3410_PrivateKey> = {<Botan::GOST_3410_PublicKey> = {<Botan::EC_PublicKey> = {<Botan::Public_Key> = {_vptr.Public_Key = 0x555555b38458 <vtable for Botan::PKCS11::PKCS11_GOST_PrivateKey+152>}, m_domain_params = {m_data = {<std::__shared_ptr<Botan::EC_Group_Data, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Botan::EC_Group_Data, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x555555bf83e0, _M_refcount = {_M_pi = 0x555555bf83d0}}, <No data fields>}}, m_public_key = {m_curve = {m_repr = {<std::__shared_ptr<Botan::CurveGFp_Repr, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Botan::CurveGFp_Repr, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x0, _M_refcount = {_M_pi = 0x0}}, <No data fields>}}, m_coord_x = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}, m_coord_y = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}, m_coord_z = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}}, m_domain_encoding = Botan::EC_DOMPAR_ENC_EXPLICIT, m_point_encoding = Botan::PointGFp::UNCOMPRESSED}, <No data fields>}, <Botan::EC_PrivateKey> = {<Botan::Private_Key> = {<No data fields>}, m_private_key = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}}, <No data fields>}, <Botan::PKCS11::Object> = {_vptr.Object = 0x555555b38660 <vtable for Botan::PKCS11::PKCS11_GOST_PrivateKey+672>, m_session = {<std::_Reference_wrapper_base<Botan::PKCS11::Session>> = {<std::_Weak_result_type<Botan::PKCS11::Session>> = {<std::_Weak_result_type_impl<Botan::PKCS11::Session>> = {<std::_Maybe_get_result_type<Botan::PKCS11::Session, void>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Refwrap_base_arg1<Botan::PKCS11::Session, void>> = {<No data fields>}, <std::_Refwrap_base_arg2<Botan::PKCS11::Session, void>> = {<No data fields>}, <No data fields>}, _M_data = 0x7fffffffc610}, m_handle = 3}, m_public_key = 0x7fffffffc750}
        output = <incomplete type>
        req = <error reading variable>
        module = {m_file_path = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x555555b67f00 "/usr/lib/softhsm/libsofthsm2.so"}, _M_string_length = 31, {_M_local_buf = "\037\000\000\000\000\000\000\000\n\000\000\000\000\000\000", _M_allocated_capacity = 31}}, m_func_list = 0x7ffff6c81a20 <functionList>, m_library = {_M_t = {_M_t = {<std::_Tuple_impl<0, Botan::Dynamically_Loaded_Library*, std::default_delete<Botan::Dynamically_Loaded_Library> >> = {<std::_Tuple_impl<1, std::default_delete<Botan::Dynamically_Loaded_Library> >> = {<std::_Head_base<1, std::default_delete<Botan::Dynamically_Loaded_Library>, true>> = {<std::default_delete<Botan::Dynamically_Loaded_Library>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, Botan::Dynamically_Loaded_Library*, false>> = {_M_head_impl = 0x555555b67f60}, <No data fields>}, <No data fields>}}}, m_low_level = {_M_t = {_M_t = {<std::_Tuple_impl<0, Botan::PKCS11::LowLevel*, std::default_delete<Botan::PKCS11::LowLevel> >> = {<std::_Tuple_impl<1, std::default_delete<Botan::PKCS11::LowLevel> >> = {<std::_Head_base<1, std::default_delete<Botan::PKCS11::LowLevel>, true>> = {<std::default_delete<Botan::PKCS11::LowLevel>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, Botan::PKCS11::LowLevel*, false>> = {_M_head_impl = 0x555555b680d0}, <No data fields>}, <No data fields>}}}}
        session = {m_slot = @0x7fffffffc5d0, m_handle = 1, m_logged_in = true}
        pin_raw = "11111111\000\000\000\000\000\000\000"
        key_id_raw = "testGOST", '\000' <repeats 1591 times>
        keyId = {<std::_Vector_base<unsigned char, std::allocator<unsigned char> >> = {_M_impl = {<std::allocator<unsigned char>> = {<__gnu_cxx::new_allocator<unsigned char>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555bb9bc0 "testGOST", _M_finish = 0x555555bb9bc8 "", _M_end_of_storage = 0x555555bb9bc8 ""}}, <No data fields>}
        publicHandle = 2
        privateHandle = 3
        slotId = 848871332
        slot = {m_module = {<std::_Reference_wrapper_base<Botan::PKCS11::Module>> = {<std::_Weak_result_type<Botan::PKCS11::Module>> = {<std::_Weak_result_type_impl<Botan::PKCS11::Module>> = {<std::_Maybe_get_result_type<Botan::PKCS11::Module, void>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Refwrap_base_arg1<Botan::PKCS11::Module, void>> = {<No data fields>}, <std::_Refwrap_base_arg2<Botan::PKCS11::Module, void>> = {<No data fields>}, <No data fields>}, _M_data = 0x7fffffffc940}, m_slot_id = 848871332}
        pin = {<std::_Vector_base<unsigned char, Botan::secure_allocator<unsigned char> >> = {_M_impl = {<Botan::secure_allocator<unsigned char>> = {<No data fields>}, _M_start = 0x555555bd3a60 "11111111", _M_finish = 0x555555bd3a68 "", _M_end_of_storage = 0x555555bd3a68 ""}}, <No data fields>}
        publicKeyProperty = {<Botan::PKCS11::KeyProperties> = {<Botan::PKCS11::StorageObjectProperties> = {<Botan::PKCS11::ObjectProperties> = {<Botan::PKCS11::AttributeContainer> = {_vptr.AttributeContainer = 0x555555b379c0 <vtable for Botan::PKCS11::PublicKeyProperties+16>, m_attributes = {<std::_Vector_base<CK_ATTRIBUTE, std::allocator<CK_ATTRIBUTE> >> = {_M_impl = {<std::allocator<CK_ATTRIBUTE>> = {<__gnu_cxx::new_allocator<CK_ATTRIBUTE>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555b85d90, _M_finish = 0x555555b85dd8, _M_end_of_storage = 0x555555b85df0}}, <No data fields>}, m_numerics = {<std::__cxx11::_List_base<unsigned long, std::allocator<unsigned long> >> = {_M_impl = {<std::allocator<std::_List_node<unsigned long> >> = {<__gnu_cxx::new_allocator<std::_List_node<unsigned long> >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {_M_next = 0x555555bd4080, _M_prev = 0x555555c01340}, _M_storage = {_M_storage = "\002\000\000\000\000\000\000"}}}}, <No data fields>}, m_strings = {<std::__cxx11::_List_base<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> > > >> = {_M_impl = {<std::allocator<std::_List_node<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<__gnu_cxx::new_allocator<std::_List_node<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {_M_next = 0x7fffffffca38, _M_prev = 0x7fffffffca38}, _M_storage = {_M_storage = "\000\000\000\000\000\000\000"}}}}, <No data fields>}, m_vectors = {<std::__cxx11::_List_base<std::vector<unsigned char, Botan::secure_allocator<unsigned char> >, std::allocator<std::vector<unsigned char, Botan::secure_allocator<unsigned char> > > >> = {_M_impl = {<std::allocator<std::_List_node<std::vector<unsigned char, Botan::secure_allocator<unsigned char> > > >> = {<__gnu_cxx::new_allocator<std::_List_node<std::vector<unsigned char, Botan::secure_allocator<unsigned char> > > >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {_M_next = 0x555555c01690, _M_prev = 0x555555c01690}, _M_storage = {_M_storage = "\001\000\000\000\000\000\000"}}}}, <No data fields>}}, m_object_class = Botan::PKCS11::ObjectClass::PublicKey}, <No data fields>}, m_key_type = Botan::PKCS11::KeyType::Gostr3410}, <No data fields>}
        privateKeyProperty = {<Botan::PKCS11::KeyProperties> = {<Botan::PKCS11::StorageObjectProperties> = {<Botan::PKCS11::ObjectProperties> = {<Botan::PKCS11::AttributeContainer> = {_vptr.AttributeContainer = 0x555555b379a0 <vtable for Botan::PKCS11::PrivateKeyProperties+16>, m_attributes = {<std::_Vector_base<CK_ATTRIBUTE, std::allocator<CK_ATTRIBUTE> >> = {_M_impl = {<std::allocator<CK_ATTRIBUTE>> = {<__gnu_cxx::new_allocator<CK_ATTRIBUTE>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555bd7bc0, _M_finish = 0x555555bd7c08, _M_end_of_storage = 0x555555bd7c20}}, <No data fields>}, m_numerics = {<std::__cxx11::_List_base<unsigned long, std::allocator<unsigned long> >> = {_M_impl = {<std::allocator<std::_List_node<unsigned long> >> = {<__gnu_cxx::new_allocator<std::_List_node<unsigned long> >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {_M_next = 0x555555c01360, _M_prev = 0x555555c01320}, _M_storage = {_M_storage = "\002\000\000\000\000\000\000"}}}}, <No data fields>}, m_strings = {<std::__cxx11::_List_base<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> > > >> = {_M_impl = {<std::allocator<std::_List_node<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<__gnu_cxx::new_allocator<std::_List_node<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {_M_next = 0x7fffffffc9b8, _M_prev = 0x7fffffffc9b8}, _M_storage = {_M_storage = "\000\000\000\000\000\000\000"}}}}, <No data fields>}, m_vectors = {<std::__cxx11::_List_base<std::vector<unsigned char, Botan::secure_allocator<unsigned char> >, std::allocator<std::vector<unsigned char, Botan::secure_allocator<unsigned char> > > >> = {_M_impl = {<std::allocator<std::_List_node<std::vector<unsigned char, Botan::secure_allocator<unsigned char> > > >> = {<__gnu_cxx::new_allocator<std::_List_node<std::vector<unsigned char, Botan::secure_allocator<unsigned char> > > >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {_M_next = 0x555555bd78c0, _M_prev = 0x555555bd78c0}, _M_storage = {_M_storage = "\001\000\000\000\000\000\000"}}}}, <No data fields>}}, m_object_class = Botan::PKCS11::ObjectClass::PrivateKey}, <No data fields>}, m_key_type = Botan::PKCS11::KeyType::Gostr3410}, <No data fields>}
        library = 0x555555837900 <LIBRARY_PATH> "/usr/lib/softhsm/libsofthsm2.so"
        genKey = true
randombit commented 5 years ago

I think the above throw is immediately caught and then another codepath is attempted, so is not indicative of the problem. [Just changed in 2db314bb to avoid this catch/throw.]

gecheim commented 5 years ago

Merge with commit 435a246. Test program continues to fail. Callstack


Thread 1 (Thread 0x7ffff7fda780 (LWP 18752)):
#0  0x00007ffff76bbce0 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#1  0x00005555555e6b64 in Botan::PKCS10_Request::force_decode (this=0x7fffffffc6c0) at /mnt/src/botan/src/lib/x509/pkcs10.cpp:209
        data = {_M_t = {_M_t = {<std::_Tuple_impl<0, Botan::PKCS10_Data*, std::default_delete<Botan::PKCS10_Data> >> = {<std::_Tuple_impl<1, std::default_delete<Botan::PKCS10_Data> >> = {<std::_Head_base<1, std::default_delete<Botan::PKCS10_Data>, true>> = {<std::default_delete<Botan::PKCS10_Data>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, Botan::PKCS10_Data*, false>> = {_M_head_impl = 0x0}, <No data fields>}, <No data fields>}}}
#2  0x0000555555605f85 in Botan::X509_Object::decode_from (this=0x7fffffffc6c0, from=...) at /mnt/src/botan/src/lib/x509/x509_obj.cpp:116
No locals.
#3  0x000055555560585e in Botan::X509_Object::load_data (this=0x7fffffffc6c0, in=...) at /mnt/src/botan/src/lib/x509/x509_obj.cpp:58
        dec = {m_parent = 0x0, m_pushed = {type_tag = Botan::NO_OBJECT, class_tag = Botan::UNIVERSAL, value = {<std::_Vector_base<unsigned char, Botan::secure_allocator<unsigned char> >> = {_M_impl = {<Botan::secure_allocator<unsigned char>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}}, m_source = 0x7fffffffc380, m_data_src = {_M_t = {_M_t = {<std::_Tuple_impl<0, Botan::DataSource*, std::default_delete<Botan::DataSource> >> = {<std::_Tuple_impl<1, std::default_delete<Botan::DataSource> >> = {<std::_Head_base<1, std::default_delete<Botan::DataSource>, true>> = {<std::default_delete<Botan::DataSource>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, Botan::DataSource*, false>> = {_M_head_impl = 0x0}, <No data fields>}, <No data fields>}}}}
#4  0x00005555555e5550 in Botan::PKCS10_Request::PKCS10_Request (this=0x7fffffffc6c0, vec=...) at /mnt/src/botan/src/lib/x509/pkcs10.cpp:46
        src = {<Botan::DataSource> = {_vptr.DataSource = 0x555555b35740 <vtable for Botan::DataSource_Memory+16>}, m_source = {<std::_Vector_base<unsigned char, Botan::secure_allocator<unsigned char> >> = {_M_impl = {<Botan::secure_allocator<unsigned char>> = {<No data fields>}, _M_start = 0x7ffff7ff5000 "0\201\375\060\201\255\002\001", _M_finish = 0x7ffff7ff5100 "", _M_end_of_storage = 0x7ffff7ff5100 ""}}, <No data fields>}, m_offset = 256}
        src = <optimized out>
#5  0x00005555555e5e14 in Botan::PKCS10_Request::create (key=..., subject_dn=..., extensions=..., hash_fn=..., rng=..., padding_scheme=..., challenge=...) at /mnt/src/botan/src/lib/x509/pkcs10.cpp:118
No locals.
#6  0x000055555561460c in Botan::X509::create_cert_req (opts=..., key=..., hash_fn=..., rng=...) at /mnt/src/botan/src/lib/x509/x509self.cpp:154
        subject_dn = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b35a58 <vtable for Botan::X509_DN+16>}, m_rdn = {<std::_Vector_base<std::pair<Botan::OID, Botan::ASN1_String>, std::allocator<std::pair<Botan::OID, Botan::ASN1_String> > >> = {_M_impl = {<std::allocator<std::pair<Botan::OID, Botan::ASN1_String> >> = {<__gnu_cxx::new_allocator<std::pair<Botan::OID, Botan::ASN1_String> >> = {<No data fields>}, <No data fields>}, _M_start = 0x555555beabd0, _M_finish = 0x555555beac38, _M_end_of_storage = 0x555555beac38}}, <No data fields>}, m_dn_bits = {<std::_Vector_base<unsigned char, std::allocator<unsigned char> >> = {_M_impl = {<std::allocator<unsigned char>> = {<__gnu_cxx::new_allocator<unsigned char>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}}
        extensions = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b360c0 <vtable for Botan::Extensions+16>}, m_extension_oids = {<std::_Vector_base<Botan::OID, std::allocator<Botan::OID> >> = {_M_impl = {<std::allocator<Botan::OID>> = {<__gnu_cxx::new_allocator<Botan::OID>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555b8bc10, _M_finish = 0x555555b8bc70, _M_end_of_storage = 0x555555b8bc90}}, <No data fields>}, m_extension_info = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<Botan::OID const, Botan::Extensions::Extensions_Info> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<Botan::OID const, Botan::Extensions::Extensions_Info> > >> = {<No data fields>}, <No data fields>}, <std::_Rb_tree_key_compare<std::less<Botan::OID> >> = {_M_key_compare = {<std::binary_function<Botan::OID, Botan::OID, bool>> = {<No data fields>}, <No data fields>}}, <std::_Rb_tree_header> = {_M_header = {_M_color = std::_S_red, _M_parent = 0x555555c0d280, _M_left = 0x555555c0cf20, _M_right = 0x555555beac40}, _M_node_count = 3}, <No data fields>}}}}
#7  0x000055555558abdc in main (argc=2, argv=0x7fffffffe398) at ../csr/main.cpp:1208
        pubKey = {<Botan::GOST_3410_PublicKey> = {<Botan::EC_PublicKey> = {<Botan::Public_Key> = {_vptr.Public_Key = 0x555555b39b68 <vtable for Botan::PKCS11::PKCS11_GOST_PublicKey+144>}, m_domain_params = {m_data = {<std::__shared_ptr<Botan::EC_Group_Data, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Botan::EC_Group_Data, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x555555c0b6f0, _M_refcount = {_M_pi = 0x555555c0b6e0}}, <No data fields>}}, m_public_key = {m_curve = {m_repr = {<std::__shared_ptr<Botan::CurveGFp_Repr, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Botan::CurveGFp_Repr, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x0, _M_refcount = {_M_pi = 0x0}}, <No data fields>}}, m_coord_x = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}, m_coord_y = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}, m_coord_z = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}}, m_domain_encoding = Botan::EC_DOMPAR_ENC_EXPLICIT, m_point_encoding = Botan::PointGFp::UNCOMPRESSED}, <No data fields>}, <Botan::PKCS11::Object> = {_vptr.Object = 0x555555b39bf0 <vtable for Botan::PKCS11::PKCS11_GOST_PublicKey+280>, m_session = {<std::_Reference_wrapper_base<Botan::PKCS11::Session>> = {<std::_Weak_result_type<Botan::PKCS11::Session>> = {<std::_Weak_result_type_impl<Botan::PKCS11::Session>> = {<std::_Maybe_get_result_type<Botan::PKCS11::Session, void>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Refwrap_base_arg1<Botan::PKCS11::Session, void>> = {<No data fields>}, <std::_Refwrap_base_arg2<Botan::PKCS11::Session, void>> = {<No data fields>}, <No data fields>}, _M_data = 0x7fffffffc610}, m_handle = 2}, <No data fields>}
        opts = {common_name = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcc90 "medex"}, _M_string_length = 5, {_M_local_buf = "medex\000\000\000P\002\000\000\000\000\000", _M_allocated_capacity = 517097153901}}, country = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffccb0 ""}, _M_string_length = 0, {_M_local_buf = "\000\002\000\000\000\000\000\000!\002\000\000\000\000\000", _M_allocated_capacity = 512}}, organization = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffccd0 ""}, _M_string_length = 0, {_M_local_buf = "\000\002\000\000\000\000\000\000q\002\000\000\000\000\000", _M_allocated_capacity = 512}}, org_unit = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffccf0 ""}, _M_string_length = 0, {_M_local_buf = "\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000", _M_allocated_capacity = 0}}, more_org_units = {<std::_Vector_base<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> > > >> = {_M_impl = {<std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, locality = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcd28 ""}, _M_string_length = 0, {_M_local_buf = "\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000", _M_allocated_capacity = 0}}, state = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcd48 ""}, _M_string_length = 0, {_M_local_buf = "\000\000\000\000\000\000\000\000E\000\000\000\000\000\000", _M_allocated_capacity = 0}}, serial_number = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcd68 ""}, _M_string_length = 0, {_M_local_buf = "\000\001\000\000\000\000\000\000!\001\000\000\000\000\000", _M_allocated_capacity = 256}}, email = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcd88 ""}, _M_string_length = 0, {_M_local_buf = "\000\021\000\000\000\000\000\000\001\021\000\000\000\000\000", _M_allocated_capacity = 4352}}, uri = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcda8 ""}, _M_string_length = 0, {_M_local_buf = "\000\001\000\000\000\000\000\000\002\021\000\000\000\000\000", _M_allocated_capacity = 256}}, ip = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcdc8 ""}, _M_string_length = 0, {_M_local_buf = "\000\020\000\000\000\000\000\000\202\020\000\000\000\000\000", _M_allocated_capacity = 4096}}, dns = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcde8 ""}, _M_string_length = 0, {_M_local_buf = "\000!\000\000\000\000\000\000\004\021\000\000\000\000\000", _M_allocated_capacity = 8448}}, more_dns = {<std::_Vector_base<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> > > >> = {_M_impl = {<std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, xmpp = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffce20 ""}, _M_string_length = 0, {_M_local_buf = "\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000", _M_allocated_capacity = 0}}, challenge = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffce40 ""}, _M_string_length = 0, {_M_local_buf = "\000\000\000\000\000\000\000\000\001 \000\000\000\000\000", _M_allocated_capacity = 0}}, start = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b350f0 <vtable for Botan::X509_Time+16>}, m_year = 2019, m_month = 8, m_day = 21, m_hour = 10, m_minute = 28, m_second = 7, m_tag = Botan::UTC_TIME}, end = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b350f0 <vtable for Botan::X509_Time+16>}, m_year = 2020, m_month = 8, m_day = 20, m_hour = 10, m_minute = 28, m_second = 7, m_tag = Botan::UTC_TIME}, is_CA = false, path_limit = 0, padding_scheme = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fffffffcec0 ""}, _M_string_length = 0, {_M_local_buf = "\000݇UUU\000\000\n\000\000\000\000\000\000", _M_allocated_capacity = 93824995548416}}, constraints = Botan::NO_CONSTRAINTS, ex_constraints = {<std::_Vector_base<Botan::OID, std::allocator<Botan::OID> >> = {_M_impl = {<std::allocator<Botan::OID>> = {<__gnu_cxx::new_allocator<Botan::OID>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, extensions = {<Botan::ASN1_Object> = {_vptr.ASN1_Object = 0x555555b360c0 <vtable for Botan::Extensions+16>}, m_extension_oids = {<std::_Vector_base<Botan::OID, std::allocator<Botan::OID> >> = {_M_impl = {<std::allocator<Botan::OID>> = {<__gnu_cxx::new_allocator<Botan::OID>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555c2e910, _M_finish = 0x555555c2e930, _M_end_of_storage = 0x555555c2e930}}, <No data fields>}, m_extension_info = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<Botan::OID const, Botan::Extensions::Extensions_Info> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<Botan::OID const, Botan::Extensions::Extensions_Info> > >> = {<No data fields>}, <No data fields>}, <std::_Rb_tree_key_compare<std::less<Botan::OID> >> = {_M_key_compare = {<std::binary_function<Botan::OID, Botan::OID, bool>> = {<No data fields>}, <No data fields>}}, <std::_Rb_tree_header> = {_M_header = {_M_color = std::_S_red, _M_parent = 0x555555bef650, _M_left = 0x555555bef650, _M_right = 0x555555bef650}, _M_node_count = 1}, <No data fields>}}}}}
        rng = {<Botan::Hardware_RNG> = {<Botan::RandomNumberGenerator> = {_vptr.RandomNumberGenerator = 0x555555b3b348 <vtable for Botan::PKCS11::PKCS11_RNG+16>}, <No data fields>}, m_session = {<std::_Reference_wrapper_base<Botan::PKCS11::Session>> = {<std::_Weak_result_type<Botan::PKCS11::Session>> = {<std::_Weak_result_type_impl<Botan::PKCS11::Session>> = {<std::_Maybe_get_result_type<Botan::PKCS11::Session, void>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Refwrap_base_arg1<Botan::PKCS11::Session, void>> = {<No data fields>}, <std::_Refwrap_base_arg2<Botan::PKCS11::Session, void>> = {<No data fields>}, <No data fields>}, _M_data = 0x7fffffffc610}}
        req_src = {<std::_Vector_base<unsigned char, std::allocator<unsigned char> >> = {_M_impl = {<std::allocator<unsigned char>> = {<__gnu_cxx::new_allocator<unsigned char>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}
        privKey = {<Botan::GOST_3410_PrivateKey> = {<Botan::GOST_3410_PublicKey> = {<Botan::EC_PublicKey> = {<Botan::Public_Key> = {_vptr.Public_Key = 0x555555b3a198 <vtable for Botan::PKCS11::PKCS11_GOST_PrivateKey+152>}, m_domain_params = {m_data = {<std::__shared_ptr<Botan::EC_Group_Data, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Botan::EC_Group_Data, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x555555c0c480, _M_refcount = {_M_pi = 0x555555c0c470}}, <No data fields>}}, m_public_key = {m_curve = {m_repr = {<std::__shared_ptr<Botan::CurveGFp_Repr, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<Botan::CurveGFp_Repr, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x0, _M_refcount = {_M_pi = 0x0}}, <No data fields>}}, m_coord_x = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}, m_coord_y = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}, m_coord_z = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}}, m_domain_encoding = Botan::EC_DOMPAR_ENC_EXPLICIT, m_point_encoding = Botan::PointGFp::UNCOMPRESSED}, <No data fields>}, <Botan::EC_PrivateKey> = {<Botan::Private_Key> = {<No data fields>}, m_private_key = {m_data = {static sig_words_npos = 18446744073709551615, m_reg = {<std::_Vector_base<unsigned long, Botan::secure_allocator<unsigned long> >> = {_M_impl = {<Botan::secure_allocator<unsigned long>> = {<No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_sig_words = 18446744073709551615}, m_signedness = Botan::BigInt::Positive}}, <No data fields>}, <Botan::PKCS11::Object> = {_vptr.Object = 0x555555b3a3b0 <vtable for Botan::PKCS11::PKCS11_GOST_PrivateKey+688>, m_session = {<std::_Reference_wrapper_base<Botan::PKCS11::Session>> = {<std::_Weak_result_type<Botan::PKCS11::Session>> = {<std::_Weak_result_type_impl<Botan::PKCS11::Session>> = {<std::_Maybe_get_result_type<Botan::PKCS11::Session, void>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Refwrap_base_arg1<Botan::PKCS11::Session, void>> = {<No data fields>}, <std::_Refwrap_base_arg2<Botan::PKCS11::Session, void>> = {<No data fields>}, <No data fields>}, _M_data = 0x7fffffffc610}, m_handle = 3}, m_public_key = 0x7fffffffc750}
        output = <incomplete type>
        req = <error reading variable>
        module = {m_file_path = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x555555b6af00 "/usr/lib/softhsm/libsofthsm2.so"}, _M_string_length = 31, {_M_local_buf = "\037\000\000\000\000\000\000\000\n\000\000\000\000\000\000", _M_allocated_capacity = 31}}, m_func_list = 0x7ffff6c81a20 <functionList>, m_library = {_M_t = {_M_t = {<std::_Tuple_impl<0, Botan::Dynamically_Loaded_Library*, std::default_delete<Botan::Dynamically_Loaded_Library> >> = {<std::_Tuple_impl<1, std::default_delete<Botan::Dynamically_Loaded_Library> >> = {<std::_Head_base<1, std::default_delete<Botan::Dynamically_Loaded_Library>, true>> = {<std::default_delete<Botan::Dynamically_Loaded_Library>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, Botan::Dynamically_Loaded_Library*, false>> = {_M_head_impl = 0x555555b6af60}, <No data fields>}, <No data fields>}}}, m_low_level = {_M_t = {_M_t = {<std::_Tuple_impl<0, Botan::PKCS11::LowLevel*, std::default_delete<Botan::PKCS11::LowLevel> >> = {<std::_Tuple_impl<1, std::default_delete<Botan::PKCS11::LowLevel> >> = {<std::_Head_base<1, std::default_delete<Botan::PKCS11::LowLevel>, true>> = {<std::default_delete<Botan::PKCS11::LowLevel>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, Botan::PKCS11::LowLevel*, false>> = {_M_head_impl = 0x555555b6b0d0}, <No data fields>}, <No data fields>}}}}
        session = {m_slot = @0x7fffffffc5d0, m_handle = 1, m_logged_in = true}
        pin_raw = "11111111\000\000\000\000\000\000\000"
        key_id_raw = "testGOST", '\000' <repeats 1591 times>
        keyId = {<std::_Vector_base<unsigned char, std::allocator<unsigned char> >> = {_M_impl = {<std::allocator<unsigned char>> = {<__gnu_cxx::new_allocator<unsigned char>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555bcce00 "testGOST", _M_finish = 0x555555bcce08 "", _M_end_of_storage = 0x555555bcce08 ""}}, <No data fields>}
        publicHandle = 2
        privateHandle = 3
        slotId = 848871332
        slot = {m_module = {<std::_Reference_wrapper_base<Botan::PKCS11::Module>> = {<std::_Weak_result_type<Botan::PKCS11::Module>> = {<std::_Weak_result_type_impl<Botan::PKCS11::Module>> = {<std::_Maybe_get_result_type<Botan::PKCS11::Module, void>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Refwrap_base_arg1<Botan::PKCS11::Module, void>> = {<No data fields>}, <std::_Refwrap_base_arg2<Botan::PKCS11::Module, void>> = {<No data fields>}, <No data fields>}, _M_data = 0x7fffffffc940}, m_slot_id = 848871332}
        pin = {<std::_Vector_base<unsigned char, Botan::secure_allocator<unsigned char> >> = {_M_impl = {<Botan::secure_allocator<unsigned char>> = {<No data fields>}, _M_start = 0x555555bccc80 "11111111", _M_finish = 0x555555bccc88 "", _M_end_of_storage = 0x555555bccc88 ""}}, <No data fields>}
        publicKeyProperty = {<Botan::PKCS11::KeyProperties> = {<Botan::PKCS11::StorageObjectProperties> = {<Botan::PKCS11::ObjectProperties> = {<Botan::PKCS11::AttributeContainer> = {_vptr.AttributeContainer = 0x555555b39700 <vtable for Botan::PKCS11::PublicKeyProperties+16>, m_attributes = {<std::_Vector_base<CK_ATTRIBUTE, std::allocator<CK_ATTRIBUTE> >> = {_M_impl = {<std::allocator<CK_ATTRIBUTE>> = {<__gnu_cxx::new_allocator<CK_ATTRIBUTE>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555b8c680, _M_finish = 0x555555b8c6c8, _M_end_of_storage = 0x555555b8c6e0}}, <No data fields>}, m_numerics = {<std::__cxx11::_List_base<unsigned long, std::allocator<unsigned long> >> = {_M_impl = {<std::allocator<std::_List_node<unsigned long> >> = {<__gnu_cxx::new_allocator<std::_List_node<unsigned long> >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {_M_next = 0x555555be9730, _M_prev = 0x555555c14dc0}, _M_storage = {_M_storage = "\002\000\000\000\000\000\000"}}}}, <No data fields>}, m_strings = {<std::__cxx11::_List_base<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> > > >> = {_M_impl = {<std::allocator<std::_List_node<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<__gnu_cxx::new_allocator<std::_List_node<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {_M_next = 0x7fffffffca38, _M_prev = 0x7fffffffca38}, _M_storage = {_M_storage = "\000\000\000\000\000\000\000"}}}}, <No data fields>}, m_vectors = {<std::__cxx11::_List_base<std::vector<unsigned char, Botan::secure_allocator<unsigned char> >, std::allocator<std::vector<unsigned char, Botan::secure_allocator<unsigned char> > > >> = {_M_impl = {<std::allocator<std::_List_node<std::vector<unsigned char, Botan::secure_allocator<unsigned char> > > >> = {<__gnu_cxx::new_allocator<std::_List_node<std::vector<unsigned char, Botan::secure_allocator<unsigned char> > > >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {_M_next = 0x555555bf0050, _M_prev = 0x555555bf0050}, _M_storage = {_M_storage = "\001\000\000\000\000\000\000"}}}}, <No data fields>}}, m_object_class = Botan::PKCS11::ObjectClass::PublicKey}, <No data fields>}, m_key_type = Botan::PKCS11::KeyType::Gostr3410}, <No data fields>}
        privateKeyProperty = {<Botan::PKCS11::KeyProperties> = {<Botan::PKCS11::StorageObjectProperties> = {<Botan::PKCS11::ObjectProperties> = {<Botan::PKCS11::AttributeContainer> = {_vptr.AttributeContainer = 0x555555b396e0 <vtable for Botan::PKCS11::PrivateKeyProperties+16>, m_attributes = {<std::_Vector_base<CK_ATTRIBUTE, std::allocator<CK_ATTRIBUTE> >> = {_M_impl = {<std::allocator<CK_ATTRIBUTE>> = {<__gnu_cxx::new_allocator<CK_ATTRIBUTE>> = {<No data fields>}, <No data fields>}, _M_start = 0x555555beb6f0, _M_finish = 0x555555beb738, _M_end_of_storage = 0x555555beb750}}, <No data fields>}, m_numerics = {<std::__cxx11::_List_base<unsigned long, std::allocator<unsigned long> >> = {_M_impl = {<std::allocator<std::_List_node<unsigned long> >> = {<__gnu_cxx::new_allocator<std::_List_node<unsigned long> >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {_M_next = 0x555555c14de0, _M_prev = 0x555555bebb70}, _M_storage = {_M_storage = "\002\000\000\000\000\000\000"}}}}, <No data fields>}, m_strings = {<std::__cxx11::_List_base<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> > > >> = {_M_impl = {<std::allocator<std::_List_node<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<__gnu_cxx::new_allocator<std::_List_node<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {_M_next = 0x7fffffffc9b8, _M_prev = 0x7fffffffc9b8}, _M_storage = {_M_storage = "\000\000\000\000\000\000\000"}}}}, <No data fields>}, m_vectors = {<std::__cxx11::_List_base<std::vector<unsigned char, Botan::secure_allocator<unsigned char> >, std::allocator<std::vector<unsigned char, Botan::secure_allocator<unsigned char> > > >> = {_M_impl = {<std::allocator<std::_List_node<std::vector<unsigned char, Botan::secure_allocator<unsigned char> > > >> = {<__gnu_cxx::new_allocator<std::_List_node<std::vector<unsigned char, Botan::secure_allocator<unsigned char> > > >> = {<No data fields>}, <No data fields>}, _M_node = {<std::__detail::_List_node_base> = {_M_next = 0x555555bef8b0, _M_prev = 0x555555bef8b0}, _M_storage = {_M_storage = "\001\000\000\000\000\000\000"}}}}, <No data fields>}}, m_object_class = Botan::PKCS11::ObjectClass::PrivateKey}, <No data fields>}, m_key_type = Botan::PKCS11::KeyType::Gostr3410}, <No data fields>}
        library = 0x555555838600 <LIBRARY_PATH> "/usr/lib/softhsm/libsofthsm2.so"
        genKey = true
gecheim commented 4 years ago

Hello. Are there any news about the error object creation PKCS 10_Request?