1a28ac8ca5d6fbc4e9e088d4fa036cbde55fd1f1
[platform/upstream/libnice.git] / stun / stunhmac.h
1 /*
2  * This file is part of the Nice GLib ICE library.
3  *
4  * (C) 2008 Collabora Ltd.
5  *  Contact: Youness Alaoui
6  * (C) 2008 Nokia Corporation. All rights reserved.
7  *
8  * The contents of this file are subject to the Mozilla Public License Version
9  * 1.1 (the "License"); you may not use this file except in compliance with
10  * the License. You may obtain a copy of the License at
11  * http://www.mozilla.org/MPL/
12  *
13  * Software distributed under the License is distributed on an "AS IS" basis,
14  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
15  * for the specific language governing rights and limitations under the
16  * License.
17  *
18  * The Original Code is the Nice GLib ICE library.
19  *
20  * The Initial Developers of the Original Code are Collabora Ltd and Nokia
21  * Corporation. All Rights Reserved.
22  *
23  * Contributors:
24  *   Youness Alaoui, Collabora Ltd.
25  *
26  * Alternatively, the contents of this file may be used under the terms of the
27  * the GNU Lesser General Public License Version 2.1 (the "LGPL"), in which
28  * case the provisions of LGPL are applicable instead of those above. If you
29  * wish to allow use of your version of this file only under the terms of the
30  * LGPL and not to allow others to use your version of this file under the
31  * MPL, indicate your decision by deleting the provisions above and replace
32  * them with the notice and other provisions required by the LGPL. If you do
33  * not delete the provisions above, a recipient may use your version of this
34  * file under either the MPL or the LGPL.
35  */
36
37 #ifndef _STUN_HMAC_H
38 #define _STUN_HMAC_H
39
40 #include "stunmessage.h"
41
42 /*
43  * Computes the MESSAGE-INTEGRITY hash of a STUN message.
44  * @param msg pointer to the STUN message
45  * @param len size of the message from header (inclusive) and up to
46  *            MESSAGE-INTEGRITY attribute (inclusive)
47  * @param sha output buffer for SHA1 hash (20 bytes)
48  * @param key HMAC key
49  * @param keylen HMAC key bytes length
50  *
51  * @return fingerprint value in <b>host</b> byte order.
52  */
53 void stun_sha1 (const uint8_t *msg, size_t len, size_t msg_len,
54     uint8_t *sha, const void *key, size_t keylen, int padding);
55
56 /*
57  * SIP H(A1) computation
58  */
59
60 void stun_hash_creds (const uint8_t *realm, size_t realm_len,
61     const uint8_t *username, size_t username_len,
62     const uint8_t *password, size_t password_len,
63     unsigned char md5[16]);
64 /*
65  * Generates a pseudo-random secure STUN transaction ID.
66  */
67 void stun_make_transid (StunTransactionId id);
68
69
70 #endif /* _STUN_HMAC_H */