mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
gss_krb5: Use random value to initialize confounder
Initialize the value used for the confounder to a random value rather than starting from zero. Allow for confounders of length 8 or 16 (which will be needed for AES). Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
parent
db8add5789
commit
863a24882e
1 changed files with 18 additions and 4 deletions
|
@ -87,8 +87,8 @@ out:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static void
|
||||||
make_confounder(char *p, int blocksize)
|
make_confounder(char *p, u32 conflen)
|
||||||
{
|
{
|
||||||
static u64 i = 0;
|
static u64 i = 0;
|
||||||
u64 *q = (u64 *)p;
|
u64 *q = (u64 *)p;
|
||||||
|
@ -102,8 +102,22 @@ make_confounder(char *p, int blocksize)
|
||||||
* uniqueness would mean worrying about atomicity and rollover, and I
|
* uniqueness would mean worrying about atomicity and rollover, and I
|
||||||
* don't care enough. */
|
* don't care enough. */
|
||||||
|
|
||||||
BUG_ON(blocksize != 8);
|
/* initialize to random value */
|
||||||
*q = i++;
|
if (i == 0) {
|
||||||
|
i = random32();
|
||||||
|
i = (i << 32) | random32();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (conflen) {
|
||||||
|
case 16:
|
||||||
|
*q++ = i++;
|
||||||
|
/* fall through */
|
||||||
|
case 8:
|
||||||
|
*q++ = i++;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
BUG();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Assumptions: the head and tail of inbuf are ours to play with.
|
/* Assumptions: the head and tail of inbuf are ours to play with.
|
||||||
|
|
Loading…
Reference in a new issue