diff options
| author | Marvin W <git@larma.de> | 2026-08-22 19:03:26 +0200 |
|---|---|---|
| committer | Marvin W <git@larma.de> | 2026-10-23 16:58:30 +0200 |
| commit | b0456e13ed35e6ebf684b3a7f4d1cb4b6ec352cc (patch) | |
| tree | 5ecd70a986a08c1cf9984bdda97a9cc8c05255af /crypto-vala/src/cipher_converter.vala | |
| parent | 76a91fca2fc7dd5975e8ff0e6695f27c98539dba (diff) | |
Move crypto-vala inside libdino
Diffstat (limited to 'crypto-vala/src/cipher_converter.vala')
| -rw-r--r-- | crypto-vala/src/cipher_converter.vala | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/crypto-vala/src/cipher_converter.vala b/crypto-vala/src/cipher_converter.vala deleted file mode 100644 index 49e7af71..00000000 --- a/crypto-vala/src/cipher_converter.vala +++ /dev/null @@ -1,110 +0,0 @@ -using GLib; - -namespace Crypto { - -public class SymmetricCipherEncrypter : Converter, Object { - private SymmetricCipherEncryption cipher; - private size_t attached_taglen; - - public SymmetricCipherEncrypter(owned SymmetricCipherEncryption cipher, size_t attached_taglen = 0) { - this.cipher = (owned) cipher; - this.attached_taglen = attached_taglen; - } - - public void reset() { - try { - cipher.reset(); - } catch (Crypto.Error e) { - warning(@"$(e.domain) error while resetting cipher: $(e.message)"); - } - } - - public uint8[] get_tag(size_t taglen) throws Error { - return ((SymmetricCipherEncryption)cipher).get_tag(taglen); - } - - public ConverterResult convert(uint8[] inbuf, uint8[] outbuf, ConverterFlags flags, out size_t bytes_read, out size_t bytes_written) throws IOError { - if (inbuf.length > outbuf.length) { - throw new IOError.NO_SPACE("CipherConverter needs at least the size of input as output space"); - } - if ((flags & ConverterFlags.INPUT_AT_END) != 0 && inbuf.length + attached_taglen > outbuf.length) { - throw new IOError.NO_SPACE("CipherConverter needs additional output space to attach tag"); - } - try { - if (inbuf.length > 0) { - ((SymmetricCipherEncryption)cipher).encrypt(outbuf, inbuf); - } - bytes_read = inbuf.length; - bytes_written = inbuf.length; - if ((flags & ConverterFlags.INPUT_AT_END) != 0) { - if (attached_taglen > 0) { - Memory.copy((uint8*)outbuf + inbuf.length, get_tag(attached_taglen), attached_taglen); - bytes_written = inbuf.length + attached_taglen; - } - return ConverterResult.FINISHED; - } - if ((flags & ConverterFlags.FLUSH) != 0) { - return ConverterResult.FLUSHED; - } - return ConverterResult.CONVERTED; - } catch (Crypto.Error e) { - throw new IOError.FAILED(@"$(e.domain) error while encrypting: $(e.message)"); - } - } -} - -public class SymmetricCipherDecrypter : Converter, Object { - private SymmetricCipherDecryption cipher; - private size_t attached_taglen; - - public SymmetricCipherDecrypter(owned SymmetricCipherDecryption cipher, size_t attached_taglen = 0) { - this.cipher = (owned) cipher; - this.attached_taglen = attached_taglen; - } - - public void reset() { - try { - cipher.reset(); - } catch (Crypto.Error e) { - warning(@"$(e.domain) error while resetting cipher: $(e.message)"); - } - } - - public void check_tag(uint8[] tag) throws Error { - ((SymmetricCipherDecryption)cipher).check_tag(tag); - } - - public ConverterResult convert(uint8[] inbuf, uint8[] outbuf, ConverterFlags flags, out size_t bytes_read, out size_t bytes_written) throws IOError { - if (inbuf.length > outbuf.length + attached_taglen) { - throw new IOError.NO_SPACE("CipherConverter needs at least the size of input as output space"); - } - if ((flags & ConverterFlags.INPUT_AT_END) != 0 && inbuf.length < attached_taglen) { - throw new IOError.PARTIAL_INPUT("CipherConverter needs additional input to read tag"); - } else if ((flags & ConverterFlags.INPUT_AT_END) == 0 && inbuf.length < attached_taglen + 1) { - throw new IOError.PARTIAL_INPUT("CipherConverter needs additional input to make sure to not accidentally read tag"); - } - try { - inbuf.length -= (int) attached_taglen; - if (inbuf.length > 0) { - ((SymmetricCipherDecryption)cipher).decrypt(outbuf, inbuf); - } - bytes_read = inbuf.length; - bytes_written = inbuf.length; - inbuf.length += (int) attached_taglen; - if ((flags & ConverterFlags.INPUT_AT_END) != 0) { - if (attached_taglen > 0) { - check_tag(inbuf[(inbuf.length - attached_taglen):inbuf.length]); - bytes_read = inbuf.length; - } - return ConverterResult.FINISHED; - } - if ((flags & ConverterFlags.FLUSH) != 0) { - return ConverterResult.FLUSHED; - } - return ConverterResult.CONVERTED; - } catch (Crypto.Error e) { - throw new IOError.FAILED(@"$(e.domain) error while decrypting: $(e.message)"); - } - } -} -} |
