📄 get_algo.cpp
字号:
/************************************************** Algorithm Retrieval Source File ** (C) 1999-2002 The Botan Project **************************************************/#include <botan/lookup.h>namespace Botan {/************************************************** Get a block cipher by name **************************************************/BlockCipher* get_block_cipher(const std::string& name) { const BlockCipher* cipher = retrieve_block_cipher(name); if(cipher) return cipher->clone(); throw Algorithm_Not_Found(name); }/************************************************** Get a stream cipher by name **************************************************/StreamCipher* get_stream_cipher(const std::string& name) { const StreamCipher* cipher = retrieve_stream_cipher(name); if(cipher) return cipher->clone(); throw Algorithm_Not_Found(name); }/************************************************** Get a hash function by name **************************************************/HashFunction* get_hash(const std::string& name) { const HashFunction* hash = retrieve_hash(name); if(hash) return hash->clone(); throw Algorithm_Not_Found(name); }/************************************************** Get a MAC by name **************************************************/MessageAuthenticationCode* get_mac(const std::string& name) { const MessageAuthenticationCode* mac = retrieve_mac(name); if(mac) return mac->clone(); throw Algorithm_Not_Found(name); }/************************************************** Get a block cipher padding method by name **************************************************/const BlockCipherModePaddingMethod* get_bc_pad(const std::string& name) { const BlockCipherModePaddingMethod* pad = retrieve_bc_pad(name); if(pad) return pad; throw Algorithm_Not_Found(name); }/************************************************** Query if an algorithm exists **************************************************/bool have_algorithm(const std::string& name) { if(retrieve_block_cipher(name)) return true; if(retrieve_stream_cipher(name)) return true; if(retrieve_hash(name)) return true; if(retrieve_mac(name)) return true; return false; }/************************************************** Query if Botan has the named block cipher **************************************************/bool have_block_cipher(const std::string& name) { if(retrieve_block_cipher(name)) return true; return false; }/************************************************** Query if Botan has the named stream cipher **************************************************/bool have_stream_cipher(const std::string& name) { if(retrieve_stream_cipher(name)) return true; return false; }/************************************************** Query if Botan has the named hash function **************************************************/bool have_hash(const std::string& name) { if(retrieve_hash(name)) return true; return false; }/************************************************** Query if Botan has the named MAC **************************************************/bool have_mac(const std::string& name) { if(retrieve_mac(name)) return true; return false; }/************************************************** Query the BLOCK_SIZE of a block cipher **************************************************/u32bit block_size_of(const std::string& name) { const BlockCipher* cipher = retrieve_block_cipher(name); if(cipher) return cipher->BLOCK_SIZE; throw Algorithm_Not_Found(name); }/************************************************** Query the OUTPUT_LENGTH of a hash or MAC **************************************************/u32bit output_length_of(const std::string& name) { const HashFunction* hash = retrieve_hash(name); if(hash) return hash->OUTPUT_LENGTH; const MessageAuthenticationCode* mac = retrieve_mac(name); if(mac) return mac->OUTPUT_LENGTH; throw Algorithm_Not_Found(name); }/************************************************** Query the MINIMUM_KEYLENGTH of an algorithm **************************************************/u32bit min_keylength_of(const std::string& name) { const BlockCipher* bc = retrieve_block_cipher(name); if(bc) return bc->MINIMUM_KEYLENGTH; const StreamCipher* sc = retrieve_stream_cipher(name); if(sc) return sc->MINIMUM_KEYLENGTH; const MessageAuthenticationCode* mac = retrieve_mac(name); if(mac) return mac->MINIMUM_KEYLENGTH; throw Algorithm_Not_Found(name); }/************************************************** Query the MAXIMUM_KEYLENGTH of an algorithm **************************************************/u32bit max_keylength_of(const std::string& name) { const BlockCipher* bc = retrieve_block_cipher(name); if(bc) return bc->MAXIMUM_KEYLENGTH; const StreamCipher* sc = retrieve_stream_cipher(name); if(sc) return sc->MAXIMUM_KEYLENGTH; const MessageAuthenticationCode* mac = retrieve_mac(name); if(mac) return mac->MAXIMUM_KEYLENGTH; throw Algorithm_Not_Found(name); }/************************************************** Query the KEYLENGTH_MULTIPLE of an algorithm **************************************************/u32bit keylength_multiple_of(const std::string& name) { const BlockCipher* bc = retrieve_block_cipher(name); if(bc) return bc->KEYLENGTH_MULTIPLE; const StreamCipher* sc = retrieve_stream_cipher(name); if(sc) return sc->KEYLENGTH_MULTIPLE; const MessageAuthenticationCode* mac = retrieve_mac(name); if(mac) return mac->KEYLENGTH_MULTIPLE; throw Algorithm_Not_Found(name); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -