-
Notifications
You must be signed in to change notification settings - Fork 574
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extend/Update (public) APIs with std::span
overloads
#3318
Comments
Another one, from #3411
Would be nice to do this for all of the key types. (This might require some work on |
It would be nice if Botan detected the C++ version in the headers and didn't expose unsupported/new features to C++ compilers that didn't support them. I am currently trying to integrate Botan into a codebase that can't be built with C++20 (because other libraries we're using don't support it yet) and having to wrap everything is becoming a royal pain in the ass. |
@crazydef Don't do that. Use Botan2, which is still supported and probably will be for years, and is C++11. Or (for some functionality) you can use the C89 API in |
Do this libraries really break if compiled with C++20? I would expect most older code to work without a problem if compiled with a newer C++ standard. |
@lieser C++17 deprecated a lot of stuff and removed even more. One particular library I have to deal with still only supports C++14 because of the mess that is C++17. |
std::span
overloadsstd::span
overloads
I'm just trying to build from tag 3.2.0, and I'm seeing the
As I'm sure you are aware, |
@CharlesJQuarra Botan 3.0 and higher requires C++20 and minimum GCC at least 11.2 That you're seeing precisely this error is surprising in that |
@randombit my bad, I ran |
Alongside existing
std::vector<T, Alloc>
and C-style ptr-length APIs we're gradually introducing overloads taking astd::span
from C++20. This ticket is an attempt to create/maintain a list of interfaces that should get such overloads.Public APIs and Interfaces
RandomNumberGenerator
(std::span (and more) for Botan::RandomNumberGenerator #3195)Buffered_Computation
(Chore: Buffered_Computation can deal with generic containers #3294, std::span for Buffered_Computation #3681)Symmetric_Algorithm
(Chore: Symmetric_Algorithm can deal with generic containers #3297)Cipher_Mode
(std::span for Botan::Cipher_Mode #3392)StreamCipher
(forset_iv()
,write_keystream()
) (std::span for Stream_Cipher #3395)AEAD_Mode
(Chore: AEAD_Mode can deal with generic containers #3317)BlockCipher
(std::span for Botan::BlockCipher #3394)pubkey.h
(and friends) (std::span for Public Key Operations #3400)BigInt
(eg. c'tors,::encode
,::binary_encode
, ...)big_rand.cpp
,big_ops*.cpp
,big_code.cpp
)Compression_Algorithm
/Decompression_Algorithm
ec_group.h
HashFunction
(std::span for Buffered_Computation #3681)mem_ops.h
(Range-based mem_ops #3715)Internal APIs and Interfaces
EMSA
Buffered_Computation
(std::span for Buffered_Computation #3681)SymmetricAlgorithm
(std::span for SymmetricAlgorithm::key_schedule() #3684)Cipher_Mode
TLS_CBC_HMAC_AEAD_Mode
BlockCipher
(encrypt_n()
,decrypt_n()
) ([std::span] Pass std::span buffers into Block_Cipher Implementations #3870)Tweakable_Block_Cipher
(set_tweak()
) ([std::span] Tweakable_Block_Cipher #3872)MessageAuthenticationCode
(std::span for MessageAuthenticationCode internals #3713)MDx_HashFunction
(Refactor: Remove MDx_HashFunction #3705)StreamCipher
(cipher_bytes()
,generate_keystream()
,set_iv_bytes()
)pk_ops.h
Encryption
(Use span in PK operations and avoid needless secure_vector #4239)Decryption
(Use span in PK operations and avoid needless secure_vector #4239)Verification
(Use span in PK operations and avoid needless secure_vector #4239)Signature
(Use span in PK operations and avoid needless secure_vector #4239)Key_Agreement
(Use span in PK operations and avoid needless secure_vector #4239)KEM_Encryption
(API modernization PK_KEM_Encryptor/Decryptor #3611)KEM_Decryption
(API modernization PK_KEM_Encryptor/Decryptor #3611)SQL_Database
(has methods returningstd::pair<uint8_t*, size_t>
)load_be
/store_be
([std::span] {load,store}_{le,be} #3707, Refactor: Final iteration on load/store #3869)ct_utils.h
(Convenience overloads for CT::poison() #4197)The text was updated successfully, but these errors were encountered: