/** * Calculates signature for any data given as an array of strings. * * @param string[] $data * @param CredentialsInterface $credentials private key is needed to calculate signature * @param AlgorithmInterface $algorithm calculator uses encoder which can use multiple algorithms * * @return string * @throws SignatureCalculatorException */ public function calculate(array $data, CredentialsInterface $credentials, AlgorithmInterface $algorithm) { $concatenated = ''; array_walk_recursive($data, function ($value) use(&$concatenated) { $concatenated .= $value; }); $concatenated .= $credentials->getPrivateKey(); return $this->encode($concatenated, $algorithm); }