diff options
Diffstat (limited to 'ext/openssl')
| -rw-r--r-- | ext/openssl/openssl.c | 6 | ||||
| -rw-r--r-- | ext/openssl/openssl.mak | 185 | ||||
| -rw-r--r-- | ext/openssl/tests/bug61124.phpt | 24 | ||||
| -rw-r--r-- | ext/openssl/tests/bug66501.phpt | 44 | ||||
| -rw-r--r-- | ext/openssl/tests/openssl_decrypt_ccm.phpt | 6 | ||||
| -rw-r--r-- | ext/openssl/tests/openssl_decrypt_gcm.phpt | 6 | ||||
| -rw-r--r-- | ext/openssl/xp_ssl.c | 27 |
7 files changed, 52 insertions, 246 deletions
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 7e0721ca54..a4b302bd30 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -60,11 +60,10 @@ /* Common */ #include <time.h> -#if defined(NETWARE) || (defined(PHP_WIN32) && defined(_MSC_VER) && _MSC_VER >= 1900) +#if (defined(PHP_WIN32) && defined(_MSC_VER) && _MSC_VER >= 1900) #define timezone _timezone /* timezone is called _timezone in LibC */ #endif -#define DEFAULT_KEY_LENGTH 512 #define MIN_KEY_LENGTH 384 #define OPENSSL_ALGO_SHA1 1 @@ -3882,11 +3881,12 @@ static EVP_PKEY * php_openssl_generate_private_key(struct php_x509_request * req #ifdef HAVE_EVP_PKEY_EC case OPENSSL_KEYTYPE_EC: { + EC_KEY *eckey; if (req->curve_name == NID_undef) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing configuration value: 'curve_name' not set"); return NULL; } - EC_KEY *eckey = EC_KEY_new_by_curve_name(req->curve_name); + eckey = EC_KEY_new_by_curve_name(req->curve_name); if (eckey) { EC_KEY_set_asn1_flag(eckey, OPENSSL_EC_NAMED_CURVE); if (EC_KEY_generate_key(eckey) && diff --git a/ext/openssl/openssl.mak b/ext/openssl/openssl.mak deleted file mode 100644 index 9bc053b662..0000000000 --- a/ext/openssl/openssl.mak +++ /dev/null @@ -1,185 +0,0 @@ -# Temporarily here -- later may go into some batch file -# which will set this as an environment variable -PROJECT_ROOT = ..\.. - -# Module details -MODULE_NAME = php_ossl -MODULE_DESC = "PHP 7 - OpenSSL Extension" -VMAJ = 1 -VMIN = 0 -VREV = 0 - -#include the common settings -include $(PROJECT_ROOT)/netware/common.mif - -# OpenSSL directory -OSSL_DIR = P:/APPS/script/sw/OpenSSL - -# Build type defaults to 'release' -ifndef BUILD -BUILD = release -endif - -# Extensions of all input and output files -.SUFFIXES: -.SUFFIXES: .nlm .lib .obj .cpp .c .msg .mlc .mdb .xdc .d - -# Source files -C_SRC = openssl.c \ - xp_ssl.c \ - start.c \ - -CPP_SRC_NODIR = $(notdir $(CPP_SRC)) -C_SRC_NODIR = $(notdir $(C_SRC)) -SRC_DIR = $(dir $(CPP_SRC) $(C_SRC)) - -# Library files -LIBRARY = $(OSSL_DIR)/lib/RSAglue.lib \ - $(OSSL_DIR)/lib/crypto.lib \ - $(OSSL_DIR)/lib/ssl.lib - -# Destination directories and files -OBJ_DIR = $(BUILD) -FINAL_DIR = $(BUILD) -MAP_FILE = $(FINAL_DIR)\$(MODULE_NAME).map -OBJECTS = $(addprefix $(OBJ_DIR)/,$(CPP_SRC_NODIR:.c=.obj) $(C_SRC_NODIR:.c=.obj)) -DEPDS = $(addprefix $(OBJ_DIR)/,$(CPP_SRC_NODIR:.c=.d) $(C_SRC_NODIR:.c=.d)) - -# Binary file -ifndef BINARY - BINARY=$(FINAL_DIR)\$(MODULE_NAME).nlm -endif - -# Compile flags -C_FLAGS += -c -maxerrors 25 -msgstyle gcc -C_FLAGS += -wchar_t on -bool on -processor Pentium -C_FLAGS += -nostdinc -nosyspath -C_FLAGS += -relax_pointers # To remove type-casting errors -C_FLAGS += -DNETWARE -DZTS -C_FLAGS += -DUSE_OLD_FUNCTIONS -DCOMPILE_DL_OPENSSL=1 - -C_FLAGS += -I. -I$(PROJECT_ROOT) -I$(PROJECT_ROOT)/main -C_FLAGS += -I$(PROJECT_ROOT)/ext/standard -I$(PROJECT_ROOT)/netware -C_FLAGS += -I$(PROJECT_ROOT)/zend -I$(PROJECT_ROOT)/tsrm -C_FLAGS += -I- -I$(SDK_DIR)/include -I$(MWCIncludes) -C_FLAGS += -I$(OSSL_DIR)/include - -ifndef STACK_SIZE -STACK_SIZE=8192 -endif - -# Extra stuff based on debug / release builds -ifeq '$(BUILD)' 'debug' - SYM_FILE = $(FINAL_DIR)\$(MODULE_NAME).sym - C_FLAGS += -inline smart -sym on -sym codeview4 -opt off -opt intrinsics -sym internal -DDEBUGGING -DDKFBPON - C_FLAGS += -exc cw -DZEND_DEBUG=1 - LD_FLAGS += -sym on -sym codeview4 -osym $(SYM_FILE) - export MWLibraryFiles=$(SDK_DIR)/imports/libcpre.o;mwcrtld.lib -else - C_FLAGS += -opt all -inline on -inline smart -inline auto -sym off - C_FLAGS += -opt intrinsics -opt level=4 -DZEND_DEBUG=0 - LD_FLAGS += -sym off - export MWLibraryFiles=$(SDK_DIR)/imports/libcpre.o;mwcrtl.lib -endif - - -# Dependencies -MODULE = LibC \ - phplib -IMPORT = @$(SDK_DIR)/imports/libc.imp \ - @$(SDK_DIR)/imports/ws2nlm.imp \ - @$(SDK_DIR)/imports/netware.imp \ - @$(MPK_DIR)/import/mpkOrg.imp \ - @$(PROJECT_ROOT)/netware/phplib.imp -EXPORT = ($(MODULE_NAME)) get_module -API = OutputToScreen - -# Virtual paths -vpath %.cpp . -vpath %.c . ..\..\netware -vpath %.obj $(OBJ_DIR) - - -all: prebuild project - -.PHONY: all - -prebuild: - @if not exist $(OBJ_DIR) md $(OBJ_DIR) - -project: $(BINARY) - @echo Build complete. - -$(OBJ_DIR)/%.d: %.cpp - @echo Building Dependencies for $(<F) - @$(CC) -M $< $(C_FLAGS) -o $@ - -$(OBJ_DIR)/%.d: %.c - @echo Building Dependencies for $(<F) - @$(CC) -M $< $(C_FLAGS) -o $@ - -$(OBJ_DIR)/%.obj: %.cpp - @echo Compiling $?... - @$(CC) $< $(C_FLAGS) -o $@ - -$(OBJ_DIR)/%.obj: %.c - @echo Compiling $?... - @$(CC) $< $(C_FLAGS) -o $@ - - -$(BINARY): $(OBJECTS) - @echo Import $(IMPORT) > $(basename $@).def -ifdef API - @echo Import $(API) >> $(basename $@).def -endif - @echo Module $(MODULE) >> $(basename $@).def -ifdef EXPORT - @echo Export $(EXPORT) >> $(basename $@).def -endif - @echo AutoUnload >> $(basename $@).def -ifeq '$(BUILD)' 'debug' - @echo Debug >> $(basename $@).def -endif - @echo Flag_On 0x00000008 >> $(basename $@).def - @echo Start _LibCPrelude >> $(basename $@).def - @echo Exit _LibCPostlude >> $(basename $@).def - -# Two functions imported to build the openssl extension - @echo Import GetProcessSwitchCount >> $(basename $@).def - @echo Import RunningProcess >> $(basename $@).def - - $(MPKTOOL) $(XDCFLAGS) $(basename $@).xdc - @echo xdcdata $(basename $@).xdc >> $(basename $@).def - - @echo Linking $@... - @echo $(LD_FLAGS) -commandfile $(basename $@).def > $(basename $@).link - - @echo $(LIBRARY) $(OBJECTS) >> $(basename $@).link - - @$(LINK) @$(basename $@).link - - -.PHONY: clean -clean: cleanobj cleanbin - -.PHONY: cleand -cleand: - @echo Deleting all dependency files... - -@del "$(OBJ_DIR)\*.d" - -.PHONY: cleanobj -cleanobj: - @echo Deleting all object files... - -@del "$(OBJ_DIR)\*.obj" - -.PHONY: cleanbin -cleanbin: - @echo Deleting binary files... - -@del "$(FINAL_DIR)\$(MODULE_NAME).nlm" - @echo Deleting MAP, DEF files, etc.... - -@del "$(FINAL_DIR)\$(MODULE_NAME).map" - -@del "$(FINAL_DIR)\$(MODULE_NAME).def" - -@del "$(FINAL_DIR)\$(MODULE_NAME).link" -ifeq '$(BUILD)' 'debug' - -@del $(FINAL_DIR)\$(MODULE_NAME).sym -endif diff --git a/ext/openssl/tests/bug61124.phpt b/ext/openssl/tests/bug61124.phpt index 9b21da5048..4b6194bdb4 100644 --- a/ext/openssl/tests/bug61124.phpt +++ b/ext/openssl/tests/bug61124.phpt @@ -1,12 +1,12 @@ ---TEST--
-Bug #61124: Segmentation fault with openssl_decrypt
---SKIPIF--
-<?php
-if (!extension_loaded("openssl")) die("skip");
---FILE--
-<?php
-var_dump(openssl_decrypt('kzo w2RMExUTYQXW2Xzxmg==', 'aes-128-cbc', 'pass', false, 'pass'));
-
---EXPECTF--
-Warning: openssl_decrypt(): IV passed is only 4 bytes long, cipher expects an IV of precisely 16 bytes, padding with \0 in %s on line %d
-bool(false)
+--TEST-- +Bug #61124: Segmentation fault with openssl_decrypt +--SKIPIF-- +<?php +if (!extension_loaded("openssl")) die("skip"); +--FILE-- +<?php +var_dump(openssl_decrypt('kzo w2RMExUTYQXW2Xzxmg==', 'aes-128-cbc', 'pass', false, 'pass')); + +--EXPECTF-- +Warning: openssl_decrypt(): IV passed is only 4 bytes long, cipher expects an IV of precisely 16 bytes, padding with \0 in %s on line %d +bool(false) diff --git a/ext/openssl/tests/bug66501.phpt b/ext/openssl/tests/bug66501.phpt index 99ac4f55de..fa450318c2 100644 --- a/ext/openssl/tests/bug66501.phpt +++ b/ext/openssl/tests/bug66501.phpt @@ -1,22 +1,22 @@ ---TEST--
-Bug #66501: EC private key support in openssl_sign
---SKIPIF--
-<?php
-if (!extension_loaded("openssl")) die("skip");
-if (!defined('OPENSSL_KEYTYPE_EC')) die("skip no EC available");
---FILE--
-<?php
-$pkey = 'ASN1 OID: prime256v1
------BEGIN EC PARAMETERS-----
-BggqhkjOPQMBBw==
------END EC PARAMETERS-----
------BEGIN EC PRIVATE KEY-----
-MHcCAQEEILPkqoeyM7XgwYkuSj3077lrsrfWJK5LqMolv+m2oOjZoAoGCCqGSM49
-AwEHoUQDQgAEPq4hbIWHvB51rdWr8ejrjWo4qVNWVugYFtPg/xLQw0mHkIPZ4DvK
-sqOTOnMoezkbSmVVMuwz9flvnqHGmQvmug==
------END EC PRIVATE KEY-----';
-$key = openssl_pkey_get_private($pkey);
-$res = openssl_sign($data ='alpha', $sign, $key, 'SHA1');
-var_dump($res);
---EXPECTF--
-bool(true)
+--TEST-- +Bug #66501: EC private key support in openssl_sign +--SKIPIF-- +<?php +if (!extension_loaded("openssl")) die("skip"); +if (!defined('OPENSSL_KEYTYPE_EC')) die("skip no EC available"); +--FILE-- +<?php +$pkey = 'ASN1 OID: prime256v1 +-----BEGIN EC PARAMETERS----- +BggqhkjOPQMBBw== +-----END EC PARAMETERS----- +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEILPkqoeyM7XgwYkuSj3077lrsrfWJK5LqMolv+m2oOjZoAoGCCqGSM49 +AwEHoUQDQgAEPq4hbIWHvB51rdWr8ejrjWo4qVNWVugYFtPg/xLQw0mHkIPZ4DvK +sqOTOnMoezkbSmVVMuwz9flvnqHGmQvmug== +-----END EC PRIVATE KEY-----'; +$key = openssl_pkey_get_private($pkey); +$res = openssl_sign($data ='alpha', $sign, $key, 'SHA1'); +var_dump($res); +--EXPECTF-- +bool(true) diff --git a/ext/openssl/tests/openssl_decrypt_ccm.phpt b/ext/openssl/tests/openssl_decrypt_ccm.phpt index 2107fea1fb..2bf93629f0 100644 --- a/ext/openssl/tests/openssl_decrypt_ccm.phpt +++ b/ext/openssl/tests/openssl_decrypt_ccm.phpt @@ -22,13 +22,13 @@ foreach ($tests as $idx => $test) { // no IV var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA, - NULL, $test['tag'], $test['aad'])); + NULL, $test['tag'], $test['aad'])); // failed because no AAD var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA, - $test['iv'], $test['tag'])); + $test['iv'], $test['tag'])); // failed because wrong tag var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA, - $test['iv'], str_repeat('x', 10), $test['aad'])); + $test['iv'], str_repeat('x', 10), $test['aad'])); ?> --EXPECTF-- diff --git a/ext/openssl/tests/openssl_decrypt_gcm.phpt b/ext/openssl/tests/openssl_decrypt_gcm.phpt index d8c464346a..4637f6b316 100644 --- a/ext/openssl/tests/openssl_decrypt_gcm.phpt +++ b/ext/openssl/tests/openssl_decrypt_gcm.phpt @@ -22,13 +22,13 @@ foreach ($tests as $idx => $test) { // no IV var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA, - NULL, $test['tag'], $test['aad'])); + NULL, $test['tag'], $test['aad'])); // failed because no AAD var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA, - $test['iv'], $test['tag'])); + $test['iv'], $test['tag'])); // failed because wrong tag var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA, - $test['iv'], str_repeat('x', 16), $test['aad'])); + $test['iv'], str_repeat('x', 16), $test['aad'])); ?> --EXPECTF-- diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c index 5515bbafaf..b20a619912 100644 --- a/ext/openssl/xp_ssl.c +++ b/ext/openssl/xp_ssl.c @@ -52,10 +52,6 @@ #undef X509_EXTENSIONS #endif -#ifdef NETWARE -#include <sys/select.h> -#endif - #ifndef OPENSSL_NO_SSL3 #define HAVE_SSL3 1 #endif @@ -145,7 +141,7 @@ typedef struct _php_openssl_netstream_data_t { php_openssl_sni_cert_t *sni_certs; unsigned sni_cert_count; #ifdef HAVE_TLS_ALPN - php_openssl_alpn_ctx *alpn_ctx; + php_openssl_alpn_ctx alpn_ctx; #endif char *url_name; unsigned state_set:1; @@ -1457,9 +1453,7 @@ static int server_alpn_callback(SSL *ssl_handle, const unsigned char **out, unsi { php_openssl_netstream_data_t *sslsock = arg; - if (SSL_select_next_proto - ((unsigned char **)out, outlen, sslsock->alpn_ctx->data, sslsock->alpn_ctx->len, in, - inlen) != OPENSSL_NPN_NEGOTIATED) { + if (SSL_select_next_proto((unsigned char **)out, outlen, sslsock->alpn_ctx.data, sslsock->alpn_ctx.len, in, inlen) != OPENSSL_NPN_NEGOTIATED) { return SSL_TLSEXT_ERR_NOACK; } @@ -1568,9 +1562,8 @@ int php_openssl_setup_crypto(php_stream *stream, if (sslsock->is_client) { SSL_CTX_set_alpn_protos(sslsock->ctx, alpn, alpn_len); } else { - sslsock->alpn_ctx = (php_openssl_alpn_ctx *) pemalloc(sizeof(php_openssl_alpn_ctx), php_stream_is_persistent(stream)); - sslsock->alpn_ctx->data = (unsigned char *) pestrndup((const char*)alpn, alpn_len, php_stream_is_persistent(stream)); - sslsock->alpn_ctx->len = alpn_len; + sslsock->alpn_ctx.data = (unsigned char *) pestrndup((const char*)alpn, alpn_len, php_stream_is_persistent(stream)); + sslsock->alpn_ctx.len = alpn_len; SSL_CTX_set_alpn_select_cb(sslsock->ctx, server_alpn_callback, sslsock); } @@ -1602,10 +1595,9 @@ int php_openssl_setup_crypto(php_stream *stream, SSL_CTX_free(sslsock->ctx); sslsock->ctx = NULL; #ifdef HAVE_TLS_ALPN - if (sslsock->alpn_ctx) { - pefree(sslsock->alpn_ctx->data, php_stream_is_persistent(stream)); - pefree(sslsock->alpn_ctx, php_stream_is_persistent(stream)); - sslsock->alpn_ctx = NULL; + if (sslsock->alpn_ctx.data) { + pefree(sslsock->alpn_ctx.data, php_stream_is_persistent(stream)); + sslsock->alpn_ctx.data = NULL; } #endif return FAILURE; @@ -2110,9 +2102,8 @@ static int php_openssl_sockop_close(php_stream *stream, int close_handle) /* {{{ sslsock->ctx = NULL; } #ifdef HAVE_TLS_ALPN - if (sslsock->alpn_ctx) { - pefree(sslsock->alpn_ctx->data, php_stream_is_persistent(stream)); - pefree(sslsock->alpn_ctx, php_stream_is_persistent(stream)); + if (sslsock->alpn_ctx.data) { + pefree(sslsock->alpn_ctx.data, php_stream_is_persistent(stream)); } #endif #ifdef PHP_WIN32 |
