1--TEST-- 2openssl_encrypt() with CCM cipher algorithm tests 3--SKIPIF-- 4<?php 5if (!extension_loaded("openssl")) 6 die("skip"); 7if (!in_array('aes-256-ccm', openssl_get_cipher_methods())) 8 die("skip: aes-256-ccm not available"); 9?> 10--FILE-- 11<?php 12require_once __DIR__ . "/cipher_tests.inc"; 13$methods = ['aes-128-ccm', 'aes-256-ccm']; 14 15foreach ($methods as $method) { 16 $tests = openssl_get_cipher_tests($method); 17 foreach ($tests as $idx => $test) { 18 echo "$method - TEST $idx\n"; 19 $ct = openssl_encrypt($test['pt'], $method, $test['key'], OPENSSL_RAW_DATA, 20 $test['iv'], $tag, $test['aad'], strlen($test['tag'])); 21 var_dump($test['ct'] === $ct); 22 var_dump($test['tag'] === $tag); 23 } 24} 25 26// Empty IV error 27var_dump(openssl_encrypt('data', $method, 'password', 0, NULL, $tag, '')); 28 29// Test setting different IV length and tag length 30var_dump(openssl_encrypt('data', $method, 'password', 0, str_repeat('x', 10), $tag, '', 14)); 31var_dump(strlen($tag)); 32 33// Test setting invalid tag length 34var_dump(openssl_encrypt('data', $method, 'password', 0, str_repeat('x', 16), $tag, '', 1024)); 35?> 36--EXPECTF-- 37aes-128-ccm - TEST 0 38bool(true) 39bool(true) 40aes-128-ccm - TEST 1 41bool(true) 42bool(true) 43aes-256-ccm - TEST 0 44bool(true) 45bool(true) 46 47Warning: openssl_encrypt(): Setting of IV length for AEAD mode failed in %s on line %d 48bool(false) 49string(8) "p/lvgA==" 50int(14) 51 52Warning: openssl_encrypt(): Setting of IV length for AEAD mode failed in %s on line %d 53bool(false) 54