AEADs icon indicating copy to clipboard operation
AEADs copied to clipboard

Consider adding an API that takes the nonce size and tag size as parameters

Open d3lm opened this issue 2 years ago • 3 comments

We are building a Node.js runtime for the browser so you can run Node.js entirely in your browser without relying on cloud servers. That means we run arbitrary code and right now it's only possible to specify the nonce size and tag size statically via types so we are forced to always call from_slice(...). Ideally we can create it once and not rely on a match that matches nonce size and tag size, e.g.

 match nonce.len() {
   12 => match tag_size {
     12 => AesGcm::<Aes, U12, U12>::new_from_slice(key),
     ...
   },
   ...
 }

So it'd be nice if we could do from_slice(key, nonce_size, tag_size).

d3lm avatar Jul 24 '23 07:07 d3lm

Alternatively an operation similar to encrypt_in_place_detached could accept an additional &mut [u8] slice to write the tag into, returning an error if its length isn't in the range 12..=16 (see #541 regarding lengths of 4 and 8, which require special care to support correctly).

I think that could be done as a completely additive change. I think it's otherwise nice to have monomorphized tag sizes for type safety reasons in every other use case than "I am implementing a dynamic API for a scripting language which needs to choose the tag size completely at runtime"

tarcieri avatar Jul 24 '23 12:07 tarcieri

Hm but that means that the tag size still needs to be configured statically right?

d3lm avatar Jul 25 '23 11:07 d3lm

No, it would take a slice, and return an error if it wasn't a valid size

tarcieri avatar Jul 29 '23 19:07 tarcieri