1. 24 Apr, 2021 1 commit
  2. 19 Apr, 2021 1 commit
  3. 15 Apr, 2021 7 commits
  4. 12 Apr, 2021 1 commit
  5. 02 Mar, 2021 2 commits
  6. 27 Feb, 2021 2 commits
  7. 13 Dec, 2020 2 commits
  8. 12 Dec, 2020 1 commit
  9. 21 Nov, 2020 1 commit
  10. 08 Nov, 2020 7 commits
  11. 07 Nov, 2020 1 commit
  12. 06 Nov, 2020 5 commits
  13. 01 Nov, 2020 1 commit
  14. 12 Oct, 2020 2 commits
    • HacKan's avatar
      🔖 Bump version · edbeb250
      HacKan authored
      edbeb250
    • HacKan's avatar
      🏗 Split serializer class into mixins · 37cb58da
      HacKan authored
      Instead of inyecting objects to the serializer class, inherit from the
      timestamp abstract class simplifying the code.
      
      Additionally split into mixins and abstracts so that with this
      construction we allow end users the possibility to build and adapt new
      classes for their own use case, as well as to easily implement custom
      serializer such as msgpack or custom compressor and encoder, i.e.
      base62.
      
      Allow to set the desired compression level.
      
      Check and skip detrimental compression.
      37cb58da
  15. 10 Oct, 2020 4 commits
    • HacKan's avatar
      Abstract timestamp signer · efb25ec4
      HacKan authored
      Create a reusable abstract base class for a timestamp signer.
      efb25ec4
    • HacKan's avatar
      Refactor all exceptions · f76807ec
      HacKan authored
      Split exception into something more useful so now it's easier to catch
      exactly what you want: exceptions are diveded between those that are
      related to working with signed data, those that are related to unsigned
      data and those that not related to data at all.
      
      Improve descriptions in docstrings and make all exceptions properly
      explicit.
      f76807ec
    • HacKan's avatar
      Make all classes high-level · 36774480
      HacKan authored
      This is achieved by deriving key from secret and
      person in all classes, forcing all inputs to bytes,
      and always concatenating person with class name to
      prevent signed data misuse.
      
      The minimum digest size changed to 16 (was 8).
      36774480
    • HacKan's avatar
      Always encode signatures · 43419aaf
      HacKan authored
      This commit packs a good amount of changes, yet the most important one
      is that now we always encode the salt and signature and this allows
      the high-level class to verify the signature before decoding (this is
      not _entirely_ true, since it receives string and it needs bytes so it
      needs to `.encode()` it before checking the sig, but there's no way
      around this unfortunately: it's the simplest operation that can be
      achieved before checking sig; i.e. other packages even decodes base64
      data apart from converting string to bytes).
      
      The salt is actually generated and used as base64 data to avoid
      needing to decode it when checking the signature, which would
      otherwise defeat this whole refactor. This causes the loss of a few bits
      of random data but its otherwise negligible given the largest possible
      salt size is used.
      
      To separate the composite signature (salt + signature) from the data a
      symbol (`.`) is used given that now it's not possible to know the fixed
      size from beforehand.
      
      The timestamp value is also base64 encoded and decoded, but that's
      relatively safe since the signature is verified before decoding.
      Similarly as before a symbol (`.`) is used to separate the timestamp
      from the data.
      
      Force bytes was removed from low-level functions because I can't help
      myself to see that there.
      
      Blake2Serializer was renamed to Blake2SerializerSigner because of
      reasons.
      43419aaf
  16. 06 Oct, 2020 2 commits