1.php的openssl_sign($data,$sign,$private_key)这个函数的源码是什么?
php的openssl_sign($data,$sign,$private_key)这个函数的源码是什么?
PHP_FUNCTION(openssl_sign)
{
zval **key, *signature;
EVP_PKEY *pkey;
int siglen;
unsigned char *sigbuf;
long keyresource = -1;
char * data;
int data_len;
EVP_MD_CTX md_ctx;
zval *method = NULL;
long signature_algo = OPENSSL_ALGO_SHA1;
const EVP_MD *mdtype;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "szZ|z", &data, &data_len, &signature, &key, &method) == FAILURE) {
return;
}
pkey = php_openssl_evp_from_zval(key, 0, "", 0, &keyresource TSRMLS_CC);
if (pkey == NULL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "supplied key param cannot be coerced into a private key");
RETURN_FALSE;
}
if (method == NULL || Z_TYPE_P(method) == IS_LONG) {
if (method != NULL) {
signature_algo = Z_LVAL_P(method);
}
mdtype = php_openssl_get_evp_md_from_algo(signature_algo);
} else if (Z_TYPE_P(method) == IS_STRING) {
mdtype = EVP_get_digestbyname(Z_STRVAL_P(method));
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown signature algorithm.");
RETURN_FALSE;
}
if (!mdtype) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown signature algorithm.");
RETURN_FALSE;
}
siglen = EVP_PKEY_size(pkey);
sigbuf = emalloc(siglen + 1);
EVP_SignInit(&md_ctx, mdtype);
EVP_SignUpdate(&md_ctx, data, data_len);
if (EVP_SignFinal (&md_ctx, sigbuf,(unsigned int *)&siglen, pkey)) {
zval_dtor(signature);
sigbuf[siglen] = '\0';
ZVAL_STRINGL(signature, (char *)sigbuf, siglen, 0);
RETVAL_TRUE;
} else {
efree(sigbuf);
RETVAL_FALSE;
}
EVP_MD_CTX_cleanup(&md_ctx);
if (keyresource == -1) {
EVP_PKEY_free(pkey);
}
}
这个是函数的源码,C写的房源发布 源码。源码可以在php官网下载一个php版本,caffe源码读不懂解压打开里面的android textview源码分析ext/openssl.c搜上面代码即可。
android 浮动通知 源码android 浮动通知 源码2024-12-29 16:091124人浏览
2024-12-29 15:52379人浏览
2024-12-29 15:47227人浏览
2024-12-29 15:191884人浏览
2024-12-29 15:101576人浏览
2024-12-29 14:08245人浏览
道奇隊球星大谷翔平敲出大聯盟生涯第176支全壘打,正式超越「酷斯拉」松井秀喜,成為大聯盟累計最多轟的日本球員。道奇隊今天在主場迎戰大都會隊,大谷在三局下半、一壘有人時,轟出一支兩分砲,這是他本季第五轟
1.GitLab ARM64源码在信创统信UOS下的搭建2.UOS终极波动指标源码的组成要素:综合三个不同周期的RSI3.统信UOS家庭版是否支持国产CPU详情4.统信UOS系统开发笔记八):在统信U
1.手机移动ktv代码是多少手机移动ktv代码是多少 一个android编写的KTV手机端,和一个苹果IOS编写的KTV手机端的源代码。实现KTV里通过手机来控制点歌,这样很方便 (A wri