/* {{{ php_mysqlnd_scramble */ void php_mysqlnd_scramble(zend_uchar * const buffer, const zend_uchar * const scramble, const zend_uchar * const password, size_t password_len) { PHP_SHA1_CTX context; zend_uchar sha1[SHA1_MAX_LENGTH]; zend_uchar sha2[SHA1_MAX_LENGTH]; /* Phase 1: hash password */ PHP_SHA1Init(&context); PHP_SHA1Update(&context, password, password_len); PHP_SHA1Final(sha1, &context); /* Phase 2: hash sha1 */ PHP_SHA1Init(&context); PHP_SHA1Update(&context, (zend_uchar*)sha1, SHA1_MAX_LENGTH); PHP_SHA1Final(sha2, &context); /* Phase 3: hash scramble + sha2 */ PHP_SHA1Init(&context); PHP_SHA1Update(&context, scramble, SCRAMBLE_LENGTH); PHP_SHA1Update(&context, (zend_uchar*)sha2, SHA1_MAX_LENGTH); PHP_SHA1Final(buffer, &context); /* let's crypt buffer now */ php_mysqlnd_crypt(buffer, (const zend_uchar *)buffer, (const zend_uchar *)sha1, SHA1_MAX_LENGTH); }
void php_swoole_sha1(const char *str, int _len, unsigned char *digest) { PHP_SHA1_CTX context; PHP_SHA1Init(&context); PHP_SHA1Update(&context, (unsigned char *) str, _len); PHP_SHA1Final(digest, &context); }
static void sha1(const char *str, unsigned char *digest) { PHP_SHA1_CTX context; PHP_SHA1Init(&context); PHP_SHA1Update(&context, (unsigned char *)str, strlen(str)); PHP_SHA1Final(digest, &context); return; }