early-access version 2853

This commit is contained in:
pineappleEA
2022-07-23 03:01:36 +02:00
parent 1f2b5081b5
commit 1f111bb69c
8955 changed files with 418777 additions and 999 deletions

57
externals/vcpkg/ports/librtmp/CMakeLists.txt vendored Executable file
View File

@@ -0,0 +1,57 @@
cmake_minimum_required(VERSION 3.8)
project(librtmp C)
find_package(ZLIB REQUIRED)
find_package(OpenSSL REQUIRED)
include_directories(${ZLIB_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_DEBUG_POSTFIX "d")
if(MSVC)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
add_definitions(-D_WINSOCK_DEPRECATED_NO_WARNINGS)
endif()
add_definitions(-DLIBRTMP_ONLY)
# List the header files
set(HEADERS librtmp/amf.h
librtmp/bytes.h
librtmp/dh.h
librtmp/dhgroups.h
librtmp/handshake.h
librtmp/http.h
librtmp/log.h
librtmp/rtmp.h
librtmp/rtmp_sys.h
)
# List the source files
set(SRCS librtmp/amf.c
librtmp/hashswf.c
librtmp/log.c
librtmp/parseurl.c
librtmp/rtmp.c
)
if(MSVC)
set(SRCS_MSVC "librtmp/librtmp.def")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996")
endif()
add_library(librtmp ${SRCS} ${HEADERS} ${SRCS_MSVC})
target_include_directories(librtmp PRIVATE ./librtmp)
target_link_libraries(librtmp PRIVATE ${ZLIB_LIBRARIES} ${OPENSSL_LIBRARIES})
target_link_libraries(librtmp PRIVATE Ws2_32.lib Winmm.lib)
install(TARGETS librtmp
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
install(DIRECTORY ${PROJECT_SOURCE_DIR}/librtmp DESTINATION include FILES_MATCHING PATTERN "*.h")

136
externals/vcpkg/ports/librtmp/dh.patch vendored Executable file
View File

@@ -0,0 +1,136 @@
diff --git a/librtmp/dh.h b/librtmp/dh.h
index 8e285a60c..ea562d200 100644
--- a/librtmp/dh.h
+++ b/librtmp/dh.h
@@ -139,11 +139,14 @@ typedef BIGNUM * MP_t;
#define MP_setbin(u,buf,len) BN_bn2bin(u,buf)
#define MP_getbin(u,buf,len) u = BN_bin2bn(buf,len,0)
+
#define MDH DH
#define MDH_new() DH_new()
#define MDH_free(dh) DH_free(dh)
#define MDH_generate_key(dh) DH_generate_key(dh)
#define MDH_compute_key(secret, seclen, pub, dh) DH_compute_key(secret, pub, dh)
+#define MPH_set_pqg(dh, p, q, g, res) res = DH_set0_pqg(dh, p, q, g)
+#define MPH_set_length(dh, len, res) res = DH_set_length(dh,len)
#endif
@@ -152,7 +155,7 @@ typedef BIGNUM * MP_t;
/* RFC 2631, Section 2.1.5, http://www.ietf.org/rfc/rfc2631.txt */
static int
-isValidPublicKey(MP_t y, MP_t p, MP_t q)
+isValidPublicKey(const MP_t y,const MP_t p, MP_t q)
{
int ret = TRUE;
MP_t bn;
@@ -211,20 +214,33 @@ DHInit(int nKeyBits)
if (!dh)
goto failed;
- MP_new(dh->g);
+ MP_t g,p;
+ MP_new(g);
- if (!dh->g)
+ if (!g)
+ {
goto failed;
+ }
- MP_gethex(dh->p, P1024, res); /* prime P1024, see dhgroups.h */
+ DH_get0_pqg(dh, (BIGNUM const**)&p, NULL, NULL);
+ MP_gethex(p, P1024, res); /* prime P1024, see dhgroups.h */
if (!res)
{
goto failed;
}
- MP_set_w(dh->g, 2); /* base 2 */
-
- dh->length = nKeyBits;
+ MP_set_w(g, 2); /* base 2 */
+ MPH_set_pqg(dh,p,NULL,g, res);
+ if (!res)
+ {
+ MP_free(g);
+ goto failed;
+ }
+ MPH_set_length(dh,nKeyBits, res);
+ if (!res)
+ {
+ goto failed;
+ }
return dh;
failed:
@@ -250,14 +267,11 @@ DHGenerateKey(MDH *dh)
MP_gethex(q1, Q1024, res);
assert(res);
-
- res = isValidPublicKey(dh->pub_key, dh->p, q1);
+ res = isValidPublicKey(DH_get0_pub_key(dh), DH_get0_p(dh), q1);
if (!res)
- {
- MP_free(dh->pub_key);
- MP_free(dh->priv_key);
- dh->pub_key = dh->priv_key = 0;
- }
+ {
+ MDH_free(dh); // Cannot set priv_key to nullptr so there is no way to generate a new pub/priv key pair in openssl 1.1.1.
+ }
MP_free(q1);
}
@@ -272,15 +286,16 @@ static int
DHGetPublicKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen)
{
int len;
- if (!dh || !dh->pub_key)
+ MP_t pub = DH_get0_pub_key(dh);
+ if (!dh || !pub)
return 0;
- len = MP_bytes(dh->pub_key);
+ len = MP_bytes(pub);
if (len <= 0 || len > (int) nPubkeyLen)
return 0;
memset(pubkey, 0, nPubkeyLen);
- MP_setbin(dh->pub_key, pubkey + (nPubkeyLen - len), len);
+ MP_setbin(pub, pubkey + (nPubkeyLen - len), len);
return 1;
}
@@ -288,15 +303,16 @@ DHGetPublicKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen)
static int
DHGetPrivateKey(MDH *dh, uint8_t *privkey, size_t nPrivkeyLen)
{
- if (!dh || !dh->priv_key)
+ MP_t priv = DH_get0_priv_key(dh);
+ if (!dh || !priv)
return 0;
- int len = MP_bytes(dh->priv_key);
+ int len = MP_bytes(priv);
if (len <= 0 || len > (int) nPrivkeyLen)
return 0;
memset(privkey, 0, nPrivkeyLen);
- MP_setbin(dh->priv_key, privkey + (nPrivkeyLen - len), len);
+ MP_setbin(priv, privkey + (nPrivkeyLen - len), len);
return 1;
}
#endif
@@ -322,7 +338,7 @@ DHComputeSharedSecretKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen,
MP_gethex(q1, Q1024, len);
assert(len);
- if (isValidPublicKey(pubkeyBn, dh->p, q1))
+ if (isValidPublicKey(pubkeyBn, DH_get0_p(dh), q1))
res = MDH_compute_key(secret, nPubkeyLen, pubkeyBn, dh);
else
res = -1;

