diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2020-09-19 23:05:35 +0200 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2020-09-20 11:59:36 +0200 |
commit | 56eb89dcf5f7d2c3b4ea92490a3b4df6f85713c0 (patch) | |
tree | d07b62514704b71b89bd176ea438c84641bff9b1 /libnitrokey-v3.6/libnitrokey/LibraryException.h | |
parent | 655b823d13acbb71bb1496df29a9008e1b0ee9a2 (diff) | |
download | nitrokey-sys-rs-56eb89dcf5f7d2c3b4ea92490a3b4df6f85713c0.tar.gz nitrokey-sys-rs-56eb89dcf5f7d2c3b4ea92490a3b4df6f85713c0.tar.bz2 |
Update to libnitrokey v3.6
This patch updates libnitrokey from version 3.5 to version 3.6, causing
these changes:
- New constants:
- `NK_device_model_NK_LIBREM` (`NK_device_model` enum)
- New structures:
- `NK_config`
- New functions:
- `NK_device_serial_number_as_u32`
- `NK_write_config_struct`
- `NK_free_config`
- `NK_read_config_struct`
- `NK_free_password_safe_slot_status`
- Deprecated functions:
- `NK_set_unencrypted_read_only`
- `NK_set_unencrypted_read_write`
Diffstat (limited to 'libnitrokey-v3.6/libnitrokey/LibraryException.h')
-rw-r--r-- | libnitrokey-v3.6/libnitrokey/LibraryException.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/libnitrokey-v3.6/libnitrokey/LibraryException.h b/libnitrokey-v3.6/libnitrokey/LibraryException.h new file mode 100644 index 0000000..3b9d177 --- /dev/null +++ b/libnitrokey-v3.6/libnitrokey/LibraryException.h @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2015-2018 Nitrokey UG + * + * This file is part of libnitrokey. + * + * libnitrokey is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * libnitrokey is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with libnitrokey. If not, see <http://www.gnu.org/licenses/>. + * + * SPDX-License-Identifier: LGPL-3.0 + */ + +#ifndef LIBNITROKEY_LIBRARYEXCEPTION_H +#define LIBNITROKEY_LIBRARYEXCEPTION_H + +#include <exception> +#include <cstdint> +#include <string> +#include "log.h" + +class LibraryException: std::exception { +public: + virtual uint8_t exception_id()= 0; +}; + +class TargetBufferSmallerThanSource: public LibraryException { +public: + virtual uint8_t exception_id() override { + return 203; + } + +public: + size_t source_size; + size_t target_size; + + TargetBufferSmallerThanSource( + size_t source_size, size_t target_size + ) : source_size(source_size), target_size(target_size) {} + + virtual const char *what() const throw() override { + std::string s = " "; + auto ts = [](size_t x){ return std::to_string(x); }; + std::string msg = std::string("Target buffer size is smaller than source: [source size, buffer size]") + +s+ ts(source_size) +s+ ts(target_size); + return msg.c_str(); + } + +}; + +class InvalidHexString : public LibraryException { +public: + virtual uint8_t exception_id() override { + return 202; + } + +public: + uint8_t invalid_char; + + InvalidHexString (uint8_t invalid_char) : invalid_char( invalid_char) {} + + virtual const char *what() const throw() override { + return "Invalid character in hex string"; + } + +}; + +class InvalidSlotException : public LibraryException { +public: + virtual uint8_t exception_id() override { + return 201; + } + +public: + uint8_t slot_selected; + + InvalidSlotException(uint8_t slot_selected) : slot_selected(slot_selected) {} + + virtual const char *what() const throw() override { + return "Wrong slot selected"; + } + +}; + + + +class TooLongStringException : public LibraryException { +public: + virtual uint8_t exception_id() override { + return 200; + } + + std::size_t size_source; + std::size_t size_destination; + std::string message; + + TooLongStringException(size_t size_source, size_t size_destination, const std::string &message = "") : size_source( + size_source), size_destination(size_destination), message(message) { + LOG(std::string("TooLongStringException, size diff: ")+ std::to_string(size_source-size_destination), nitrokey::log::Loglevel::DEBUG); + + } + + virtual const char *what() const throw() override { + //TODO add sizes and message data to final message + return "Too long string has been supplied as an argument"; + } + +}; + +#endif //LIBNITROKEY_LIBRARYEXCEPTION_H |