Skip to content

Releases: jakcron/libtoolchain

libtoolchain v0.8.0

14 Oct 01:12
578d170
Compare
Choose a tag to compare

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().

Changed/Fixed

  • Fixed VS project file duplicate entry issue (#37)

Renamed

N/A

Removed

N/A

libtoolchain v0.7.0

31 Dec 13:35
Compare
Choose a tag to compare

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().
      • 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().
      • 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().
      • 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().
      • 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().
      • 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().

Changed

  • Makefile updated (v9 2023-12-31)
    • Change ar usage to be compatible with more Linux/BSD systems.
  • libfmt updated to v10.1.1
  • libmbedtls update v2.16.12

Renamed

N/A

Removed

N/A

libtoolchain v0.6.1

21 Jan 14:32
Compare
Choose a tag to compare
libtoolchain v0.6.1 Pre-release
Pre-release

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
  • Cryptography library (tc::crypto):
    • Top level library header (tc/crypto.h) was updated to include:
      • tc/crypto/CcmEncryptor.h
      • tc/crypto/Aes128CcmEncryptor.h

Renamed

N/A

Removed

N/A

libtoolchain v0.6.0

01 Jan 13:21
0bd9836
Compare
Choose a tag to compare
libtoolchain v0.6.0 Pre-release
Pre-release

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().
  • 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't
      • tc::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

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
      • SHA-256
        • When written in a comment SHA-256 -> SHA2-256
        • class HmacSha256Generator -> class HmacSha2256Generator
          • Utility function GenerateHmacSha256Mac() -> GenerateHmacSha2256Mac()
        • class Pbkdf2Sha256KeyDeriver -> class Pbkdf2Sha2256KeyDeriver
          • Utility function DeriveKeyPbkdf2Sha256() -> DeriveKeyPbkdf2Sha2256()
        • 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()
        • 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()
        • 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()
        • class Sha256Generator -> class Sha2256Generator
          • Utility function GenerateSha256Hash() -> GenerateSha2256Hash()
      • SHA-512
        • When written in a comment SHA-512 -> SHA2-512
        • class HmacSha512Generator -> class HmacSha2512Generator
          • Utility function GenerateHmacSha512Mac() -> GenerateHmacSha2512Mac()
        • class Pbkdf2Sha512KeyDeriver -> class Pbkdf2Sha2512KeyDeriver
          • Utility function DeriveKeyPbkdf2Sha512() -> DeriveKeyPbkdf2Sha2512()
        • 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()
        • 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()
        • 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()
        • class Sha512Generator -> class Sha2512Generator
          • Utility function GenerateSha512Hash() -> GenerateSha2512Hash()

Removed

N/A

libtoolchain v0.5.2

28 Mar 07:18
ebdca52
Compare
Choose a tag to compare
libtoolchain v0.5.2 Pre-release
Pre-release

Changes since v0.5.1

Changes

  • Fix issue with cloning submodules from an unauthenticated git client.

libtoolchain v0.5.1

12 Mar 00:24
Compare
Choose a tag to compare
libtoolchain v0.5.1 Pre-release
Pre-release

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<>
  • Update VisualStudio project file to include libfmt as a reference.

libtoolchain v0.5.0

07 Mar 11:33
55ec07e
Compare
Choose a tag to compare
libtoolchain v0.5.0 Pre-release
Pre-release

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.
  • 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 virtual read-only file-system created using a file-system snapshot.

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.
  • tc::io::MemorySource & tc::io::MemoryStream
    • Added move from tc::ByteData&& constructor.
  • tc::io::Path
    • Added std::initializer_list<std::string> constructor.
    • Fixed documentation to list possible exceptions for std::string, std::u16string and std::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 with subpath()
    • 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::string
      • to_u16string(Format) - Convert path to std::u16string
      • to_u32string(Format) - Convert path to std::u32string
    • Added operators to convert Path to string
      • operator std::string() - Implicit conversion to a natively formatted std::string
      • operator std::u16string() - Implicit conversion to a natively formatted std::u16string
      • operator std::u32string() - Implicit conversion to a natively formatted std::u32string
  • 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 throws tc::NotImplementedException instead of tc::NotSupportedException. This is inline with other class behaviour.
  • tc::io::SubStream
    • Fixed bug where canRead(), canWrite() and canSeek() returned the wrong data.

libtoolchain v0.4.0

07 Mar 11:33
cf7a628
Compare
Choose a tag to compare
libtoolchain v0.4.0 Pre-release
Pre-release

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().
      • class Aes192EcbEncryptor - Class for AES-ECB encryption/decryption with a keysize of 192 bits.
        • Utility function EncryptAes192Ecb().
        • Utility function DecryptAes192Ecb().
      • class Aes256EcbEncryptor - Class for AES-ECB encryption/decryption with a keysize of 256 bits.
        • Utility function EncryptAes256Ecb().
        • Utility function DecryptAes256Ecb().
      • class Aes128CtrEncryptor - Class for AES-CTR encryption/decryption with a keysize of 128 bits.
        • Utility function EncryptAes128Ctr().
        • Utility function DecryptAes128Ctr().
      • class Aes192CtrEncryptor - Class for AES-CTR encryption/decryption with a keysize of 192 bits.
        • Utility function EncryptAes192Ctr().
        • Utility function DecryptAes192Ctr().
      • class Aes256CtrEncryptor - Class for AES-CTR encryption/decryption with a keysize of 256 bits.
        • Utility function EncryptAes256Ctr().
        • Utility function DecryptAes256Ctr().
      • class Aes128CbcEncryptor - Class for AES-CBC encryption/decryption with a keysize of 128 bits.
        • Utility function EncryptAes128Cbc().
        • Utility function DecryptAes128Cbc().
      • class Aes192CbcEncryptor - Class for AES-CBC encryption/decryption with a keysize of 192 bits.
        • Utility function EncryptAes192Cbc().
        • Utility function DecryptAes192Cbc().
      • class Aes256CbcEncryptor - Class for AES-CBC encryption/decryption with a keysize of 256 bits.
        • Utility function EncryptAes256Cbc().
        • Utility function DecryptAes256Cbc().
      • class Aes128XtsEncryptor - Class for AES-XTS encryption/decryption with a keysize of 128 bits.
        • Utility function EncryptAes128Xts().
        • Utility function DecryptAes128Xts().
      • class Aes256XtsEncryptor - Class for AES-XTS encryption/decryption with a keysize of 256 bits.
        • Utility function EncryptAes256Xts().
        • Utility function DecryptAes256Xts().
    • Hash Calculation:
      • class Md5Generator - Class for calculating MD5 hash.
        • Utility function GenerateMd5Hash().
      • class Sha1Generator - Class for calculating SHA-1 hash.
        • Utility function GenerateSha1Hash().
      • class Sha256Generator - Class for calculating SHA-256 hash.
        • Utility function GenerateSha256Hash().
      • class Sha512Generator - Class for calculating SHA-512 hash.
        • Utility function GenerateSha512Hash().
    • Hash MAC (HMAC) Calculation:
      • class HmacMd5Generator - Class for calculating HMAC-MD5.
        • Utility function GenerateHmacMd5Mac().
      • class HmacSha1Generator - Class for calculating HMAC-SHA-1.
        • Utility function GenerateHmacSha1Mac().
      • class HmacSha256Generator - Class for calculating HMAC-SHA-256.
        • Utility function GenerateHmacSha256Mac().
      • class HmacSha512Generator - Class for calculating HMAC-SHA-512.
        • Utility function GenerateHmacSha512Mac().
    • Password Based Key Derivation Function (PBKDF):
      • class Pbkdf1Md5Deriver - Class for deriving a key using PBKDF1-MD5.
        • Utility function DeriveKeyPbkdf1Md5().
      • class Pbkdf1Sha1Deriver - Class for deriving a key using PBKDF1-SHA-1.
        • Utility function DeriveKeyPbkdf1Sha1().
      • class Pbkdf2Sha1Deriver - Class for deriving a key using PBKDF2-SHA-1.
        • Utility function DeriveKeyPbkdf2Sha1().
      • class Pbkdf2Sha256Deriver - Class for deriving a key using PBKDF2-SHA-256.
        • Utility function DeriveKeyPbkdf2Sha256().
      • class Pbkdf2Sha512Deriver - Class for deriving a key using PBKDF2-SHA-512.
        • Utility function DeriveKeyPbkdf2Sha512().
    • Psuedo-random Byte Generation (PRBG):
      • class PsuedoRandomByteGenerator - Class for generating random data.
        • Utility function GeneratePseudoRandomBytes().
    • 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().
      • class Rsa1024Pkcs1Md5Signer - Class for generating and verifying RSA1024-PKCS1-MD5 signatures.
        • Utility function SignRsa1024Pkcs1Md5()
        • Utility function VerifyRsa1024Pkcs1Md5()
      • class Rsa2048Pkcs1Md5Signer - Class for generating and verifying RSA2048-PKCS1-MD5 signatures.
        • Utility function SignRsa2048Pkcs1Md5()
        • Utility function VerifyRsa2048Pkcs1Md5()
      • class Rsa4096Pkcs1Md5Signer - Class for generating and verifying RSA4096-PKCS1-MD5 signatures.
        • Utility function SignRsa4096Pkcs1Md5()
        • Utility function VerifyRsa4096Pkcs1Md5()
      • class Rsa1024Pkcs1Sha1Signer - Class for generating and verifying RSA1024-PKCS1-SHA-1 signatures.
        • Utility function SignRsa1024Pkcs1Sha1()
        • Utility function VerifyRsa1024Pkcs1Sha1()
      • class Rsa2048Pkcs1Sha1Signer - Class for generating and verifying RSA2048-PKCS1-SHA-1 signatures.
        • Utility function SignRsa2048Pkcs1Sha1()
        • Utility function VerifyRsa2048Pkcs1Sha1()
      • class Rsa4096Pkcs1Sha1Signer - Class for generating and verifying RSA4096-PKCS1-SHA-1 signatures.
        • Utility function SignRsa4096Pkcs1Sha1()
        • Utility function VerifyRsa4096Pkcs1Sha1()
      • 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()
      • class Rsa4096Pkcs1Sha256Signer - Class for generating and verifying RSA4096-PKCS1-SHA2-256 signatures.
        • Utility function SignRsa4096Pkcs1Sha256()
        • Utility function VerifyRsa4096Pkcs1Sha256()
      • 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()
      • class Rsa4096Pkcs1Sha512Signer - Class for generating and verifying RSA4096-PKCS1-SHA2-512 signatures.
        • Utility function SignRsa4096Pkcs1Sha512()
        • Utility function VerifyRsa4096Pkcs1Sha512()
      • 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()
      • class Rsa4096PssSha256Signer - Class for generating and verifying RSA4096-PSS-SHA2-256 signatures.
        • Utility function SignRsa4096PssSha256()
        • Utility function VerifyRsa4096PssSha256()
      • 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()
      • class Rsa4096PssSha512Signer - Class for generating and verifying RSA4096-PSS-SHA2-512 signatures.
        • Utility function SignRsa4096PssSha512()
        • Utility function VerifyRsa4096PssSha512()
      • class Rsa1024OaepSha256Encryptor - Class for RSA1024-OAEP-SHA2-256 encryption/decryption.
        • Utility function EncryptRsa1024OaepSha256()
        • Utility function DecryptRsa1024OaepSha256()
      • class Rsa2048OaepSha256Encryptor - Class for RSA2048-OAEP-SHA2-256 encryption/decryption.
        • Utility function EncryptRsa2048OaepSha256()
        • Utility function DecryptRsa2048OaepSha256()
      • class Rsa4096OaepSha256Encryptor - Class for RSA4096-OAEP-SHA2-256 encryption/decryption.
        • Utility function EncryptRsa4096OaepSha256()
        • Utility function DecryptRsa4096OaepSha256()
      • class Rsa2048OaepSha512Encryptor - Class for RSA2048-OAEP-SHA2-512 encryption/decryption.
        • Utility function EncryptRsa2048OaepSha512()
        • Utility function DecryptRsa2048OaepSha512()
      • class Rsa4096OaepSha512Encryptor - Class for RSA4096-OAEP-SHA2-512 encryption/decryption.
        • Utility function EncryptRsa4096OaepSha512()
        • Utility function DecryptRsa4096OaepSha512()
  • Operating System library (tc::os):
    • Utility function getEnvVar() - Get environment variable.
    • umain() - Multi-platform UTF-8 entry point.

Removed

Rena...

Read more

libtoolchain v0.3.0

10 Apr 16:23
ad01f51
Compare
Choose a tag to compare
libtoolchain v0.3.0 Pre-release
Pre-release

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) (previously tc::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 or std::shared_ptr instead.
  • 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 method UTF8ToUTF32()
  • tc::string::transcodeUTF16ToUTF32()
    • Now resides in tc::string::TranscodeUtil as static method UTF16ToUTF32()
  • tc::string::transcodeUTF32ToUTF8()
    • Now resides in tc::string::TranscodeUtil as static method UTF32ToUTF8()
  • tc::string::transcodeUTF32ToUTF16()
    • Now resides in tc::string::TranscodeUtil as static method UTF32ToUTF16()
  • tc::string::transcodeUTF8ToUTF16()
    • Now resides in tc::string::TranscodeUtil as static method UTF8ToUTF16()
  • tc::string::transcodeUTF16ToUTF8()
    • Now resides in tc::string::TranscodeUtil as static method UTF16ToUTF8()

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 around std::shared_ptr pointers where objects need to be shared.
    • .copyInstance() & .moveInstance() removed from IStorage & IStream classes
  • tc::io::IStream (previously tc::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 (previously tc::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 constructor
    • FileStream(const Path& path, FileAccessMode mode) -> FileStream(const Path& path, FileMode mode, FileAccess access)
  • tc::io::IStorage (previously tc::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

19 Jun 10:05
Compare
Choose a tag to compare
libtoolchain v0.2.0 Pre-release
Pre-release

Changes Since v0.1.0

Added

  • tc::ResourceState & enum tc::ResourceStateFlag
    • Stores the life-cycle state of a resource
  • tc::fs::sDirectoryListing (replaces tc::fs::DirectoryInfo)
    • Now a struct defined in tc/fs/IFileSystem.h
  • 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 (use tc::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 validation
  • le_uint16_t, le_uint32_t, le_uint64_t, be_uint16_t, be_uint32_t, be_uint64_t
    • Rename:
      • .set() -> .wrap()
      • .get() -> .unwrap()
  • tc::fs::Path: Behave more like std::list
    • Removed:
      • .getPathElementList()
      • .setPathElementList()
    • Added:
      • const_iterator
      • iterator
      • .begin()
      • .end()
      • .pop_front()
      • .pop_back()
      • .push_front()
      • .push_back()
      • .clear()
      • .size()
  • tc::fs::IFileObject:
    • Enable Life-cycle management
      • Added .close() and .state()
      • Implementations are encouraged to provide .open() or .initalise() method
      • .state() returns ResourceState
    • Enable Copy/move when cast as IFileObject
      • Added .copyInstance() and .moveInstance()
  • tc::fs::PartitionedFileObject: Implements the changes in tc::fs::IFileObject
    • Add initialise()
    • Add PartitionedFileObject::PartitionedFileObject() (default constructor)
  • tc::fs::IFileSystem:
    • Enable Life-cycle management
      • Added .closeFs() and .getFsState()
    • Enable Copy/move when cast as IFileSystem
      • Added .copyInstance() and .moveInstance()
    • Create file without opening file
      • Added .createFile()
    • Renamed methods for clarity/consistency
      • .deleteFile() -> .removeFile()
      • .getCurrentDirectory() -> .getWorkingDirectory()
      • .setCurrentDirectory() -> .setWorkingDirectory()
      • .deleteDirectory() -> .removeDirectory()
    • .openFile() no longer returns IFileObject*, instead takes an additional param tc::fs::GenericFileObject& file
  • tc::fs::LocalFileSystem: Implements the changes in tc::fs::IFileSystem
    • Add openFs()
  • tc::fs::SandboxedFileSystem: Implements the changes in tc::fs::IFileSystem
    • Add initialiseFs()
    • Add SandboxedFileSystem::SandboxedFileSystem() (default constructor)