blob: 7529a7b30aa596008721d4ee069e80eecad151dc [file] [log] [blame]
Tristan Matthews0a329cc2013-07-17 13:20:14 -04001/* $Id$ */
2/*
3 * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
4 * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20#ifndef __PJLIB_UTIL_SHA1_H__
21#define __PJLIB_UTIL_SHA1_H__
22
23/**
24 * @file sha1.h
25 * @brief SHA1 encryption implementation
26 */
27
28#include <pj/types.h>
29
30PJ_BEGIN_DECL
31
32/**
33 * @defgroup PJLIB_UTIL_SHA1 SHA1
34 * @ingroup PJLIB_UTIL_ENCRYPTION
35 * @{
36 */
37
38/** SHA1 context */
39typedef struct pj_sha1_context
40{
41 pj_uint32_t state[5]; /**< State */
42 pj_uint32_t count[2]; /**< Count */
43 pj_uint8_t buffer[64]; /**< Buffer */
44} pj_sha1_context;
45
46/** SHA1 digest size is 20 bytes */
47#define PJ_SHA1_DIGEST_SIZE 20
48
49
50/** Initialize the algorithm.
51 * @param ctx SHA1 context.
52 */
53PJ_DECL(void) pj_sha1_init(pj_sha1_context *ctx);
54
55/** Append a stream to the message.
56 * @param ctx SHA1 context.
57 * @param data Data.
58 * @param nbytes Length of data.
59 */
60PJ_DECL(void) pj_sha1_update(pj_sha1_context *ctx,
61 const pj_uint8_t *data,
62 const pj_size_t nbytes);
63
64/** Finish the message and return the digest.
65 * @param ctx SHA1 context.
66 * @param digest 16 byte digest.
67 */
68PJ_DECL(void) pj_sha1_final(pj_sha1_context *ctx,
69 pj_uint8_t digest[PJ_SHA1_DIGEST_SIZE]);
70
71
72/**
73 * @}
74 */
75
76PJ_END_DECL
77
78
79#endif /* __PJLIB_UTIL_SHA1_H__ */
80