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
arusage to be compatible with more Linux/BSD systems.
- Change
libfmtupdated to v10.1.1libmbedtlsupdate 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.htc/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::IFileSystemwas 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::LocalFileSystemtc::io::SubFileSystemtc::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::NotImplementedExceptionis to be used where a feature should be implemented, but isn'ttc::NotSupportedExceptionis 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::ConcatenatedStreamtc::io::SubSinktc::io::SubStreamtc::io::VirtualFileSystemtc::crypto::Aes128CbcEncryptedStreamtc::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
libfmtas a reference.
libtoolchain v0.5.0
Changes since v0.4.0
Added
- Added
fmtdependency 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::IFileSystemtc::io::LocalStorage->tc::io::LocalFileSystemtc::io::SubStorage->tc::io::SubFileSystem
Changes
- Makefile updated (v6 2021-11-10)
- Supports different architecture targets for macOS
- Supports C++ files with
.ccextension.
- Consistent use of
US-Englishspelling for words like "initialisation". tc::ByteDatawas revised:- Added
operator==(other)(Equality operator). - Added
operator!=(other)(Inequality operator).
- Added
tc::Optionalwas revised:- Added
isSet()method - Determine if the Optional value exists- This returns the inverse of
isNull()
- This returns the inverse of
- Added
tc::FormatUtilswas revised:formatBytesAsStringWithLineLimit()overload fortc::ByteDatawas removed.formatListWithLineLimit()can now specify whether to print the first indent.formatBytesAsHxdHexString()overloads fortc::ByteDatawas 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::Aes128CbcEncryptortc::crypto::Aes192CbcEncryptortc::crypto::Aes256CbcEncryptor
- Added
tc::io::FileStream- Fixed documentation that erroneously indicated that setLength() was not implemented.
- Fixed bug on Windows where
ERROR_PATH_NOT_FOUNDwas 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::u16stringandstd::u32stringconstructors - 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
nposfor 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::SubSinksetLength()now throwstc::NotImplementedExceptioninstead 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
mbedTLSdependency 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_ptrorstd::shared_ptrinstead.
- 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::TranscodeUtilas static methodUTF8ToUTF32()
- Now resides in
tc::string::transcodeUTF16ToUTF32()- Now resides in
tc::string::TranscodeUtilas static methodUTF16ToUTF32()
- Now resides in
tc::string::transcodeUTF32ToUTF8()- Now resides in
tc::string::TranscodeUtilas static methodUTF32ToUTF8()
- Now resides in
tc::string::transcodeUTF32ToUTF16()- Now resides in
tc::string::TranscodeUtilas static methodUTF32ToUTF16()
- Now resides in
tc::string::transcodeUTF8ToUTF16()- Now resides in
tc::string::TranscodeUtilas static methodUTF8ToUTF16()
- Now resides in
tc::string::transcodeUTF16ToUTF8()- Now resides in
tc::string::TranscodeUtilas static methodUTF16ToUTF8()
- Now resides in
Renamed
tc::ResourceState->tc::ResourceStatustc:: ResourceStateFlag->tc::ResourceStatusFlag- Filesystem namespace (
tc::fs) -> Input/Output namespace (tc::io)IFileObject->IStreamIFileSystem->IStorageLocalFileObject->FileStreamLocalFileSystem->LocalStoragePartitionedFileObject->SubStreamSandboxedFileSystem->SubStoragePathUtils->PathUtil
Changes
tc::fs::GenericFileSystem&tc::fs::GenericFileObjecthave been removed, instead classes pass aroundstd::shared_ptrpointers where objects need to be shared..copyInstance()&.moveInstance()removed fromIStorage&IStreamclasses
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
structdefined 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::sDirectoryListinginstead)
Renamed
tc::fs::IFile->tc::fs::IFileObjecttc::fs::SandboxedIFile->tc::fs::PartitionedFileObjecttc::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_iteratoriterator.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