X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/e6912e4438388021222b7b449d1e84709d943572..1778ca95377e045bd56a0a99d4d27b476ed85345:/symm/chacha.h diff --git a/symm/chacha.h b/symm/chacha.h index 490b2059..4e5a765a 100644 --- a/symm/chacha.h +++ b/symm/chacha.h @@ -47,6 +47,7 @@ /*----- Constants ---------------------------------------------------------*/ #define CHACHA_NONCESZ 8u +#define CHACHA_IETF_NONCESZ 12u #define CHACHA_KEYSZ 32u #define CHACHA_OUTSZ 64u @@ -91,10 +92,11 @@ extern void chacha_init(chacha_ctx */*ctx*/, const void */*key*/, size_t /*ksz*/, const void */*nonce*/); -/* --- @chacha_setnonce@ --- * +/* --- @chacha_setnonce{,_ietf}@ --- * * * Arguments: @chacha_ctx *ctx@ = pointer to context - * @const void *nonce@ = the nonce (@CHACHA_NONCESZ@ bytes) + * @const void *nonce@ = the nonce (@CHACHA_NONCESZ@ or + * @CHACHA_IETF_NONCESZ@ bytes) * * Returns: --- * @@ -104,24 +106,26 @@ extern void chacha_init(chacha_ctx */*ctx*/, */ extern void chacha_setnonce(chacha_ctx */*ctx*/, const void */*nonce*/); +extern void chacha_setnonce_ietf(chacha_ctx */*ctx*/, const void */*nonce*/); -/* --- @chacha_seek{,u64}@ --- * +/* --- @chacha_seek{,u64,_ietf}@ --- * * * Arguments: @chacha_ctx *ctx@ = pointer to context - * @unsigned long i@, @kludge64 i@ = new position to set + * @unsigned long i@, @kludge64 i@, @uint32 i@ = new position * * Returns: --- * - * Use: Sets a new stream position, in units of ChaCha output + * Use: Sets a new stream position, in units of Chacha output * blocks, which are @CHACHA_OUTSZ@ bytes each. Byte - * granularity can be achieved by calling @chacha_encrypt@ + * granularity can be achieved by calling @chachaR_encrypt@ * appropriately. */ extern void chacha_seek(chacha_ctx */*ctx*/, unsigned long /*i*/); extern void chacha_seeku64(chacha_ctx */*ctx*/, kludge64 /*i*/); +extern void chacha_seek_ietf(chacha_ctx */*ctx*/, uint32 /*i*/); -/* --- @chacha_tell{,u64}@ --- * +/* --- @chacha_tell{,u64,_ietf}@ --- * * * Arguments: @chacha_ctx *ctx@ = pointer to context * @@ -131,6 +135,7 @@ extern void chacha_seeku64(chacha_ctx */*ctx*/, kludge64 /*i*/); extern unsigned long chacha_tell(chacha_ctx */*ctx*/); extern kludge64 chacha_tellu64(chacha_ctx */*ctx*/); +extern uint32 chacha_tell_ietf(chacha_ctx */*ctx*/); /* --- @chacha{20,12,8}_encrypt@ --- * * @@ -305,22 +310,28 @@ extern const octet chacha_keysz[]; #define chacha20_keysz chacha_keysz #define chacha12_keysz chacha_keysz #define chacha8_keysz chacha_keysz +#define chacha_ietf_keysz chacha_keysz +#define chacha20_ietf_keysz chacha_keysz +#define chacha12_ietf_keysz chacha_keysz +#define chacha8_ietf_keysz chacha_keysz #define xchacha_keysz chacha_keysz #define xchacha20_keysz chacha_keysz #define xchacha12_keysz chacha_keysz #define xchacha8_keysz chacha_keysz const gccipher chacha20, chacha12, chacha8; +const gccipher chacha20_ietf, chacha12_ietf, chacha8_ietf; const gccipher xchacha20, xchacha12, xchacha8; /*----- Generic random number generator interface -------------------------*/ -/* --- @chacha{20,12,8}_rand@, @xchacha{20,12,8}_rand@ --- * +/* --- @chacha{20,12,8}{,_ietf}_rand@, @xchacha{20,12,8}_rand@ --- * * * Arguments: @const void *k@ = pointer to key material * @size_t ksz@ = size of key material * @const void *n@ = pointer to nonce or null - * (@CHACHA_NONCESZ@ or @XCHACHA_NONCESZ@) + * (@CHACHA_NONCESZ@, @CHACHA_IETF_NONCESZ@, or + * @XCHACHA_NONCESZ@) * * Returns: Pointer to generic random number generator instance. * @@ -334,6 +345,12 @@ extern grand *chacha12_rand(const void */*k*/, size_t /*ksz*/, const void */*n*/); extern grand *chacha8_rand(const void */*k*/, size_t /*ksz*/, const void */*n*/); +extern grand *chacha20_ietf_rand(const void */*k*/, size_t /*ksz*/, + const void */*n*/); +extern grand *chacha12_ietf_rand(const void */*k*/, size_t /*ksz*/, + const void */*n*/); +extern grand *chacha8_ietf_rand(const void */*k*/, size_t /*ksz*/, + const void */*n*/); extern grand *xchacha20_rand(const void */*k*/, size_t /*ksz*/, const void */*n*/); extern grand *xchacha12_rand(const void */*k*/, size_t /*ksz*/,