- what to do with IV, should it be a cipher thing or a protocol thing? ( currently swaying toward a 'cipher thing' since not all ciphers maintain IV information and this way the protocol engine does not have to worry about it; also another bonus is that the IV does not have to be passed to the cipher engine on every packet ) [ BTW, current implemntation is 'cipher thing' ] - should the callback be issues on every job execution? a) if the job fails, or is finished, or is scheduled in async mode the callback function is called. The advantage: if there is any code to be executed after a job is finished it must only be placed in the callback and not also after the 'execute_job'. b) if the job is scheduled in async mode the callback function is used, otherwise (failure/software processing) the result code must be checked and no callback is called. The advantage: if the engine is a software one, there is less stack waste for nested/sequential engines. [ current implementation uses 'a' which optimizes for less code duplication and better performance for async engines ] - write more tests: - MD5 known values test - 3DES known values test (enc/dec) (cdc/ede)