I would like to develop a library that encodes and decodes using XXTEA algorithm with the following specifications:
- Key configuration,
- ECB (electronic code book) mode of encrypting and decrypting (there are other modes like CBC, OFB, CFB, CTR that I wouldn't implement),
- Zero Padding or PKCS#7 Padding configuration (the input text might require padding to fit into a cryptographic block of the algorithm, PKCS#7 pading being one of the safest around),
- Initialization Vector configuration (IV being zero if not set - but this is not safe),
- Benchmark testing (not needed to be included on the device later),
- Self-test of the algorithm with several encryption-decryption tests (not needed to be included on the device later).
I would test this program in simulator, Arduino Uno and also with third-party implementations of XXTEA.
I would like to ask for details regarding constraints of the implementation like memory used constraints, flash size constraints or any speed constraints because I could try to optimize the code in favor of size, memory used or speed.
(I'm not an expert in optimizations, but I could be renouncing to some configurations that are not so important in favor to size if needed - for example.)
Why should I develop this library?
- I worked as a laboratory assistant in faculty on a few courses that included low-level coding such as assembler (with microcontrollers), Verilog (hardware programming) on a FPGA, assembler or C with Arduino Uno.