1--TEST--
2Test libmemcached encryption
3--SKIPIF--
4<?php
5include dirname (__FILE__) . '/config.inc';
6if (!extension_loaded("memcached")) die ("skip");
7if (!Memcached::HAVE_ENCODING) die ("skip no set_encoding_key support enabled");
8if (Memcached::LIBMEMCACHED_VERSION_HEX < 0x01000018) die ("skip test for libmemcached 1.0.18 and higher");
9?>
10--FILE--
11<?php
12include dirname (__FILE__) . '/config.inc';
13$m = memc_get_instance ();
14$key = uniqid ('encoding_test_');
15
16var_dump ($m->setEncodingKey("Hello"));
17var_dump ($m->set ($key, 'set using encoding'));
18var_dump ($m->get ($key));
19
20echo "OK" . PHP_EOL;
21
22# Change the encryption key. The old value will be inaccessible.
23var_dump ($m->setEncodingKey("World"));
24var_dump ($m->get ($key));
25
26echo "OK" . PHP_EOL;
27
28# Restore the original key to retrieve old values again.
29var_dump ($m->setEncodingKey("Hello"));
30var_dump ($m->get ($key));
31
32echo "OK" . PHP_EOL;
33
34# With a new encoding key we can still write new values,
35# this works as expected with libmemcached 1.0.18 and higher.
36var_dump ($m->setEncodingKey("World"));
37var_dump ($m->get ($key));
38var_dump ($m->set ($key, 'set using encoding'));
39var_dump ($m->get ($key));
40
41echo "OK" . PHP_EOL;
42
43?>
44--EXPECT--
45bool(true)
46bool(true)
47string(18) "set using encoding"
48OK
49bool(true)
50bool(false)
51OK
52bool(true)
53string(18) "set using encoding"
54OK
55bool(true)
56bool(false)
57bool(true)
58string(18) "set using encoding"
59OK
60