&pos) == SUCCESS) {
pkeys[i] = php_openssl_evp_from_zval(pubkey, 1, NULL, 0, &key_resources[i] TSRMLS_CC);
if (pkeys[i] == NULL) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "not a public key (%dth member of pubkeys)", i);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "not a public key (%dth member of pubkeys)", i+1);
RETVAL_FALSE;
goto clean_exit;
}
--- /dev/null
+--TEST--
+openssl_seal() error tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$data = b"openssl_open() test";
+$pub_key = "file://" . dirname(__FILE__) . "/public.key";
+$wrong = "wrong";
+
+openssl_seal($data, $sealed, $ekeys, array($pub_key));
+openssl_seal($data, $sealed, $ekeys, array($pub_key, $pub_key)); // no output
+openssl_seal($data, $sealed, $ekeys, array($pub_key, $wrong));
+openssl_seal($data, $sealed, $ekeys, array($pub_key, (binary)$wrong));
+openssl_seal($data, $sealed, $ekeys, $pub_key);
+openssl_seal($data, $sealed, $ekeys, (binary)$wrong);
+openssl_seal($data, $sealed, $ekeys, array());
+openssl_seal($data, $sealed, $ekeys, array($wrong));
+?>
+--EXPECTF--
+
+Warning: openssl_seal(): not a public key (2th member of pubkeys) in %s on line %d
+
+Warning: openssl_seal(): not a public key (2th member of pubkeys) in %s on line %d
+
+Warning: openssl_seal() expects parameter 4 to be array, Unicode string given in %s on line %d
+
+Warning: openssl_seal() expects parameter 4 to be array, binary string given in %s on line %d
+
+Warning: openssl_seal(): Fourth argument to openssl_seal() must be a non-empty array in %s on line %d
+
+Warning: openssl_seal(): not a public key (1th member of pubkeys) in %s on line %d
+
--- /dev/null
+-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLXp6PkCtbpV+P1gwFQWH6Ez0U
+83uEmS8IGnpeI8Fk8rY/vHOZzZZaxRCw+loyc342qCDIQheMOCNm5Fkevz06q757
+/oooiLR3yryYGKiKG1IZIiplmtsC95oKrzUSKk60wuI1mbgpMUP5LKi/Tvxes5Pm
+kUtXfimz2qgkeUcPpQIDAQAB
+-----END PUBLIC KEY-----