Just use RAND_bytes() for generating random bytes
This commit is contained in:
@@ -38,23 +38,11 @@ krb5_generate_seq_number(krb5_context context,
|
|||||||
const krb5_keyblock *key,
|
const krb5_keyblock *key,
|
||||||
uint32_t *seqno)
|
uint32_t *seqno)
|
||||||
{
|
{
|
||||||
krb5_error_code ret;
|
if (RAND_bytes((void *)seqno, sizeof(*seqno)) != 1)
|
||||||
krb5_keyblock *subkey;
|
krb5_abortx(context, "Failed to generate random block");
|
||||||
uint32_t q;
|
/* MIT used signed numbers, lets not stomp into that space directly */
|
||||||
u_char *p;
|
*seqno &= 0x3fffffff;
|
||||||
int i;
|
if (*seqno == 0)
|
||||||
|
*seqno = 1;
|
||||||
ret = krb5_generate_subkey (context, key, &subkey);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
q = 0;
|
|
||||||
for (p = (u_char *)subkey->keyvalue.data, i = 0;
|
|
||||||
i < subkey->keyvalue.length;
|
|
||||||
++i, ++p)
|
|
||||||
q = (q << 8) | *p;
|
|
||||||
q &= 0xffffffff;
|
|
||||||
*seqno = q;
|
|
||||||
krb5_free_keyblock (context, subkey);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user