View File

@@ -0,0 +1,20 @@
diff --git a/librtmp/rtmp_sys.h b/librtmp/rtmp_sys.h
index 6a3f215..1b5ac2a 100644
--- a/librtmp/rtmp_sys.h
+++ b/librtmp/rtmp_sys.h
@@ -28,11 +28,13 @@
#include <ws2tcpip.h>
#ifdef _MSC_VER /* MSVC */
+#if _MSC_VER < 1900
#define snprintf _snprintf
-#define strcasecmp stricmp
-#define strncasecmp strnicmp
#define vsnprintf _vsnprintf
#endif
+#define strcasecmp _stricmp
+#define strncasecmp _strnicmp
+#endif
#define GetSockError() WSAGetLastError()
#define SetSockError(e) WSASetLastError(e)

35
externals/vcpkg/ports/librtmp/handshake.patch vendored Executable file
View File

@@ -0,0 +1,35 @@
diff --git a/librtmp/handshake.h b/librtmp/handshake.h
index 98bf3c877..0819152bd 100644
--- a/librtmp/handshake.h
+++ b/librtmp/handshake.h
@@ -66,9 +66,9 @@ typedef gcry_cipher_hd_t RC4_handle;
#if OPENSSL_VERSION_NUMBER < 0x0090800 || !defined(SHA256_DIGEST_LENGTH)
#error Your OpenSSL is too old, need 0.9.8 or newer with SHA256
#endif
-#define HMAC_setup(ctx, key, len) HMAC_CTX_init(&ctx); HMAC_Init_ex(&ctx, key, len, EVP_sha256(), 0)
-#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, buf, len)
-#define HMAC_finish(ctx, dig, dlen) HMAC_Final(&ctx, dig, &dlen); HMAC_CTX_cleanup(&ctx)
+#define HMAC_setup(ctx, key, len) ctx = HMAC_CTX_new(); HMAC_Init_ex(ctx, key, len, EVP_sha256(), 0)
+#define HMAC_crunch(ctx, buf, len) HMAC_Update(ctx, buf, len)
+#define HMAC_finish(ctx, dig, dlen) HMAC_Final(ctx, dig, &dlen); HMAC_CTX_free(ctx)
typedef RC4_KEY * RC4_handle;
#define RC4_alloc(h) *h = malloc(sizeof(RC4_KEY))
@@ -114,7 +114,7 @@ static void InitRC4Encryption
{
uint8_t digest[SHA256_DIGEST_LENGTH];
unsigned int digestLen = 0;
- HMAC_CTX ctx;
+ HMAC_CTX *ctx;
RC4_alloc(rc4keyIn);
RC4_alloc(rc4keyOut);
@@ -263,7 +263,7 @@ HMACsha256(const uint8_t *message, size_t messageLen, const uint8_t *key,
size_t keylen, uint8_t *digest)
{
unsigned int digestLen;
- HMAC_CTX ctx;
+ HMAC_CTX *ctx;
HMAC_setup(ctx, key, keylen);
HMAC_crunch(ctx, message, messageLen);

28
externals/vcpkg/ports/librtmp/hashswf.patch vendored Executable file
View File

@@ -0,0 +1,28 @@
diff --git a/librtmp/hashswf.c b/librtmp/hashswf.c
index 3c56b6922..964a64d01 100644
--- a/librtmp/hashswf.c
+++ b/librtmp/hashswf.c
@@ -57,10 +57,10 @@
#include <openssl/sha.h>
#include <openssl/hmac.h>
#include <openssl/rc4.h>
-#define HMAC_setup(ctx, key, len) HMAC_CTX_init(&ctx); HMAC_Init_ex(&ctx, (unsigned char *)key, len, EVP_sha256(), 0)
-#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, (unsigned char *)buf, len)
-#define HMAC_finish(ctx, dig, dlen) HMAC_Final(&ctx, (unsigned char *)dig, &dlen);
-#define HMAC_close(ctx) HMAC_CTX_cleanup(&ctx)
+#define HMAC_setup(ctx, key, len) ctx = HMAC_CTX_new(); HMAC_Init_ex(ctx, (unsigned char *)key, len, EVP_sha256(), 0)
+#define HMAC_crunch(ctx, buf, len) HMAC_Update(ctx, (unsigned char *)buf, len)
+#define HMAC_finish(ctx, dig, dlen) HMAC_Final(ctx, (unsigned char *)dig, &dlen);
+#define HMAC_close(ctx) HMAC_CTX_free(ctx)
#endif
extern void RTMP_TLS_Init();
@@ -289,7 +289,7 @@ leave:
struct info
{
z_stream *zs;
- HMAC_CTX ctx;
+ HMAC_CTX *ctx;
int first;
int zlib;
int size;

View File

@@ -0,0 +1,58 @@
diff --git a/librtmp/rtmp.c b/librtmp/rtmp.c
index 0865689..b00710e 100644
--- a/librtmp/rtmp.c
+++ b/librtmp/rtmp.c
@@ -155,7 +155,7 @@ static int clk_tck;
uint32_t
RTMP_GetTime()
{
-#ifdef _DEBUG
+#if defined(_DEBUG) && !defined(LIBRTMP_ONLY)
return 0;
#elif defined(_WIN32)
return timeGetTime();
@@ -1381,7 +1381,7 @@ RTMP_ClientPacket(RTMP *r, RTMPPacket *packet)
return bHasMediaPacket;
}
-#ifdef _DEBUG
+#if defined(_DEBUG) && !defined(LIBRTMP_ONLY)
extern FILE *netstackdump;
extern FILE *netstackdump_read;
#endif
@@ -1469,7 +1469,7 @@ ReadN(RTMP *r, char *buffer, int n)
return FALSE;
}
/*RTMP_Log(RTMP_LOGDEBUG, "%s: %d bytes\n", __FUNCTION__, nBytes); */
-#ifdef _DEBUG
+#if defined(_DEBUG) && !defined(LIBRTMP_ONLY)
fwrite(ptr, 1, nBytes, netstackdump_read);
#endif
@@ -3757,7 +3757,7 @@ HandShake(RTMP *r, int FP9HandShake)
memset(&clientsig[4], 0, 4);
-#ifdef _DEBUG
+#if defined(_DEBUG) && !defined(LIBRTMP_ONLY)
for (i = 8; i < RTMP_SIG_SIZE; i++)
clientsig[i] = 0xff;
#else
@@ -3829,7 +3829,7 @@ SHandShake(RTMP *r)
memcpy(serversig, &uptime, 4);
memset(&serversig[4], 0, 4);
-#ifdef _DEBUG
+#if defined(_DEBUG) && !defined(LIBRTMP_ONLY)
for (i = 8; i < RTMP_SIG_SIZE; i++)
serversig[i] = 0xff;
#else
@@ -4298,7 +4298,7 @@ RTMPSockBuf_Send(RTMPSockBuf *sb, const char *buf, int len)
{
int rc;
-#ifdef _DEBUG
+#if defined(_DEBUG) && !defined(LIBRTMP_ONLY)
fwrite(buf, 1, len, netstackdump);
#endif

109
externals/vcpkg/ports/librtmp/librtmp.def vendored Executable file
View File

@@ -0,0 +1,109 @@
EXPORTS
AMF3_Decode
AMF3CD_AddProp
AMF3CD_GetProp
AMF3Prop_Decode
AMF3ReadInteger
AMF3ReadString
AMF_AddProp
AMF_CountProp
AMF_Decode
AMF_DecodeArray
AMF_DecodeBoolean
AMF_DecodeInt16
AMF_DecodeInt24
AMF_DecodeInt32
AMF_DecodeLongString
AMF_DecodeNumber
AMF_DecodeString
AMF_Dump
AMF_Encode
AMF_EncodeBoolean
AMF_EncodeInt16
AMF_EncodeInt24
AMF_EncodeInt32
AMF_EncodeNamedBoolean
AMF_EncodeNamedNumber
AMF_EncodeNamedString
AMF_EncodeNumber
AMF_EncodeString
AMF_GetProp
AMF_Reset
AMFProp_Decode
AMFProp_Dump
AMFProp_Encode
AMFProp_GetBoolean
AMFProp_GetName
AMFProp_GetNumber
AMFProp_GetObject
AMFProp_GetString
AMFProp_GetType
AMFProp_IsValid
AMFProp_Reset
AMFProp_SetName
RTMP_Alloc
RTMP_ClientPacket
RTMP_Close
RTMP_Connect
RTMP_Connect0
RTMP_Connect1
RTMP_ConnectStream
RTMP_debuglevel
RTMP_DeleteStream
RTMP_DropRequest
RTMP_EnableWrite
RTMP_FindFirstMatchingProperty
RTMP_FindPrefixProperty
RTMP_Free
RTMP_GetDuration
RTMP_GetNextMediaPacket
RTMP_GetTime
RTMP_HashSWF
RTMP_Init
RTMP_IsConnected
RTMP_IsTimedout
RTMP_LibVersion
RTMP_Log
RTMP_LogGetLevel
RTMP_LogHex
RTMP_LogHexString
RTMP_LogPrintf
RTMP_LogSetCallback
RTMP_LogSetLevel
RTMP_LogSetOutput
RTMP_LogStatus
RTMP_ParsePlaypath
RTMP_ParseURL
RTMP_Pause
RTMP_Read
RTMP_ReadPacket
RTMP_ReconnectStream
RTMP_SendChunk
RTMP_SendClientBW
RTMP_SendCreateStream
RTMP_SendCtrl
RTMP_SendPacket
RTMP_SendPause
RTMP_SendSeek
RTMP_SendServerBW
RTMP_Serve
RTMP_SetBufferMS
RTMP_SetOpt
RTMP_SetupStream
RTMP_SetupURL
RTMP_Socket
RTMP_TLS_Init
RTMP_ToggleStream
RTMP_UpdateBufferMS
RTMP_UserInterrupt
RTMP_Write
RTMPPacket_Alloc
RTMPPacket_Dump
RTMPPacket_Free
RTMPPacket_Reset
RTMPSockBuf_Close
RTMPSockBuf_Fill
RTMPSockBuf_Send

30
externals/vcpkg/ports/librtmp/portfile.cmake vendored Executable file
View File

@@ -0,0 +1,30 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO mirror/rtmpdump
REF c5f04a58fc2aeea6296ca7c44ee4734c18401aa3
SHA512 d97ac38672898a96412baa5f03d1e64d512ccefe15ead0a055ca039dc6057e2e620e046c28f4d7468e132b0b5a9eb9bd171250c1afa14da53760a0d7aae3c9e9
PATCHES
dh.patch #Openssl 1.1.1 patch
handshake.patch #Openssl 1.1.1 patch
hashswf.patch #Openssl 1.1.1 patch
fix_strncasecmp.patch
hide_netstackdump.patch
)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
file(COPY ${CMAKE_CURRENT_LIST_DIR}/librtmp.def DESTINATION ${SOURCE_PATH}/librtmp)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
)
vcpkg_install_cmake()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
# License and man
file(INSTALL ${SOURCE_PATH}/librtmp/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/librtmp RENAME copyright)
file(INSTALL ${SOURCE_PATH}/librtmp/librtmp.3.html DESTINATION ${CURRENT_PACKAGES_DIR}/share/librtmp)
vcpkg_copy_pdbs()

11
externals/vcpkg/ports/librtmp/vcpkg.json vendored Executable file
View File

@@ -0,0 +1,11 @@
{
"name": "librtmp",
"version-date": "2019-11-11",
"port-version": 3,
"description": "RTMPDump Real-Time Messaging Protocol API",
"homepage": "https://rtmpdump.mplayerhq.hu",
"dependencies": [
"openssl",
"zlib"
]
}