Mini Shell
/*
+----------------------------------------------------------------------+
| Swoole |
+----------------------------------------------------------------------+
| This source file is subject to version 2.0 of the Apache license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.apache.org/licenses/LICENSE-2.0.html |
| If you did not receive a copy of the Apache2.0 license and are unable|
| to obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Tianfeng Han <mikan.tenny@gmail.com> |
+----------------------------------------------------------------------+
*/
#ifndef _WEBSOCKET_SHA1_H__
#define _WEBSOCKET_SHA1_H__
/* Define this if your machine is LITTLE_ENDIAN, otherwise #undef it: */
#ifdef WORDS_BIGENDIAN
# undef LITTLE_ENDIAN
#else
# ifndef LITTLE_ENDIAN
# define LITTLE_ENDIAN
# endif
#endif
/* Make sure you define these types for your architecture: */
typedef unsigned int sha1_quadbyte; /* 4 byte type */
typedef unsigned char sha1_byte; /* single byte type */
/*
* Be sure to get the above definitions right. For instance, on my
* x86 based FreeBSD box, I define LITTLE_ENDIAN and use the type
* "unsigned long" for the quadbyte. On FreeBSD on the Alpha, however,
* while I still use LITTLE_ENDIAN, I must define the quadbyte type
* as "unsigned int" instead.
*/
#define SHA1_BLOCK_LENGTH 64
#define SHA1_DIGEST_LENGTH 20
/* The SHA1 structure: */
typedef struct _SHA_CTX {
sha1_quadbyte state[5];
sha1_quadbyte count[2];
sha1_byte buffer[SHA1_BLOCK_LENGTH];
} SHA_CTX;
#ifndef NOPROTO
void swSha1_init(SHA_CTX *context);
void swSha1_update(SHA_CTX *context, sha1_byte *data, unsigned int len);
void swSha1_final(sha1_byte digest[SHA1_DIGEST_LENGTH],
SHA_CTX* context);
#else
void swSha1_init();
void swSha1_update();
void swSha1_final();
#endif
#endif
Zerion Mini Shell 1.0