#include "ntp_machine.h"
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include "ntp_types.h"
#include "ntp_string.h"
#include "global.h"
#include "md5.h"
#include "ntp_stdlib.h"
#define BLOCK_OCTETS 16
int
MD5authencrypt(
u_char *key,
u_int32 *pkt,
int length
)
{
MD5_CTX ctx;
u_char digest[BLOCK_OCTETS];
int i;
MD5Init(&ctx);
MD5Update(&ctx, key, (u_int)cache_keylen);
MD5Update(&ctx, (u_char *)pkt, (u_int)length);
MD5Final(digest, &ctx);
i = length / 4;
memmove((char *)&pkt[i + 1], (char *)digest, BLOCK_OCTETS);
return (BLOCK_OCTETS + 4);
}
int
MD5authdecrypt(
u_char *key,
u_int32 *pkt,
int length,
int size
)
{
MD5_CTX ctx;
u_char digest[BLOCK_OCTETS];
if (size != BLOCK_OCTETS + 4)
return (0);
MD5Init(&ctx);
MD5Update(&ctx, key, (u_int)cache_keylen);
MD5Update(&ctx, (u_char *)pkt, (u_int)length);
MD5Final(digest, &ctx);
return (!memcmp((char *)digest, (char *)pkt + length + 4,
BLOCK_OCTETS));
}