Merge pull request #22532 from seamuslee001/dev_core_3034
[civicrm-core.git] / CRM / Core / Smarty / plugins / function.crmSigner.php
CommitLineData
272081ca
TO
1<?php
2/*
3 +--------------------------------------------------------------------+
bc77d7c0 4 | Copyright CiviCRM LLC. All rights reserved. |
272081ca 5 | |
bc77d7c0
TO
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
272081ca 9 +--------------------------------------------------------------------+
d25dd0ee 10 */
272081ca
TO
11
12/**
13 *
14 * @package CRM
15 * @copyright CiviCRM LLC
272081ca
TO
16 *
17 */
18
19/**
20 * Generate a secure signature
21 *
22 * {code}
23 * {crmSigner var=mySig extra=123}
24 * var urlParams = ts={$mySig.ts}&extra={$mySig.extra}&sig={$mySig.signature}
25 * {endcode}
26 *
16b10e64
CW
27 * @param array $params
28 * Array with keys:
272081ca
TO
29 * - var: string, a smarty variable to generate
30 * - ts: int, the current time (if omitted, autogenerated)
31 * - any other vars are put into the signature (sorted)
cc44b0e9 32 * @param $smarty
272081ca
TO
33 */
34function smarty_function_crmSigner($params, &$smarty) {
35 $var = $params['var'];
36 unset($params['var']);
37 $params['ts'] = CRM_Utils_Time::getTimeRaw();
38
39 $fields = array_keys($params);
40 sort($fields);
41
42 $signer = new CRM_Utils_Signer(CRM_Core_Key::privateKey(), $fields);
43 $params['signature'] = $signer->sign($params);
44 $smarty->assign($var, $params);
45}