/*
 * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

/*
 * Copyright (c) 2003-2004, Jouni Malinen <jkmaline@cc.hut.fi>
 * Sun elects to license this software under the BSD license.
 * See README for more details.
 */
#ifndef __WPA_ENC_H
#define	__WPA_ENC_H

#pragma ident	"%Z%%M%	%I%	%E% SMI"

#include <openssl/sha.h>
#include <openssl/md5.h>

#ifdef	__cplusplus
extern "C" {
#endif

#define	SHA1_MAC_LEN	SHA_DIGEST_LENGTH
#define	MD5_MAC_LEN	MD5_DIGEST_LENGTH

void aes_wrap(uint8_t *, int, uint8_t *, uint8_t *);
int aes_unwrap(uint8_t *, int, uint8_t *, uint8_t *);

void hmac_sha1_vector(unsigned char *, unsigned int,
    size_t, unsigned char *[], unsigned int *, unsigned char *);

void hmac_sha1(unsigned char *, unsigned int,
    unsigned char *, unsigned int, unsigned char *);

void sha1_prf(unsigned char *, unsigned int,
    char *, unsigned char *, unsigned int, unsigned char *, size_t);

void pbkdf2_sha1(char *, char *, size_t, int, unsigned char *, size_t);

void rc4_skip(uint8_t *, size_t, size_t, uint8_t *, size_t);
void rc4(uint8_t *, size_t, uint8_t *, size_t);

void hmac_md5_vector(uint8_t *, size_t, size_t,
    uint8_t *[], size_t *, uint8_t *);
void hmac_md5(uint8_t *, size_t, uint8_t *, size_t, uint8_t *);

#ifdef __cplusplus
}
#endif

#endif /* __WPA_ENC_H */