class SecurityException - The exception that is thrown when a security error is detected.
Generic functions for rounding up and aligning integers
function roundup<T>() - Round a value up to an alignment value.
function align<T>() - Align a value to an alignment value.
Run-time data-type checks:
function is_size_t_not_64bit() - Returns if type size_t is not 64bit.
function is_size_t_too_large_for_int64_t() - Returns if a value of type size_t is too large to be stored as int64_t.
function is_uint64_t_too_large_for_int64_t() - Returns if a value of type uint64_t is too large to be stored as int64_t.
function is_int64_t_too_large_for_size_t() - Returns if a value of type int64_t is too large to be stored as size_t.
function is_uint64_t_too_large_for_size_t() - Returns if a value of type uint64_t is too large to be stored as size_t.
Binary literals library (tc::bn):
Utility function make_struct_magic_uint32() - Generate struct magic 32bit number.
Utility function make_struct_magic_uint64() - Generate struct magic 64bit number.
struct bitarray - This struct is a literal bitarray, with configurable byte and bit endianness.
class pad<> - This class creates padding.
class string<> - This class represents a literal char array.
class le16<T> - Wrapper that allows accessing a little-endian 16-bit POD regardless of processor endianness.
class le32<T> - Wrapper that allows accessing a little-endian 32-bit POD regardless of processor endianness.
class le64<T> - Wrapper that allows accessing a little-endian 64-bit POD regardless of processor endianness.
class be16<T> - Wrapper that allows accessing a big-endian 16-bit POD regardless of processor endianness.
class be32<T> - Wrapper that allows accessing a big-endian 32-bit POD regardless of processor endianness.
class be64<T> - Wrapper that allows accessing a big-endian 64-bit POD regardless of processor endianness.
CLI support library (tc::cli):
class OptionParser - Class for parsing command-line options.
Cryptography library (tc::crypto):
AES Encryption:
Utility functions were added for CTR mode to allow manual incrementing of the block counter.
IncrementCounterAes128Ctr()
IncrementCounterAes192Ctr()
IncrementCounterAes256Ctr()
class Aes128CbcEncryptedStream - Class for reading from a stream that is encrypted with AES128-CBC.
class Aes128CtrEncryptedStream - Class for reading from a stream that is encrypted with AES128-CTR.
Input/output library (tc::io):
class IPathResolver - This is an interface for a class that resolves relative paths to canonical paths.
class IPortablePathResolver - This is an extension for the IPathResolver interface that specifies additional methods for setting the current directory.
class BasicPathResolver - This implementation of IPortablePathResolver resolves a path and current directory to canonical path, resolving only '.', '..' and empty path elements.
class ConcatenatedStream - A stream that concatenates multiple streams into a single stream.
class VirtualFileSystem - A stream that concatenates multiple streams into a single stream.
Removed
Removed le_uint16_t, please use tc::bn::le16<uint16_t> instead.
Removed le_uint32_t, please use tc::bn::le32<uint32_t> instead.
Removed le_uint64_t, please use tc::bn::le64<uint64_t> instead.
Removed be_uint16_t, please use tc::bn::be16<uint16_t> instead.
Removed be_uint32_t, please use tc::bn::be32<uint32_t> instead.
Removed be_uint64_t, please use tc::bn::be64<uint64_t> instead.
Renamed
tc::io::IStorage -> tc::io::IFileSystem
tc::io::LocalStorage -> tc::io::LocalFileSystem
tc::io::SubStorage -> tc::io::SubFileSystem
Changes
Makefile updated (v6 2021-11-10)
Supports different architecture targets for macOS
Supports C++ files with .cc extension.
Consistent use of US-English spelling for words like "initialisation".
tc::ByteData was revised:
Added operator==(other) (Equality operator).
Added operator!=(other) (Inequality operator).
tc::Optional was revised:
Added isSet() method - Determine if the Optional value exists
This returns the inverse of isNull()
tc::FormatUtils was revised:
formatBytesAsStringWithLineLimit() overload for tc::ByteData was removed.
formatListWithLineLimit() can now specify whether to print the first indent.
formatBytesAsHxdHexString() overloads for tc::ByteData was removed.
tc::crypto::CbcEncryptor
Added update_iv() - Updates the CBC initialization vector.
This is for use-cases where the data isn't being decrypted linearly.
This is available for all subclasses including:
tc::crypto::Aes128CbcEncryptor
tc::crypto::Aes192CbcEncryptor
tc::crypto::Aes256CbcEncryptor
tc::io::FileStream
Fixed documentation that erroneously indicated that setLength() was not implemented.
Fixed bug on Windows where ERROR_PATH_NOT_FOUND was not translated to tc::io::FileNotFoundException
tc::io::LocalFileSystem
Fixed documentation to list possible exceptions for method createFile()
Fixed bug where state() returned the wrong state data.
Changes since v0.4.0
Added
fmt
dependency for string format.tc
):class SecurityException
- The exception that is thrown when a security error is detected.function roundup<T>()
- Round a value up to an alignment value.function align<T>()
- Align a value to an alignment value.function is_size_t_not_64bit()
- Returns if type size_t is not 64bit.function is_size_t_too_large_for_int64_t()
- Returns if a value of type size_t is too large to be stored as int64_t.function is_uint64_t_too_large_for_int64_t()
- Returns if a value of type uint64_t is too large to be stored as int64_t.function is_int64_t_too_large_for_size_t()
- Returns if a value of type int64_t is too large to be stored as size_t.function is_uint64_t_too_large_for_size_t()
- Returns if a value of type uint64_t is too large to be stored as size_t.tc::bn
):make_struct_magic_uint32()
- Generate struct magic 32bit number.make_struct_magic_uint64()
- Generate struct magic 64bit number.struct bitarray
- This struct is a literal bitarray, with configurable byte and bit endianness.class pad<>
- This class creates padding.class string<>
- This class represents a literal char array.class le16<T>
- Wrapper that allows accessing a little-endian 16-bit POD regardless of processor endianness.class le32<T>
- Wrapper that allows accessing a little-endian 32-bit POD regardless of processor endianness.class le64<T>
- Wrapper that allows accessing a little-endian 64-bit POD regardless of processor endianness.class be16<T>
- Wrapper that allows accessing a big-endian 16-bit POD regardless of processor endianness.class be32<T>
- Wrapper that allows accessing a big-endian 32-bit POD regardless of processor endianness.class be64<T>
- Wrapper that allows accessing a big-endian 64-bit POD regardless of processor endianness.tc::cli
):class OptionParser
- Class for parsing command-line options.tc::crypto
):IncrementCounterAes128Ctr()
IncrementCounterAes192Ctr()
IncrementCounterAes256Ctr()
class Aes128CbcEncryptedStream
- Class for reading from a stream that is encrypted with AES128-CBC.class Aes128CtrEncryptedStream
- Class for reading from a stream that is encrypted with AES128-CTR.tc::io
):class IPathResolver
- This is an interface for a class that resolves relative paths to canonical paths.class IPortablePathResolver
- This is an extension for the IPathResolver interface that specifies additional methods for setting the current directory.class BasicPathResolver
- This implementation of IPortablePathResolver resolves a path and current directory to canonical path, resolving only '.
', '..
' and empty path elements.class ConcatenatedStream
- A stream that concatenates multiple streams into a single stream.class VirtualFileSystem
- A stream that concatenates multiple streams into a single stream.Removed
le_uint16_t
, please usetc::bn::le16<uint16_t>
instead.le_uint32_t
, please usetc::bn::le32<uint32_t>
instead.le_uint64_t
, please usetc::bn::le64<uint64_t>
instead.be_uint16_t
, please usetc::bn::be16<uint16_t>
instead.be_uint32_t
, please usetc::bn::be32<uint32_t>
instead.be_uint64_t
, please usetc::bn::be64<uint64_t>
instead.Renamed
tc::io::IStorage
->tc::io::IFileSystem
tc::io::LocalStorage
->tc::io::LocalFileSystem
tc::io::SubStorage
->tc::io::SubFileSystem
Changes
.cc
extension.US-English
spelling for words like "initialisation".tc::ByteData
was revised:operator==(other)
(Equality operator).operator!=(other)
(Inequality operator).tc::Optional
was revised:isSet()
method - Determine if the Optional value existsisNull()
tc::FormatUtils
was revised:formatBytesAsStringWithLineLimit()
overload fortc::ByteData
was removed.formatListWithLineLimit()
can now specify whether to print the first indent.formatBytesAsHxdHexString()
overloads fortc::ByteData
was removed.tc::crypto::CbcEncryptor
update_iv()
- Updates the CBC initialization vector.tc::crypto::Aes128CbcEncryptor
tc::crypto::Aes192CbcEncryptor
tc::crypto::Aes256CbcEncryptor
tc::io::FileStream
ERROR_PATH_NOT_FOUND
was not translated totc::io::FileNotFoundException
tc::io::LocalFileSystem
createFile()
state()
returned the wrong state data.tc::io::MemorySource
&tc::io::MemoryStream
tc::ByteData&&
constructor.tc::io::Path
std::initializer_list<std::string>
constructor.std::string
,std::u16string
andstd::u32string
constructorsoperator<(other)
(less than operator)pop_front()
&pop_back()
on empty container.empty()
method - Checks whether the path is emptysubpath()
method - Create a path from a subset of this pathnpos
for usage withsubpath()
enum Format
- This enum defines the Path format type, used for encoding to string.to_string(Format)
- Convert path to std::stringto_u16string(Format)
- Convert path to std::u16stringto_u32string(Format)
- Convert path to std::u32stringoperator std::string()
- Implicit conversion to a natively formatted std::stringoperator std::u16string()
- Implicit conversion to a natively formatted std::u16stringoperator std::u32string()
- Implicit conversion to a natively formatted std::u32stringtc::io::SubFileSystem
state()
returned the wrong state data.tc::io::SubSink
setLength()
now throwstc::NotImplementedException
instead oftc::NotSupportedException
. This is inline with other class behaviour.tc::io::SubStream
canRead()
,canWrite()
andcanSeek()
returned the wrong data.