version 1.7, 2005/06/17 02:44:32 |
version 1.7.2.1, 2006/10/06 03:19:32 |
|
|
|
/* $OpenBSD$ */ |
/* |
/* |
* Copyright (c) 2001 Markus Friedl. All rights reserved. |
* Copyright (c) 2001 Markus Friedl. All rights reserved. |
* |
* |
|
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
*/ |
|
|
#include "includes.h" |
#include <sys/types.h> |
RCSID("$OpenBSD$"); |
|
|
|
#include <openssl/hmac.h> |
#include <openssl/hmac.h> |
|
|
|
#include <string.h> |
|
#include <signal.h> |
|
|
#include "xmalloc.h" |
#include "xmalloc.h" |
#include "getput.h" |
|
#include "log.h" |
#include "log.h" |
#include "cipher.h" |
#include "cipher.h" |
|
#include "buffer.h" |
|
#include "key.h" |
#include "kex.h" |
#include "kex.h" |
#include "mac.h" |
#include "mac.h" |
|
#include "misc.h" |
|
|
struct { |
struct { |
char *name; |
char *name; |
|
|
if (mac->mac_len > sizeof(m)) |
if (mac->mac_len > sizeof(m)) |
fatal("mac_compute: mac too long"); |
fatal("mac_compute: mac too long"); |
HMAC_Init(&c, mac->key, mac->key_len, mac->md); |
HMAC_Init(&c, mac->key, mac->key_len, mac->md); |
PUT_32BIT(b, seqno); |
put_u32(b, seqno); |
HMAC_Update(&c, b, sizeof(b)); |
HMAC_Update(&c, b, sizeof(b)); |
HMAC_Update(&c, data, datalen); |
HMAC_Update(&c, data, datalen); |
HMAC_Final(&c, m, NULL); |
HMAC_Final(&c, m, NULL); |