Releases: jakcron/libtoolchain
Releases · jakcron/libtoolchain
libtoolchain v0.8.0
Changes since 0.7(.0)
Added
- Encode/Decode library (tc::encode):
- Added Base64Util (#38):
- class
Base64Util
- A collection of utilities to encode/decode binary data/strings to base64 and vice-versa.- Static utility method
encodeDataAsBase64()
. - Static utility method
encodeStringAsBase64()
. - Static utility method
decodeBase64AsData()
. - Static utility method
decodeBase64AsString()
.
- Static utility method
- class
- Added Base64Util (#38):
Changed/Fixed
- Fixed VS project file duplicate entry issue (#37)
Renamed
N/A
Removed
N/A
libtoolchain v0.7.0
Changes since 0.6.1
Added
- Cryptography library (tc::crypto):
- Added DES & TDES ciphers (#34 #33):
- class
Des56EcbEncryptor
- Class for DES-ECB encryption/decryption with a keysize of 56 bits (+ 8 parity bits = 64 bits).- Utility function
EncryptDes56Ecb()
. - Utility function
DecryptDes56Ecb()
.
- Utility function
- class
Des56CbcEncryptor
- Class for DES-CBC encryption/decryption with a keysize of 56 bits (+ 8 parity bits = 64 bits).- Utility function
EncryptDes56Cbc()
. - Utility function
DecryptDes56Cbc()
.
- Utility function
- class
Tdes112EcbEncryptor
- Class for TDES-ECB encryption/decryption with a keysize of 112 bits (+ 16 parity bits = 128 bits).- Utility function
EncryptTdes112Ecb()
. - Utility function
DecryptTdes112Ecb()
.
- Utility function
- class
Tdes112CbcEncryptor
- Class for TDES-CBC encryption/decryption with a keysize of 112 bits (+ 16 parity bits = 128 bits).- Utility function
EncryptTdes112Cbc()
. - Utility function
DecryptTdes112Cbc()
.
- Utility function
- class
Tdes168EcbEncryptor
- Class for TDES-ECB encryption/decryption with a keysize of 168 bits (+ 24 parity bits = 192 bits).- Utility function
EncryptTdes168Ecb()
. - Utility function
DecryptTdes168Ecb()
.
- Utility function
- class
Tdes168CbcEncryptor
- Class for TDES-CBC encryption/decryption with a keysize of 168 bits (+ 24 parity bits = 192 bits).- Utility function
EncryptTdes168Cbc()
. - Utility function
DecryptTdes168Cbc()
.
- Utility function
- class
- Added DES & TDES ciphers (#34 #33):
Changed
- Makefile updated (v9 2023-12-31)
- Change
ar
usage to be compatible with more Linux/BSD systems.
- Change
libfmt
updated to v10.1.1libmbedtls
update v2.16.12
Renamed
N/A
Removed
N/A
libtoolchain v0.6.1
Changes since 0.6.0
Added
N/A
Changed
- Documentation website now supports versioned paths, readme was updated to point to v0.6 documentation.
- Input/output library (tc::io):
- Top level library header (
tc/io.h
) was updated to include include:tc/io/EmptyStream.h
- Top level library header (
- Cryptography library (tc::crypto):
- Top level library header (
tc/crypto.h
) was updated to include:tc/crypto/CcmEncryptor.h
tc/crypto/Aes128CcmEncryptor.h
- Top level library header (
Renamed
N/A
Removed
N/A
libtoolchain v0.6.0
Changes since 0.5
Added
- Added CI/CD for automatically building libtoolchain (for pull requests and commits on main)
- Cryptography library (tc::crypto):
- Added CCM mode cipher:
- class
Aes128CcmEncryptor
- Class for AES-CCM encryption/decryption with a keysize of 128 bits.- Utility function
EncryptAes128Ccm()
. - Utility function
DecryptAes128Ccm()
. - Utility function
DecryptVerifyAes128Ccm()
.
- Utility function
- class
- Added CCM mode cipher:
- Input/output library (tc::io):
interface tc::io::IFileSystem
was updated to add 2 new methods:.createDirectoryPath()
- Create a directory path. This is similar to createDirectory() but it will create a directory for each element in the path..getCanonicalPath()
- Get the canonical form of a path- These classes were updated to reflect these additions:
tc::io::LocalFileSystem
tc::io::SubFileSystem
tc::io::VirtualFileSystem
class tc::io::EmptyStream
- A read-only zero length IStream object, used in operations where a valid but empty stream must be returned.
Changed
- Makefile updated (v8 2022-04-20)
- Removes shared library support as it wasn't fully implemented
- Added new platform specific variable
DEFINEFLAGS
- Refactored the unit-test system.
- Regex filters for test names and test results is now available.
- The default behaviour has not changed.
- Input/output library (tc::io):
- The convention was changed for the preferred exception where a feature throws an exception because it isn't implemented or supported
tc::NotImplementedException
is to be used where a feature should be implemented, but isn'ttc::NotSupportedException
is to be used where a feature isn't available, not because it hasn't been implemented yet, but rather it can't be due to the conditions of the request
- These classes were updated to reflect these changes:
tc::io::ConcatenatedStream
tc::io::SubSink
tc::io::SubStream
tc::io::VirtualFileSystem
tc::crypto::Aes128CbcEncryptedStream
tc::crypto::Aes128CtrEncryptedStream
- The convention was changed for the preferred exception where a feature throws an exception because it isn't implemented or supported
Renamed
- Cryptography library (tc::crypto):
- Renamed SHA family of Hash Digest algorithms to prepare for SHA-3 introduction.
- SHA-1
- When written as a comment
SHA-1
->SHA1
- When written as a comment
- SHA-256
- When written in a comment
SHA-256
->SHA2-256
class HmacSha256Generator
->class HmacSha2256Generator
- Utility function
GenerateHmacSha256Mac()
->GenerateHmacSha2256Mac()
- Utility function
class Pbkdf2Sha256KeyDeriver
->class Pbkdf2Sha2256KeyDeriver
- Utility function
DeriveKeyPbkdf2Sha256()
->DeriveKeyPbkdf2Sha2256()
- Utility function
class RsaOaepSha256Encryptor
->class RsaOaepSha2256Encryptor
- Utility function
EncryptRsa1024OaepSha256()
->EncryptRsa1024OaepSha2256()
- Utility function
DecryptRsa1024OaepSha256()
->DecryptRsa1024OaepSha2256()
- Utility function
EncryptRsa2048OaepSha256()
->EncryptRsa2048OaepSha2256()
- Utility function
DecryptRsa2048OaepSha256()
->DecryptRsa2048OaepSha2256()
- Utility function
EncryptRsa4096OaepSha256()
->EncryptRsa4096OaepSha2256()
- Utility function
DecryptRsa4096OaepSha256()
->DecryptRsa4096OaepSha2256()
- Utility function
class RsaPkcs1Sha256Signer
->class RsaPkcs1Sha2256Signer
- Utility function
SignRsa1024Pkcs1Sha256()
->SignRsa1024Pkcs1Sha2256()
- Utility function
VerifyRsa1024Pkcs1Sha256()
->VerifyRsa1024Pkcs1Sha2256()
- Utility function
SignRsa2048Pkcs1Sha256()
->SignRsa2048Pkcs1Sha2256()
- Utility function
VerifyRsa2048Pkcs1Sha256()
->VerifyRsa2048Pkcs1Sha2256()
- Utility function
SignRsa4096Pkcs1Sha256()
->SignRsa4096Pkcs1Sha2256()
- Utility function
VerifyRsa4096Pkcs1Sha256()
->VerifyRsa4096Pkcs1Sha2256()
- Utility function
class RsaPssSha256Signer
->class RsaPssSha2256Signer
- Utility function
SignRsa1024PssSha256()
->SignRsa1024PssSha2256()
- Utility function
VerifyRsa1024PssSha256()
->VerifyRsa1024PssSha2256()
- Utility function
SignRsa2048PssSha256()
->SignRsa2048PssSha2256()
- Utility function
VerifyRsa2048PssSha256()
->VerifyRsa2048PssSha2256()
- Utility function
SignRsa4096PssSha256()
->SignRsa4096PssSha2256()
- Utility function
VerifyRsa4096PssSha256()
->VerifyRsa4096PssSha2256()
- Utility function
class Sha256Generator
->class Sha2256Generator
- Utility function
GenerateSha256Hash()
->GenerateSha2256Hash()
- Utility function
- When written in a comment
- SHA-512
- When written in a comment
SHA-512
->SHA2-512
class HmacSha512Generator
->class HmacSha2512Generator
- Utility function
GenerateHmacSha512Mac()
->GenerateHmacSha2512Mac()
- Utility function
class Pbkdf2Sha512KeyDeriver
->class Pbkdf2Sha2512KeyDeriver
- Utility function
DeriveKeyPbkdf2Sha512()
->DeriveKeyPbkdf2Sha2512()
- Utility function
class RsaOaepSha512Encryptor
->class RsaOaepSha2512Encryptor
- Utility function
EncryptRsa1024OaepSha512()
->EncryptRsa1024OaepSha2512()
- Utility function
DecryptRsa1024OaepSha512()
->DecryptRsa1024OaepSha2512()
- Utility function
EncryptRsa2048OaepSha512()
->EncryptRsa2048OaepSha2512()
- Utility function
DecryptRsa2048OaepSha512()
->DecryptRsa2048OaepSha2512()
- Utility function
EncryptRsa4096OaepSha512()
->EncryptRsa4096OaepSha2512()
- Utility function
DecryptRsa4096OaepSha512()
->DecryptRsa4096OaepSha2512()
- Utility function
class RsaPkcs1Sha512Signer
->class RsaPkcs1Sha2512Signer
- Utility function
SignRsa1024Pkcs1Sha512()
->SignRsa1024Pkcs1Sha2512()
- Utility function
VerifyRsa1024Pkcs1Sha512()
->VerifyRsa1024Pkcs1Sha2512()
- Utility function
SignRsa2048Pkcs1Sha512()
->SignRsa2048Pkcs1Sha2512()
- Utility function
VerifyRsa2048Pkcs1Sha512()
->VerifyRsa2048Pkcs1Sha2512()
- Utility function
SignRsa4096Pkcs1Sha512()
->SignRsa4096Pkcs1Sha2512()
- Utility function
VerifyRsa4096Pkcs1Sha512()
->VerifyRsa4096Pkcs1Sha2512()
- Utility function
class RsaPssSha512Signer
->class RsaPssSha2512Signer
- Utility function
SignRsa1024PssSha512()
->SignRsa1024PssSha2512()
- Utility function
VerifyRsa1024PssSha512()
->VerifyRsa1024PssSha2512()
- Utility function
SignRsa2048PssSha512()
->SignRsa2048PssSha2512()
- Utility function
VerifyRsa2048PssSha512()
->VerifyRsa2048PssSha2512()
- Utility function
SignRsa4096PssSha512()
->SignRsa4096PssSha2512()
- Utility function
VerifyRsa4096PssSha512()
->VerifyRsa4096PssSha2512()
- Utility function
- class
Sha512Generator
->class Sha2512Generator
- Utility function
GenerateSha512Hash()
->GenerateSha2512Hash()
- Utility function
- When written in a comment
- SHA-1
- Renamed SHA family of Hash Digest algorithms to prepare for SHA-3 introduction.
Removed
N/A
libtoolchain v0.5.2
Changes since v0.5.1
Changes
- Fix issue with cloning submodules from an unauthenticated git client.
libtoolchain v0.5.1
Changes since v0.5.0
Added
Removed
Renamed
Changes
- Fix bug in binary some binary literals that prevented them from being used with structs.
- Affected classes:
tc::bn::le16<>
,tc::bn::le32<>
,tc::bn::le64<>
,tc::bn::be16<>
,tc::bn::be32<>
,tc::bn::be64<>
- Affected classes:
- Update VisualStudio project file to include
libfmt
as a reference.
libtoolchain v0.5.0
Changes since v0.4.0
Added
- Added
fmt
dependency for string format. - Root namespace (
tc
):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.
- Utility function
- 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.
- Utility functions were added for CTR mode to allow manual incrementing of the block counter.
- AES Encryption:
- 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 virtual read-only file-system created using a file-system snapshot.
Removed
- Removed
le_uint16_t
, please usetc::bn::le16<uint16_t>
instead. - Removed
le_uint32_t
, please usetc::bn::le32<uint32_t>
instead. - Removed
le_uint64_t
, please usetc::bn::le64<uint64_t>
instead. - Removed
be_uint16_t
, please usetc::bn::be16<uint16_t>
instead. - Removed
be_uint32_t
, please usetc::bn::be32<uint32_t>
instead. - Removed
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
- 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).
- Added
tc::Optional
was revised:- Added
isSet()
method - Determine if the Optional value exists- This returns the inverse of
isNull()
- This returns the inverse of
- Added
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
- 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
- Added
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 totc::io::FileNotFoundException
tc::io::LocalFileSystem
- Fixed documentation to list possible exceptions for method
createFile()
- Fixed bug where
state()
returned the wrong state data.
- Fixed documentation to list possible exceptions for method
tc::io::MemorySource
&tc::io::MemoryStream
- Added move from
tc::ByteData&&
constructor.
- Added move from
tc::io::Path
- Added
std::initializer_list<std::string>
constructor. - Fixed documentation to list possible exceptions for
std::string
,std::u16string
andstd::u32string
constructors - Added
operator<(other)
(less than operator) - Fixed documentation noting undefined behaviour when using
pop_front()
&pop_back()
on empty container. - Added
empty()
method - Checks whether the path is empty - Added
subpath()
method - Create a path from a subset of this path- Additionally defined
npos
for usage withsubpath()
- Additionally defined
- Added methods to convert Path to string
- Added
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::u32string
- Added
- Added operators to convert Path to string
operator 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::u32string
- Added
tc::io::SubFileSystem
- Update documentation to mention behaviour of temporarily changing the current working directory for some methods.
- Fixed bug where
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
- Fixed bug where
canRead()
,canWrite()
andcanSeek()
returned the wrong data.
- Fixed bug where
libtoolchain v0.4.0
Changes since v0.3.0
Added
- Added
mbedTLS
dependency for core cryptography implementation. - CLI support namespace (
tc::cli
):class FormatUtil
- A collection of utilities to format binary data as strings and vice-versa.
- Cryptography library (
tc::crypto
):- AES Encryption:
class Aes128EcbEncryptor
- Class for AES-ECB encryption/decryption with a keysize of 128 bits.- Utility function
EncryptAes128Ecb()
. - Utility function
DecryptAes128Ecb()
.
- Utility function
class Aes192EcbEncryptor
- Class for AES-ECB encryption/decryption with a keysize of 192 bits.- Utility function
EncryptAes192Ecb()
. - Utility function
DecryptAes192Ecb()
.
- Utility function
class Aes256EcbEncryptor
- Class for AES-ECB encryption/decryption with a keysize of 256 bits.- Utility function
EncryptAes256Ecb()
. - Utility function
DecryptAes256Ecb()
.
- Utility function
class Aes128CtrEncryptor
- Class for AES-CTR encryption/decryption with a keysize of 128 bits.- Utility function
EncryptAes128Ctr()
. - Utility function
DecryptAes128Ctr()
.
- Utility function
class Aes192CtrEncryptor
- Class for AES-CTR encryption/decryption with a keysize of 192 bits.- Utility function
EncryptAes192Ctr()
. - Utility function
DecryptAes192Ctr()
.
- Utility function
class Aes256CtrEncryptor
- Class for AES-CTR encryption/decryption with a keysize of 256 bits.- Utility function
EncryptAes256Ctr()
. - Utility function
DecryptAes256Ctr()
.
- Utility function
class Aes128CbcEncryptor
- Class for AES-CBC encryption/decryption with a keysize of 128 bits.- Utility function
EncryptAes128Cbc()
. - Utility function
DecryptAes128Cbc()
.
- Utility function
class Aes192CbcEncryptor
- Class for AES-CBC encryption/decryption with a keysize of 192 bits.- Utility function
EncryptAes192Cbc()
. - Utility function
DecryptAes192Cbc()
.
- Utility function
class Aes256CbcEncryptor
- Class for AES-CBC encryption/decryption with a keysize of 256 bits.- Utility function
EncryptAes256Cbc()
. - Utility function
DecryptAes256Cbc()
.
- Utility function
class Aes128XtsEncryptor
- Class for AES-XTS encryption/decryption with a keysize of 128 bits.- Utility function
EncryptAes128Xts()
. - Utility function
DecryptAes128Xts()
.
- Utility function
class Aes256XtsEncryptor
- Class for AES-XTS encryption/decryption with a keysize of 256 bits.- Utility function
EncryptAes256Xts()
. - Utility function
DecryptAes256Xts()
.
- Utility function
- Hash Calculation:
class Md5Generator
- Class for calculating MD5 hash.- Utility function
GenerateMd5Hash()
.
- Utility function
class Sha1Generator
- Class for calculating SHA-1 hash.- Utility function
GenerateSha1Hash()
.
- Utility function
class Sha256Generator
- Class for calculating SHA-256 hash.- Utility function
GenerateSha256Hash()
.
- Utility function
class Sha512Generator
- Class for calculating SHA-512 hash.- Utility function
GenerateSha512Hash()
.
- Utility function
- Hash MAC (HMAC) Calculation:
class HmacMd5Generator
- Class for calculating HMAC-MD5.- Utility function
GenerateHmacMd5Mac()
.
- Utility function
class HmacSha1Generator
- Class for calculating HMAC-SHA-1.- Utility function
GenerateHmacSha1Mac()
.
- Utility function
class HmacSha256Generator
- Class for calculating HMAC-SHA-256.- Utility function
GenerateHmacSha256Mac()
.
- Utility function
class HmacSha512Generator
- Class for calculating HMAC-SHA-512.- Utility function
GenerateHmacSha512Mac()
.
- Utility function
- Password Based Key Derivation Function (PBKDF):
class Pbkdf1Md5Deriver
- Class for deriving a key using PBKDF1-MD5.- Utility function
DeriveKeyPbkdf1Md5()
.
- Utility function
class Pbkdf1Sha1Deriver
- Class for deriving a key using PBKDF1-SHA-1.- Utility function
DeriveKeyPbkdf1Sha1()
.
- Utility function
class Pbkdf2Sha1Deriver
- Class for deriving a key using PBKDF2-SHA-1.- Utility function
DeriveKeyPbkdf2Sha1()
.
- Utility function
class Pbkdf2Sha256Deriver
- Class for deriving a key using PBKDF2-SHA-256.- Utility function
DeriveKeyPbkdf2Sha256()
.
- Utility function
class Pbkdf2Sha512Deriver
- Class for deriving a key using PBKDF2-SHA-512.- Utility function
DeriveKeyPbkdf2Sha512()
.
- Utility function
- Psuedo-random Byte Generation (PRBG):
class PsuedoRandomByteGenerator
- Class for generating random data.- Utility function
GeneratePseudoRandomBytes()
.
- Utility function
- RSA Signing & Encryption:
struct RsaKey
- Struct for storing a RSA key. For use with RSA calculations.struct RsaPublicKey
- This extends RsaKey, exposing a constructor to create a RSA public key from a modulus.struct RsaPrivateKey
- This extends RsaKey, exposing a constructor to create a RSA private key from a modulus and private exponent.class RsaKeyGenerator
- Class for generating RSA keys. Ther underlying PRNG algorithm is CTR_DRBG.- Utility function
GenerateRsaKey()
.
- Utility function
class Rsa1024Pkcs1Md5Signer
- Class for generating and verifying RSA1024-PKCS1-MD5 signatures.- Utility function
SignRsa1024Pkcs1Md5()
- Utility function
VerifyRsa1024Pkcs1Md5()
- Utility function
class Rsa2048Pkcs1Md5Signer
- Class for generating and verifying RSA2048-PKCS1-MD5 signatures.- Utility function
SignRsa2048Pkcs1Md5()
- Utility function
VerifyRsa2048Pkcs1Md5()
- Utility function
class Rsa4096Pkcs1Md5Signer
- Class for generating and verifying RSA4096-PKCS1-MD5 signatures.- Utility function
SignRsa4096Pkcs1Md5()
- Utility function
VerifyRsa4096Pkcs1Md5()
- Utility function
class Rsa1024Pkcs1Sha1Signer
- Class for generating and verifying RSA1024-PKCS1-SHA-1 signatures.- Utility function
SignRsa1024Pkcs1Sha1()
- Utility function
VerifyRsa1024Pkcs1Sha1()
- Utility function
class Rsa2048Pkcs1Sha1Signer
- Class for generating and verifying RSA2048-PKCS1-SHA-1 signatures.- Utility function
SignRsa2048Pkcs1Sha1()
- Utility function
VerifyRsa2048Pkcs1Sha1()
- Utility function
class Rsa4096Pkcs1Sha1Signer
- Class for generating and verifying RSA4096-PKCS1-SHA-1 signatures.- Utility function
SignRsa4096Pkcs1Sha1()
- Utility function
VerifyRsa4096Pkcs1Sha1()
- Utility function
class Rsa1024Pkcs1Sha256Signer
- Class for generating and verifying RSA1024-PKCS1-SHA2-256 signatures.- Utility function
SignRsa1024Pkcs1Sha256()
- Utility function
VerifyRsa1024Pkcs1Sha256()
class Rsa2048Pkcs1Sha256Signer
- Class for generating and verifying RSA2048-PKCS1-SHA2-256 signatures.- Utility function
SignRsa2048Pkcs1Sha256()
- Utility function
VerifyRsa2048Pkcs1Sha256()
- Utility function
class Rsa4096Pkcs1Sha256Signer
- Class for generating and verifying RSA4096-PKCS1-SHA2-256 signatures.- Utility function
SignRsa4096Pkcs1Sha256()
- Utility function
VerifyRsa4096Pkcs1Sha256()
- Utility function
class Rsa1024Pkcs1Sha512Signer
- Class for generating and verifying RSA1024-PKCS1-SHA2-512 signatures.- Utility function
SignRsa1024Pkcs1Sha512()
- Utility function
VerifyRsa1024Pkcs1Sha512()
class Rsa2048Pkcs1Sha512Signer
- Class for generating and verifying RSA2048-PKCS1-SHA2-512 signatures.- Utility function
SignRsa2048Pkcs1Sha512()
- Utility function
VerifyRsa2048Pkcs1Sha512()
- Utility function
class Rsa4096Pkcs1Sha512Signer
- Class for generating and verifying RSA4096-PKCS1-SHA2-512 signatures.- Utility function
SignRsa4096Pkcs1Sha512()
- Utility function
VerifyRsa4096Pkcs1Sha512()
- Utility function
class Rsa1024PssSha256Signer
- Class for generating and verifying RSA1024-PSS-SHA2-256 signatures.- Utility function
SignRsa1024PssSha256()
- Utility function
VerifyRsa1024PssSha256()
class Rsa2048PssSha256Signer
- Class for generating and verifying RSA2048-PSS-SHA2-256 signatures.- Utility function
SignRsa2048PssSha256()
- Utility function
VerifyRsa2048PssSha256()
- Utility function
class Rsa4096PssSha256Signer
- Class for generating and verifying RSA4096-PSS-SHA2-256 signatures.- Utility function
SignRsa4096PssSha256()
- Utility function
VerifyRsa4096PssSha256()
- Utility function
class Rsa1024PssSha512Signer
- Class for generating and verifying RSA1024-PSS-SHA2-512 signatures.- Utility function
SignRsa1024PssSha512()
- Utility function
VerifyRsa1024PssSha512()
class Rsa2048PssSha512Signer
- Class for generating and verifying RSA2048-PSS-SHA2-512 signatures.- Utility function
SignRsa2048PssSha512()
- Utility function
VerifyRsa2048PssSha512()
- Utility function
class Rsa4096PssSha512Signer
- Class for generating and verifying RSA4096-PSS-SHA2-512 signatures.- Utility function
SignRsa4096PssSha512()
- Utility function
VerifyRsa4096PssSha512()
- Utility function
class Rsa1024OaepSha256Encryptor
- Class for RSA1024-OAEP-SHA2-256 encryption/decryption.- Utility function
EncryptRsa1024OaepSha256()
- Utility function
DecryptRsa1024OaepSha256()
- Utility function
class Rsa2048OaepSha256Encryptor
- Class for RSA2048-OAEP-SHA2-256 encryption/decryption.- Utility function
EncryptRsa2048OaepSha256()
- Utility function
DecryptRsa2048OaepSha256()
- Utility function
class Rsa4096OaepSha256Encryptor
- Class for RSA4096-OAEP-SHA2-256 encryption/decryption.- Utility function
EncryptRsa4096OaepSha256()
- Utility function
DecryptRsa4096OaepSha256()
- Utility function
class Rsa2048OaepSha512Encryptor
- Class for RSA2048-OAEP-SHA2-512 encryption/decryption.- Utility function
EncryptRsa2048OaepSha512()
- Utility function
DecryptRsa2048OaepSha512()
- Utility function
class Rsa4096OaepSha512Encryptor
- Class for RSA4096-OAEP-SHA2-512 encryption/decryption.- Utility function
EncryptRsa4096OaepSha512()
- Utility function
DecryptRsa4096OaepSha512()
- Utility function
- AES Encryption:
- Operating System library (
tc::os
):- Utility function
getEnvVar()
- Get environment variable. umain()
- Multi-platform UTF-8 entry point.
- Utility function
Removed
Rena...
libtoolchain v0.3.0
Changes since v0.2.0
Added
-
Exception Specialisations
tc::AccessViolationException
- The exception that is thrown when there is an attempt to read or write protected memory.tc::ArgumentException
- The exception that is thrown when one of the arguments provided to a method is not valid.tc::ArgumentNullException
- The exception that is thrown when a null reference is passed to a method that does not accept it as a valid argument.tc::ArgumentOutOfRangeException
- The exception that is thrown when the value of an argument is outside the allowable range of values as defined by the invoked method.
tc::ArithmeticException
- The exception that is thrown for errors in an arithmetic, casting, or conversion operation.tc::OverflowException
- The exception that is thrown when an arithmetic, casting, or conversion operation in a checked context results in an overflow.
tc::InvalidOperationException
- The exception that is thrown when a method call is invalid for the object's current state.tc::ObjectDisposedException
- The exception that is thrown when an operation is performed on a disposed object.
tc::NotImplementedException
- The exception that is thrown when a requested method or operation is not implemented.tc::NotSupportedException
- The exception that is thrown when an invoked method is not supported, or when there is an attempt to read, seek, or write to a stream that does not support the invoked functionality.tc::OutOfMemoryException
- The exception that is thrown when there is not enough memory to continue the execution of a program.tc::UnauthorisedAccessException
- The exception that is thrown when the operating system denies access because of an I/O error or a specific type of security error.tc::io::IOException
- The exception that is thrown when an I/O error occurs.tc::io::DirectoryNotEmptyException
- The exception that is thrown when a directory is not empty.tc::io::DirectoryNotFoundException
- he exception that is thrown when part of a file or directory cannot be found.tc::io::FileExistsException
- The exception that is thrown when an attempt to overwrite/remove a file that exists on disk fails.tc::io::FileNotFoundException
- The exception that is thrown when an attempt to access a file that does not exist on disk fails.
tc::io::PathTooLongException
- The exception that is thrown when a path or fully qualified file name is longer than the system-defined maximum length.
-
Root namespace (
tc
):class ByteData
- A container of linear memory, used to hold raw data.class PlatformErrorHandlingUtil
- Platform specific error handling utilities.
-
Input/Output namespace (
tc::io
) (previouslytc::fs
):enum FileAccess
- Defines constants for read, write, or read/write access to a file.enum FileMode
- Specifies how the operating system should open a file.enum SeekOrigin
- Specifies the position in a stream to use for seeking.class IOUtil
- Utility functions for IO based classes.class MemoryStream
- A block of run-time memory wrapped as an IStream object.class StreamUtil
- Utility class for IStream objects.class ISource
- An interface defining a byte data source.class MemorySource
- A block of run-time memory wrapped as an ISource object.class OverlayedSource
- This will replaces regions within a base source with one or more other sources, so as to override those regions in the base source when pullData() is called.class PaddingSource
- A source that provides dummy/filler data.class StreamSource
- An IStream wrapped in an ISource.class SubSource
- A ISource that exposes a subset of a base ISource.
class ISink
- An interface defining a byte data sink.class StreamSink
- An IStream wrapped in an ISink.class SubSink
- A ISink that exposes a subset of a base ISink.
class IReadableSink
- An interface defining a byte data sink that can be also provide an ISource.
Removed
tc::SharedPtr
- Use standard library
std::unique_ptr
orstd::shared_ptr
instead.
- Use standard library
tc::fs::GenericFileObject
- No longer required due to architecture change.
tc::fs::GenericFileSystem
- No longer required due to architecture change.
tc::string::transcodeUTF8ToUTF32()
- Now resides in
tc::string::TranscodeUtil
as static methodUTF8ToUTF32()
- Now resides in
tc::string::transcodeUTF16ToUTF32()
- Now resides in
tc::string::TranscodeUtil
as static methodUTF16ToUTF32()
- Now resides in
tc::string::transcodeUTF32ToUTF8()
- Now resides in
tc::string::TranscodeUtil
as static methodUTF32ToUTF8()
- Now resides in
tc::string::transcodeUTF32ToUTF16()
- Now resides in
tc::string::TranscodeUtil
as static methodUTF32ToUTF16()
- Now resides in
tc::string::transcodeUTF8ToUTF16()
- Now resides in
tc::string::TranscodeUtil
as static methodUTF8ToUTF16()
- Now resides in
tc::string::transcodeUTF16ToUTF8()
- Now resides in
tc::string::TranscodeUtil
as static methodUTF16ToUTF8()
- Now resides in
Renamed
tc::ResourceState
->tc::ResourceStatus
tc:: ResourceStateFlag
->tc::ResourceStatusFlag
- Filesystem namespace (
tc::fs
) -> Input/Output namespace (tc::io
)IFileObject
->IStream
IFileSystem
->IStorage
LocalFileObject
->FileStream
LocalFileSystem
->LocalStorage
PartitionedFileObject
->SubStream
SandboxedFileSystem
->SubStorage
PathUtils
->PathUtil
Changes
tc::fs::GenericFileSystem
&tc::fs::GenericFileObject
have been removed, instead classes pass aroundstd::shared_ptr
pointers where objects need to be shared..copyInstance()
&.moveInstance()
removed fromIStorage
&IStream
classes
tc::io::IStream
(previouslytc::fs::IFileObject
) was redesigned:.state()
removed, in favour of three access check methods.canRead()
- Indicates whether the current stream supports reading..canWrite()
- Indicates whether the current stream supports writing..canSeek()
- Indicates whether the current stream supports seeking.
uint64_t size()
->int64_t length()
.close()
has been replaced with two new methods:.flush()
- Clears all buffers for this stream and causes any buffered data to be written to the underlying device..dispose()
- Releases all resources used by the Stream.
void seek(uint64_t)
->int64_t seek(int64_t offset, SeekOrigin origin)
uint64_t pos()
->int64_t position()
void read(byte_t* data, size_t len)
->size_t read(byte_t* ptr, size_t count)
void write(const byte_t* data, size_t len)
->size_t write(const byte_t* ptr, size_t count)
tc::io::FileStream
(previouslytc::fs::LocalFileObject
) was changed:- Copy assignment & copy constructors deleted (accessibility is now private)
void open(const Path& path, FileAccessMode mode)
deleted, opening stream only available via constructorFileStream(const Path& path, FileAccessMode mode)
->FileStream(const Path& path, FileMode mode, FileAccess access)
tc::io::IStorage
(previouslytc::fs::IFileSystem
) was redesigned:tc::ResourceState getFsState()
->tc::ResourceStatus state()
closeFs()
->dispose()
openFile(const Path& path, FileAccessMode mode, GenericFileObject& file)
->openFile(const Path& path, FileMode mode, FileAccess access, std::shared_ptr<IStream>& stream)
libtoolchain v0.2.0
Changes Since v0.1.0
Added
tc::ResourceState
&enum tc::ResourceStateFlag
- Stores the life-cycle state of a resource
tc::fs::sDirectoryListing
(replacestc::fs::DirectoryInfo
)- Now a
struct
defined intc/fs/IFileSystem.h
- Now a
tc::fs::GenericFileObject
- A realisation of IFileObject that can be assigned (copy or move) the value of another IFileObject object
tc::fs::GenericFileSystem
- A realisation of IFileSystem that can be assigned (copy or move) the value of another IFileSystem object
tc::fs::LocalFileObject
- A realisation of IFileObject as a wrapper to local OS file access functions.
tc::fs::pathToWindowsUTF16()
&tc::fs::pathToUnixUTF8()
- Format a Path as a Windows/Unix style string
Removed
tc::fs::DirectoryInfo
(usetc::fs::sDirectoryListing
instead)
Renamed
tc::fs::IFile
->tc::fs::IFileObject
tc::fs::SandboxedIFile
->tc::fs::PartitionedFileObject
tc::fs::SandboxedIFileSystem
->tc::fs::SandboxedFileSystem
Changes
tc::SharedPtr
: Improved internal state validationle_uint16_t
,le_uint32_t
,le_uint64_t
,be_uint16_t
,be_uint32_t
,be_uint64_t
- Rename:
.set()
->.wrap()
.get()
->.unwrap()
- Rename:
tc::fs::Path
: Behave more likestd::list
- Removed:
.getPathElementList()
.setPathElementList()
- Added:
const_iterator
iterator
.begin()
.end()
.pop_front()
.pop_back()
.push_front()
.push_back()
.clear()
.size()
- Removed:
tc::fs::IFileObject
:- Enable Life-cycle management
- Added
.close()
and.state()
- Implementations are encouraged to provide
.open()
or.initalise()
method .state()
returnsResourceState
- Added
- Enable Copy/move when cast as
IFileObject
- Added
.copyInstance()
and.moveInstance()
- Added
- Enable Life-cycle management
tc::fs::PartitionedFileObject
: Implements the changes intc::fs::IFileObject
- Add
initialise()
- Add
PartitionedFileObject::PartitionedFileObject()
(default constructor)
- Add
tc::fs::IFileSystem
:- Enable Life-cycle management
- Added
.closeFs()
and.getFsState()
- Added
- Enable Copy/move when cast as
IFileSystem
- Added
.copyInstance()
and.moveInstance()
- Added
- Create file without opening file
- Added
.createFile()
- Added
- Renamed methods for clarity/consistency
.deleteFile()
->.removeFile()
.getCurrentDirectory()
->.getWorkingDirectory()
.setCurrentDirectory()
->.setWorkingDirectory()
.deleteDirectory()
->.removeDirectory()
.openFile()
no longer returnsIFileObject*
, instead takes an additional paramtc::fs::GenericFileObject& file
- Enable Life-cycle management
tc::fs::LocalFileSystem
: Implements the changes intc::fs::IFileSystem
- Add
openFs()
- Add
tc::fs::SandboxedFileSystem
: Implements the changes intc::fs::IFileSystem
- Add
initialiseFs()
- Add
SandboxedFileSystem::SandboxedFileSystem()
(default constructor)
- Add