On Fri, Dec 04, 2020 at 10:46:26AM -0500, Bruce Fields wrote: > On Fri, Dec 04, 2020 at 02:59:35PM +0000, David Howells wrote: > > Hi Chuck, Bruce, > > > > Why is gss_krb5_crypto.c using an auxiliary cipher? For reference, the > > gss_krb5_aes_encrypt() code looks like the attached. > > > > >From what I can tell, in AES mode, the difference between the main cipher and > > the auxiliary cipher is that the latter is "cbc(aes)" whereas the former is > > "cts(cbc(aes))" - but they have the same key. > > > > Reading up on CTS, I'm guessing the reason it's like this is that CTS is the > > same as the non-CTS, except for the last two blocks, but the non-CTS one is > > more efficient. > > CTS is cipher-text stealing, isn't it? I think it was Kevin Coffman > that did that, and I don't remember the history. I thought it was > required by some spec or peer implementation (maybe Windows?) but I > really don't remember. It may predate git. I'll dig around and see > what I can find. Like I say, I've got no insight here, I'm just grepping through mailboxes and stuff, but maybe some of this history's useful; Addition of CTS mode: https://lore.kernel.org/linux-crypto/20080220202543.3209.47410.stgit@xxxxxxxxxxxxxxxxxxx/ This rpc/krb5 code went in with 934a95aa1c9c "gss_krb5: add remaining pieces to enable AES encryption support"; may be worth looking at that and the series leading up to it, I see the changelogs have some RFC references that might explain why it's using the crypto it is. --b.