$key = hex2bin($this->derivedk);
$enc = hex2bin($data);
- $factory = new CryptLib\Cipher\Factory();
- $aes = $factory->getBlockCipher('rijndael-128');
- $aes->setKey($key);
- $mode = $factory->getMode('ccm', $aes, $iv, [ 'adata' => $adata, 'lSize' => 7]);
-
- $mode->decrypt($enc);
-
- return $mode->finish();
+ if (PHP_VERSION_ID >= 70100) {
+ $ciphertext = substr($enc, 0, -8);
+ $tag = substr($enc, strlen($enc)-8);
+
+ return openssl_decrypt($ciphertext, 'aes-128-ccm', $key, OPENSSL_RAW_DATA, $iv, $tag, $adata);
+ }
+ else {
+ $factory = new CryptLib\Cipher\Factory();
+ $aes = $factory->getBlockCipher('rijndael-128');
+ $aes->setKey($key);
+ $mode = $factory->getMode('ccm', $aes, $iv, [ 'adata' => $adata, 'lSize' => 7]);
+
+ $mode->decrypt($enc);
+
+ return $mode->finish();
+ }
}
/**
$adata = hex2bin(substr($this->challenge, 32, 16));
$key = hex2bin($this->derivedk);
- $factory = new CryptLib\Cipher\Factory();
- $aes = $factory->getBlockCipher('rijndael-128');
- $aes->setKey($key);
- $mode = $factory->getMode('ccm', $aes, $iv, [ 'adata' => $adata, 'lSize' => 7]);
- $mode->encrypt($data);
+ if (empty($data)) {
+ return $data;
+ }
- return bin2hex($mode->finish());
+ if (PHP_VERSION_ID >= 70100) {
+ $tag = null;
+ $encdata = openssl_encrypt($data, 'aes-128-ccm', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv, $tag, $adata, 8);
+ return bin2hex($encdata . $tag);
+ }
+ else {
+ $factory = new CryptLib\Cipher\Factory();
+ $aes = $factory->getBlockCipher('rijndael-128');
+ $aes->setKey($key);
+ $mode = $factory->getMode('ccm', $aes, $iv, [ 'adata' => $adata, 'lSize' => 7]);
+ $mode->encrypt($data);
+ var_dump(bin2hex($mode->finish()));
+ return bin2hex($mode->finish());
+ }
}
}