Files
wy/ZeedFramework/library/3rd/soar/1.2/svcenv/secure.inc
2026-01-07 11:40:41 +08:00

264 lines
7.6 KiB
PHP

<?php
class secure
{
private $svcenv;
public $last_error='';
public function __construct($svcenv)
{/*{{{*/
$this->svcenv=$svcenv;
}/*}}}*/
public function __destruct()
{/*{{{*/
}/*}}}*/
public function encrypt($pubkey, $plain)
{/*{{{*/
$request=array($pubkey, $plain);
$response=$this->svcenv->callnode('SECURE', 'ENCRYPT',
$request);
if($response === false)
{
errlog::add("%s: call fail", __METHOD__);
$this->last_error=SOAR_ERR::COMM_FAIL;
return false;
}
if(!isset($response['errcode']))
{
errlog::add("%s: errcode invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$errcode=$response['errcode'];
if($errcode != SOAR_ERR::OK)
{
errlog::add("%s: errcode:%s", __METHOD__, $errcode);
$this->last_error=$errcode;
return false;
}
if(!isset($response['paras']))
{
errlog::add("%s: paras invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$paras=$response['paras'];
if(!isset($paras[0]))
{
errlog::add("%s: encrypt text invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$enc=$paras[0];
$this->last_error=SOAR_ERR::OK;
return $enc;
}/*}}}*/
public function decrypt($enc)
{/*{{{*/
$request=array($enc);
$response=$this->svcenv->callnode('SECURE', 'DECRYPT', $request);
if($response === false)
{
errlog::add("%s: call fail", __METHOD__);
$this->last_error=SOAR_ERR::COMM_FAIL;
return false;
}
if(!isset($response['errcode']))
{
errlog::add("%s: errcode invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$errcode=$response['errcode'];
if($errcode != SOAR_ERR::OK)
{
errlog::add("%s: errcode:%s", __METHOD__, $errcode);
$this->last_error=$errcode;
return false;
}
if(!isset($response['paras']))
{
errlog::add("%s: paras invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$paras=$response['paras'];
if(!isset($paras[0]))
{
errlog::add("%s: plain text invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$plain=$paras[0];
$this->last_error=SOAR_ERR::OK;
return $plain;
}/*}}}*/
public function sign($orig)
{/*{{{*/
$request=array($orig);
$response=$this->svcenv->callnode('SECURE', 'SIGN', $request);
if($response === false)
{
errlog::add("%s: call fail", __METHOD__);
$this->last_error=SOAR_ERR::COMM_FAIL;
return false;
}
if(!isset($response['errcode']))
{
errlog::add("%s: errcode invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$errcode=$response['errcode'];
if($errcode != SOAR_ERR::OK)
{
errlog::add("%s: errcode:%s", __METHOD__, $errcode);
$this->last_error=$errcode;
return false;
}
if(!isset($response['paras']))
{
errlog::add("%s: paras invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$paras=$response['paras'];
if(!isset($paras[0]))
{
errlog::add("%s: sign text invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$sign=$paras[0];
$this->last_error=SOAR_ERR::OK;
return $sign;
}/*}}}*/
public function verify($pubkey, $orig, $sign)
{/*{{{*/
$request=array($pubkey, $orig, $sign);
$response=$this->svcenv->callnode('SECURE', 'VERIFY', $request);
if($response === false)
{
errlog::add("%s: call fail", __METHOD__);
$this->last_error=SOAR_ERR::COMM_FAIL;
return false;
}
if(!isset($response['errcode']))
{
errlog::add("%s: errcode invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$errcode=$response['errcode'];
if($errcode != SOAR_ERR::OK)
{
errlog::add("%s: errcode:%s", __METHOD__, $errcode);
$this->last_error=$errcode;
return false;
}
$this->last_error=SOAR_ERR::OK;
return true;
}/*}}}*/
public function encsign($pubkey, $plain)
{/*{{{*/
$request=array($pubkey, $plain);
$response=$this->svcenv->callnode('SECURE', 'ENCSIGN', $request);
if($response === false)
{
errlog::add("%s: call fail", __METHOD__);
$this->last_error=SOAR_ERR::COMM_FAIL;
return false;
}
if(!isset($response['errcode']))
{
errlog::add("%s: errcode invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$errcode=$response['errcode'];
if($errcode != SOAR_ERR::OK)
{
errlog::add("%s: errcode:%s", __METHOD__, $errcode);
$this->last_error=$errcode;
return false;
}
if(!isset($response['paras']))
{
errlog::add("%s: paras invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$paras=$response['paras'];
if(!isset($paras[0]))
{
errlog::add("%s: encrypt text invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$enc=$paras[0];
if(!isset($paras[1]))
{
errlog::add("%s: sign text invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$sign=$paras[1];
$this->last_error=SOAR_ERR::OK;
return array('enc'=>$enc, 'sign'=>$sign);
}/*}}}*/
public function vrfydec($pubkey, $enc, $sign)
{/*{{{*/
$request=array($pubkey, $enc, $sign);
$response=$this->svcenv->callnode("SECURE", "VRFYDEC", $request);
if($response === false)
{
errlog::add("%s: call fail", __METHOD__);
$this->last_error=SOAR_ERR::COMM_FAIL;
return false;
}
if(!isset($response['errcode']))
{
errlog::add("%s: errcode invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$errcode=$response['errcode'];
if($errcode != SOAR_ERR::OK)
{
errlog::add("%s: errcode:%s", __METHOD__, $errcode);
$this->last_error=$errcode;
return false;
}
if(!isset($response['paras']))
{
errlog::add("%s: paras invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$paras=$response['paras'];
if(!isset($paras[0]))
{
errlog::add("%s: plain text invalid", __METHOD__);
$this->last_error=SOAR_ERR::MSG;
return false;
}
$plain=$paras[0];
$this->last_error=SOAR_ERR::OK;
return $plain;
}/*}}}*/
}
?>