1--TEST--
2Crypto\CMAC::__construct basic usage.
3--SKIPIF--
4<?php
5if (!class_exists('Crypto\CMAC' ))
6	die("Skip: CMAC is not supported by OpenSSL");
7?>
8--FILE--
9<?php
10$key = pack('H*', '2b7e151628aed2a6abf7158809cf4f3c');
11
12// basic creation
13$cmac = new Crypto\CMAC($key, 'aes-128-cbc');
14if ($cmac instanceof Crypto\CMAC) {
15	echo "FOUND\n";
16}
17// invalid key
18try {
19	$cmac = new Crypto\CMAC('key', 'aes-128-cbc');
20}
21catch (Crypto\MACException $e) {
22	if ($e->getCode() === Crypto\MACException::KEY_LENGTH_INVALID) {
23		echo "KEY LENGTH INVALID\n";
24	}
25}
26// invalid creation
27try {
28	$cmac = new Crypto\CMAC($key, 'nnn');
29}
30catch (Crypto\MACException $e) {
31	if ($e->getCode() === Crypto\MACException::MAC_ALGORITHM_NOT_FOUND) {
32		echo "NOT FOUND\n";
33	}
34}
35// sub classing
36class SubCMAC extends Crypto\CMAC {
37	function __construct($key, $algorithm) {
38		parent::__construct($key, $algorithm);
39		echo $this->algorithm . "\n";
40	}
41}
42$subcmac = new SubCMAC($key, 'aes-128-cbc');
43?>
44--EXPECT--
45FOUND
46KEY LENGTH INVALID
47NOT FOUND
48AES-128-CBC
49