Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8aee448c59 |
@@ -5009,8 +5009,8 @@ final class CoreLibsDBIOTest extends TestCase
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
($params === null ?
|
($params === null ?
|
||||||
$db->dbGetQueryHash($query) :
|
$db->dbBuildQueryHash($query) :
|
||||||
$db->dbGetQueryHash($query, $params)
|
$db->dbBuildQueryHash($query, $params)
|
||||||
),
|
),
|
||||||
'Failed assertdbGetQueryHash '
|
'Failed assertdbGetQueryHash '
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -42,7 +42,10 @@ print '<div><a href="class_test.php">Class Test Master</a></div>';
|
|||||||
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
||||||
|
|
||||||
// encryption key
|
// encryption key
|
||||||
$key = CreateKey::generateRandomKey();
|
$key_new = CreateKey::generateRandomKey();
|
||||||
|
print "Secret Key NEW: " . $key_new . "<br>";
|
||||||
|
// for reproducable test results
|
||||||
|
$key = 'e475c19b9a3c8363feb06b51f5b73f1dc9b6f20757d4ab89509bf5cc70ed30ec';
|
||||||
print "Secret Key: " . $key . "<br>";
|
print "Secret Key: " . $key . "<br>";
|
||||||
|
|
||||||
// test text
|
// test text
|
||||||
@@ -105,20 +108,35 @@ $res = $db->dbReturnRowParams(
|
|||||||
-- in DB encryption
|
-- in DB encryption
|
||||||
pg_digest_bytea, pg_digest_text,
|
pg_digest_bytea, pg_digest_text,
|
||||||
pg_hmac_bytea, pg_hmac_text,
|
pg_hmac_bytea, pg_hmac_text,
|
||||||
pg_crypt_bytea, pg_crypt_text
|
pg_crypt_bytea, pg_crypt_text,
|
||||||
|
encode(pg_crypt_bytea, 'hex') AS pg_crypt_bytea_hex,
|
||||||
|
pgp_sym_decrypt(pg_crypt_bytea, $2) AS from_pg_crypt_bytea,
|
||||||
|
pgp_sym_decrypt(decode(pg_crypt_text, 'hex'), $2) AS from_pg_crypt_text
|
||||||
FROM
|
FROM
|
||||||
test_encryption
|
test_encryption
|
||||||
WHERE
|
WHERE
|
||||||
cuuid = $1
|
cuuid = $1
|
||||||
SQL,
|
SQL,
|
||||||
[
|
[
|
||||||
$cuuid
|
$cuuid, $key
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
print "RES: <pre>" . Support::prAr($res) . "</pre><br>";
|
print "RES: <pre>" . Support::prAr($res) . "</pre><br>";
|
||||||
|
|
||||||
// do compare
|
if ($res === false) {
|
||||||
|
echo "Failed to run query<br>";
|
||||||
|
} else {
|
||||||
|
if (hash_equals($string_hashed, $res['pg_digest_text'])) {
|
||||||
|
print "libsodium and pgcrypto hash match<br>";
|
||||||
|
}
|
||||||
|
if (hash_equals($string_hmac, $res['pg_hmac_text'])) {
|
||||||
|
print "libsodium and pgcrypto hash hmac match<br>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// do compare for PHP and pgcrypto settings
|
||||||
|
|
||||||
print "</body></html>";
|
print "</body></html>";
|
||||||
|
|
||||||
|
|||||||
@@ -303,6 +303,8 @@ class IO
|
|||||||
private string $query = '';
|
private string $query = '';
|
||||||
/** @var array<mixed> current params for query */
|
/** @var array<mixed> current params for query */
|
||||||
private array $params = [];
|
private array $params = [];
|
||||||
|
/** @var string current hash build from query and params */
|
||||||
|
private string $query_hash = '';
|
||||||
// if we do have a convert call, store the convert data in here, else it will be empty
|
// if we do have a convert call, store the convert data in here, else it will be empty
|
||||||
/** @var array{}|array{original:array{query:string,params:array<mixed>},type:''|'named'|'numbered'|'question_mark',found:int,matches:array<string>,params_lookup:array<mixed>,query:string,params:array<mixed>} */
|
/** @var array{}|array{original:array{query:string,params:array<mixed>},type:''|'named'|'numbered'|'question_mark',found:int,matches:array<string>,params_lookup:array<mixed>,query:string,params:array<mixed>} */
|
||||||
private array $placeholder_converted = [];
|
private array $placeholder_converted = [];
|
||||||
@@ -1319,7 +1321,7 @@ class IO
|
|||||||
*/
|
*/
|
||||||
private function __dbCountQueryParams(string $query): int
|
private function __dbCountQueryParams(string $query): int
|
||||||
{
|
{
|
||||||
return $this->db_functions->__dbCountQueryParams($query);
|
return count($this->db_functions->__dbGetQueryParams($query));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1382,6 +1384,8 @@ class IO
|
|||||||
$this->query = $query;
|
$this->query = $query;
|
||||||
// current params
|
// current params
|
||||||
$this->params = $params;
|
$this->params = $params;
|
||||||
|
// empty on new
|
||||||
|
$this->query_hash = '';
|
||||||
// no query set
|
// no query set
|
||||||
if (empty($this->query)) {
|
if (empty($this->query)) {
|
||||||
$this->__dbError(11);
|
$this->__dbError(11);
|
||||||
@@ -1441,7 +1445,7 @@ class IO
|
|||||||
$this->returning_id = true;
|
$this->returning_id = true;
|
||||||
}
|
}
|
||||||
// import protection, hash needed
|
// import protection, hash needed
|
||||||
$query_hash = $this->dbGetQueryHash($this->query, $this->params);
|
$query_hash = $this->dbBuildQueryHash($this->query, $this->params);
|
||||||
// QUERY PARAMS: run query params check and rewrite
|
// QUERY PARAMS: run query params check and rewrite
|
||||||
if ($this->dbGetConvertPlaceholder() === true) {
|
if ($this->dbGetConvertPlaceholder() === true) {
|
||||||
try {
|
try {
|
||||||
@@ -1475,7 +1479,8 @@ class IO
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// set query hash
|
||||||
|
$this->query_hash = $query_hash;
|
||||||
// $this->debug('DB IO', 'Q: ' . $this->query . ', RETURN: ' . $this->returning_id);
|
// $this->debug('DB IO', 'Q: ' . $this->query . ', RETURN: ' . $this->returning_id);
|
||||||
// for DEBUG, only on first time ;)
|
// for DEBUG, only on first time ;)
|
||||||
$this->__dbDebug(
|
$this->__dbDebug(
|
||||||
@@ -1959,7 +1964,7 @@ class IO
|
|||||||
{
|
{
|
||||||
// set start array
|
// set start array
|
||||||
if ($query) {
|
if ($query) {
|
||||||
$array = $this->cursor_ext[$this->dbGetQueryHash($query)] ?? [];
|
$array = $this->cursor_ext[$this->dbBuildQueryHash($query)] ?? [];
|
||||||
} else {
|
} else {
|
||||||
$array = $this->cursor_ext;
|
$array = $this->cursor_ext;
|
||||||
}
|
}
|
||||||
@@ -2361,7 +2366,7 @@ class IO
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// create hash from query ...
|
// create hash from query ...
|
||||||
$query_hash = $this->dbGetQueryHash($query, $params);
|
$query_hash = $this->dbBuildQueryHash($query, $params);
|
||||||
// pre declare array
|
// pre declare array
|
||||||
if (!isset($this->cursor_ext[$query_hash])) {
|
if (!isset($this->cursor_ext[$query_hash])) {
|
||||||
$this->cursor_ext[$query_hash] = [
|
$this->cursor_ext[$query_hash] = [
|
||||||
@@ -2940,7 +2945,7 @@ class IO
|
|||||||
public function dbCacheReset(string $query, array $params = []): bool
|
public function dbCacheReset(string $query, array $params = []): bool
|
||||||
{
|
{
|
||||||
$this->__dbErrorReset();
|
$this->__dbErrorReset();
|
||||||
$query_hash = $this->dbGetQueryHash($query, $params);
|
$query_hash = $this->dbBuildQueryHash($query, $params);
|
||||||
// clears cache for this query
|
// clears cache for this query
|
||||||
if (empty($this->cursor_ext[$query_hash]['query'])) {
|
if (empty($this->cursor_ext[$query_hash]['query'])) {
|
||||||
$this->__dbWarning(18, context: [
|
$this->__dbWarning(18, context: [
|
||||||
@@ -2982,7 +2987,7 @@ class IO
|
|||||||
if ($query === null) {
|
if ($query === null) {
|
||||||
return $this->cursor_ext;
|
return $this->cursor_ext;
|
||||||
}
|
}
|
||||||
$query_hash = $this->dbGetQueryHash($query, $params);
|
$query_hash = $this->dbBuildQueryHash($query, $params);
|
||||||
if (
|
if (
|
||||||
!empty($this->cursor_ext) &&
|
!empty($this->cursor_ext) &&
|
||||||
isset($this->cursor_ext[$query_hash])
|
isset($this->cursor_ext[$query_hash])
|
||||||
@@ -3012,7 +3017,7 @@ class IO
|
|||||||
$this->__dbError(11);
|
$this->__dbError(11);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$query_hash = $this->dbGetQueryHash($query, $params);
|
$query_hash = $this->dbBuildQueryHash($query, $params);
|
||||||
if (
|
if (
|
||||||
!empty($this->cursor_ext) &&
|
!empty($this->cursor_ext) &&
|
||||||
isset($this->cursor_ext[$query_hash])
|
isset($this->cursor_ext[$query_hash])
|
||||||
@@ -3038,7 +3043,7 @@ class IO
|
|||||||
$this->__dbError(11);
|
$this->__dbError(11);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$query_hash = $this->dbGetQueryHash($query, $params);
|
$query_hash = $this->dbBuildQueryHash($query, $params);
|
||||||
if (
|
if (
|
||||||
!empty($this->cursor_ext) &&
|
!empty($this->cursor_ext) &&
|
||||||
isset($this->cursor_ext[$query_hash])
|
isset($this->cursor_ext[$query_hash])
|
||||||
@@ -3064,7 +3069,7 @@ class IO
|
|||||||
*/
|
*/
|
||||||
public function dbResetQueryCalled(string $query, array $params = []): void
|
public function dbResetQueryCalled(string $query, array $params = []): void
|
||||||
{
|
{
|
||||||
$this->query_called[$this->dbGetQueryHash($query, $params)] = 0;
|
$this->query_called[$this->dbBuildQueryHash($query, $params)] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -3077,7 +3082,7 @@ class IO
|
|||||||
*/
|
*/
|
||||||
public function dbGetQueryCalled(string $query, array $params = []): int
|
public function dbGetQueryCalled(string $query, array $params = []): int
|
||||||
{
|
{
|
||||||
$query_hash = $this->dbGetQueryHash($query, $params);
|
$query_hash = $this->dbBuildQueryHash($query, $params);
|
||||||
if (!empty($this->query_called[$query_hash])) {
|
if (!empty($this->query_called[$query_hash])) {
|
||||||
return $this->query_called[$query_hash];
|
return $this->query_called[$query_hash];
|
||||||
} else {
|
} else {
|
||||||
@@ -4046,7 +4051,7 @@ class IO
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns hash for query
|
* Creates hash for query and parameters
|
||||||
* Hash is used in all internal storage systems for return data
|
* Hash is used in all internal storage systems for return data
|
||||||
*
|
*
|
||||||
* @param string $query The query to create the hash from
|
* @param string $query The query to create the hash from
|
||||||
@@ -4054,7 +4059,7 @@ class IO
|
|||||||
* data to create a unique call one, optional
|
* data to create a unique call one, optional
|
||||||
* @return string Hash, as set by hash long
|
* @return string Hash, as set by hash long
|
||||||
*/
|
*/
|
||||||
public function dbGetQueryHash(string $query, array $params = []): string
|
public function dbBuildQueryHash(string $query, array $params = []): string
|
||||||
{
|
{
|
||||||
return Hash::hashLong(
|
return Hash::hashLong(
|
||||||
$query . (
|
$query . (
|
||||||
@@ -4104,6 +4109,26 @@ class IO
|
|||||||
$this->params = [];
|
$this->params = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get the current set query hash
|
||||||
|
*
|
||||||
|
* @return string Current Query hash
|
||||||
|
*/
|
||||||
|
public function dbGetQueryHash(): string
|
||||||
|
{
|
||||||
|
return $this->query_hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* reset query hash
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function dbResetQueryHash(): void
|
||||||
|
{
|
||||||
|
$this->query_hash = '';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the placeholder convert set or empty
|
* Returns the placeholder convert set or empty
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -379,9 +379,9 @@ interface SqlFunctions
|
|||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @param string $query
|
* @param string $query
|
||||||
* @return int
|
* @return array<string>
|
||||||
*/
|
*/
|
||||||
public function __dbCountQueryParams(string $query): int;
|
public function __dbGetQueryParams(string $query): array;
|
||||||
}
|
}
|
||||||
|
|
||||||
// __END__
|
// __END__
|
||||||
|
|||||||
@@ -978,7 +978,7 @@ class PgSQL implements Interface\SqlFunctions
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the all the $ params, unique list
|
* Get the all the $ params, as a unique list
|
||||||
*
|
*
|
||||||
* @param string $query
|
* @param string $query
|
||||||
* @return array<string>
|
* @return array<string>
|
||||||
@@ -1004,17 +1004,6 @@ class PgSQL implements Interface\SqlFunctions
|
|||||||
);
|
);
|
||||||
return array_unique(array_filter($matches[ConvertPlaceholder::MATCHING_POS]));
|
return array_unique(array_filter($matches[ConvertPlaceholder::MATCHING_POS]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Count placeholder queries. $ only
|
|
||||||
*
|
|
||||||
* @param string $query
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function __dbCountQueryParams(string $query): int
|
|
||||||
{
|
|
||||||
return count($this->__dbGetQueryParams($query));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// __END__
|
// __END__
|
||||||
|
|||||||
Reference in New Issue
Block a user