You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For some use-cases (e.g. in TLS implementations) you need to decrypt/encrypt data from read-only source and write result into provided buffer.
To prevent code duplication I think the best solution will be to implement algorithms over enum like this:
enumCryptoBuf<'a>{InBuf(&'amut[u8]),BufToBuf{in_buf:&'a[u8],out_buf:&'amut[u8]},}traitCipher:Sized{/// Users are heavily discouraged from using this methodfn_encrypt(self,data:CryptoBuf);fnencrypt(self,buf:&mut[u8]){self._encrypt(CryptoBuf::InBuf(buf));}fnencrypt_b2b(self,in_buf:&mut[u8],out_buf:&mut[u8]) -> Result<(),Error>{ifcheck_lengths(in_buf, out_buf){Err(Error)? }self._encrypt(CryptoBuf::BufToBuf{ in_buf, out_buf });Ok(())}}
Any thoughts?
The text was updated successfully, but these errors were encountered:
Hm, you are right, but I think using a separate enum will be more ergonomic (for algorithm implementations), e.g. we will be able to offload to it a lot of common functionality, like: reading, writing, indexing, slicing, ensuring that buffers have equal length, etc.
I think it also could be worth to think about how we could integrate Read and Write here.
For some use-cases (e.g. in TLS implementations) you need to decrypt/encrypt data from read-only source and write result into provided buffer.
To prevent code duplication I think the best solution will be to implement algorithms over enum like this:
Any thoughts?
The text was updated successfully, but these errors were encountered: