View | Details | Raw Unified | Return to bug 231940 | Differences between
and this patch

Collapse All | Expand All

(-)multimedia/librtmp/Makefile (-3 / +7 lines)
Lines 2-7 Link Here
2
2
3
PORTNAME=	librtmp
3
PORTNAME=	librtmp
4
PORTVERSION=	2.4.20151223
4
PORTVERSION=	2.4.20151223
5
PORTREVISION=	1
5
CATEGORIES=	multimedia net
6
CATEGORIES=	multimedia net
6
MASTER_SITES=	LOCAL/hrs
7
MASTER_SITES=	LOCAL/hrs
7
DISTNAME=	rtmpdump-2.4.fa8646da
8
DISTNAME=	rtmpdump-2.4.fa8646da
Lines 10-23 Link Here
10
COMMENT=	RTMP stream library
11
COMMENT=	RTMP stream library
11
12
12
LICENSE=	GPLv2
13
LICENSE=	GPLv2
14
LICENSE_FILE=	${WRKSRC}/COPYING
13
15
14
BROKEN_SSL=	openssl-devel
15
BROKEN_SSL_REASON_openssl-devel=	error: incomplete definition of type 'struct dh_st'
16
17
USES=		pkgconfig tar:bz2 ssl
16
USES=		pkgconfig tar:bz2 ssl
18
USE_LDCONFIG=	yes
17
USE_LDCONFIG=	yes
18
19
CFLAGS+=	-I${OPENSSLINC}
19
CFLAGS+=	-I${OPENSSLINC}
20
LDFLAGS+=	-L${OPENSSLLIB}
20
LDFLAGS+=	-L${OPENSSLLIB}
21
WRKSRC=		${WRKDIR}/${DISTNAME}/librtmp
21
WRKSRC=		${WRKDIR}/${DISTNAME}/librtmp
22
MAKE_ARGS=	CC="${CC}"
22
23
24
post-install:
25
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/librtmp.so.1
26
23
.include <bsd.port.mk>
27
.include <bsd.port.mk>
(-)multimedia/librtmp/files/patch-dh.h (+22 lines)
Line 0 Link Here
1
--- dh.h.orig	2018-10-07 19:38:43 UTC
2
+++ dh.h
3
@@ -42,6 +42,9 @@ typedef mpi * MP_t;
4
 #define MP_bytes(u)	mpi_size(u)
5
 #define MP_setbin(u,buf,len)	mpi_write_binary(u,buf,len)
6
 #define MP_getbin(u,buf,len)	MP_new(u); mpi_read_binary(u,buf,len)
7
+#if OPENSSL_VERSION_NUMBER > 0x10100000L
8
+#include <openssl/dh.h>
9
+#endif
10
 
11
 typedef struct MDH {
12
   MP_t p;
13
@@ -245,6 +248,9 @@ failed:
14
 }
15
 
16
 static MDH *
17
+#if OPENSSL_VERSION_NUMBER > 0x10100000L
18
+DH *DHInit = DH_new()
19
+#endif
20
 DHInit(int nKeyBits)
21
 {
22
   size_t res;
(-)multimedia/librtmp/files/patch-handshake.h (+138 lines)
Line 0 Link Here
1
--- handshake.h.orig	2016-02-29 01:15:13 UTC
2
+++ handshake.h
3
@@ -31,9 +31,9 @@
4
 #define SHA256_DIGEST_LENGTH	32
5
 #endif
6
 #define HMAC_CTX	sha2_context
7
-#define HMAC_setup(ctx, key, len)	sha2_hmac_starts(&ctx, (unsigned char *)key, len, 0)
8
-#define HMAC_crunch(ctx, buf, len)	sha2_hmac_update(&ctx, buf, len)
9
-#define HMAC_finish(ctx, dig, dlen)	dlen = SHA256_DIGEST_LENGTH; sha2_hmac_finish(&ctx, dig)
10
+#define HMAC_setup(ctx, key, len)	sha2_hmac_starts(ctx, (unsigned char *)key, len, 0)
11
+#define HMAC_crunch(ctx, buf, len)	sha2_hmac_update(ctx, buf, len)
12
+#define HMAC_finish(ctx, dig, dlen)	dlen = SHA256_DIGEST_LENGTH; sha2_hmac_finish(ctx, dig)
13
 
14
 typedef arc4_context *	RC4_handle;
15
 #define RC4_alloc(h)	*h = malloc(sizeof(arc4_context))
16
@@ -50,9 +50,9 @@ typedef arc4_context *	RC4_handle;
17
 #endif
18
 #undef HMAC_CTX
19
 #define HMAC_CTX	struct hmac_sha256_ctx
20
-#define HMAC_setup(ctx, key, len)	hmac_sha256_set_key(&ctx, len, key)
21
-#define HMAC_crunch(ctx, buf, len)	hmac_sha256_update(&ctx, len, buf)
22
-#define HMAC_finish(ctx, dig, dlen)	dlen = SHA256_DIGEST_LENGTH; hmac_sha256_digest(&ctx, SHA256_DIGEST_LENGTH, dig)
23
+#define HMAC_setup(ctx, key, len)	hmac_sha256_set_key(ctx, len, key)
24
+#define HMAC_crunch(ctx, buf, len)	hmac_sha256_update(ctx, len, buf)
25
+#define HMAC_finish(ctx, dig, dlen)	dlen = SHA256_DIGEST_LENGTH; hmac_sha256_digest(ctx, SHA256_DIGEST_LENGTH, dig)
26
 #define HMAC_close(ctx)
27
 
28
 typedef struct arcfour_ctx*	RC4_handle;
29
@@ -69,9 +69,9 @@ typedef struct arcfour_ctx*	RC4_handle;
30
 #if OPENSSL_VERSION_NUMBER < 0x0090800 || !defined(SHA256_DIGEST_LENGTH)
31
 #error Your OpenSSL is too old, need 0.9.8 or newer with SHA256
32
 #endif
33
-#define HMAC_setup(ctx, key, len)	HMAC_CTX_init(&ctx); HMAC_Init_ex(&ctx, key, len, EVP_sha256(), 0)
34
-#define HMAC_crunch(ctx, buf, len)	HMAC_Update(&ctx, buf, len)
35
-#define HMAC_finish(ctx, dig, dlen)	HMAC_Final(&ctx, dig, &dlen); HMAC_CTX_cleanup(&ctx)
36
+#define HMAC_setup(ctx, key, len)	HMAC_CTX_new(); HMAC_Init_ex(ctx, key, len, EVP_sha256(), 0)
37
+#define HMAC_crunch(ctx, buf, len)	HMAC_Update(ctx, buf, len)
38
+#define HMAC_finish(ctx, dig, dlen)	HMAC_Final(ctx, dig, &dlen)
39
 
40
 typedef RC4_KEY *	RC4_handle;
41
 #define RC4_alloc(h)	*h = malloc(sizeof(RC4_KEY))
42
@@ -82,8 +82,12 @@ typedef RC4_KEY *	RC4_handle;
43
 #endif
44
 
45
 #define FP10
46
-
47
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
48
 #include "dh.h"
49
+#endif
50
+#if OPENSSL_VERSION_NUMBER > 0x10100000L
51
+#include <openssl/dh.h>
52
+#endif
53
 
54
 static const uint8_t GenuineFMSKey[] = {
55
   0x47, 0x65, 0x6e, 0x75, 0x69, 0x6e, 0x65, 0x20, 0x41, 0x64, 0x6f, 0x62,
56
@@ -117,7 +121,7 @@ static void InitRC4Encryption
57
 {
58
   uint8_t digest[SHA256_DIGEST_LENGTH];
59
   unsigned int digestLen = 0;
60
-  HMAC_CTX ctx;
61
+HMAC_CTX *ctx = HMAC_CTX_new();
62
 
63
   RC4_alloc(rc4keyIn);
64
   RC4_alloc(rc4keyOut);
65
@@ -266,7 +270,7 @@ HMACsha256(const uint8_t *message, size_t messageLen, 
66
 	   size_t keylen, uint8_t *digest)
67
 {
68
   unsigned int digestLen;
69
-  HMAC_CTX ctx;
70
+  HMAC_CTX *ctx = HMAC_CTX_new();
71
 
72
   HMAC_setup(ctx, key, keylen);
73
   HMAC_crunch(ctx, message, messageLen);
74
@@ -769,7 +773,7 @@ HandShake(RTMP * r, int FP9HandShake)
75
       if (encrypted)
76
 	{
77
 	  /* generate Diffie-Hellmann parameters */
78
-	  r->Link.dh = DHInit(1024);
79
+	  r->Link.dh = DH_get_1024_160();
80
 	  if (!r->Link.dh)
81
 	    {
82
 	      RTMP_Log(RTMP_LOGERROR, "%s: Couldn't initialize Diffie-Hellmann!",
83
@@ -780,20 +784,20 @@ HandShake(RTMP * r, int FP9HandShake)
84
 	  dhposClient = getdh(clientsig, RTMP_SIG_SIZE);
85
 	  RTMP_Log(RTMP_LOGDEBUG, "%s: DH pubkey position: %d", __FUNCTION__, dhposClient);
86
 
87
-	  if (!DHGenerateKey(r->Link.dh))
88
+	  if (!DH_generate_key(r->Link.dh))
89
 	    {
90
 	      RTMP_Log(RTMP_LOGERROR, "%s: Couldn't generate Diffie-Hellmann public key!",
91
 		  __FUNCTION__);
92
 	      return FALSE;
93
 	    }
94
-
95
-	  if (!DHGetPublicKey(r->Link.dh, &clientsig[dhposClient], 128))
96
+	  if (!DHGetPublicKey(r->Link.dh, clientsig[dhposClient], 128))
97
 	    {
98
 	      RTMP_Log(RTMP_LOGERROR, "%s: Couldn't write public key!", __FUNCTION__);
99
 	      return FALSE;
100
 	    }
101
 	}
102
 
103
+
104
       digestPosClient = getdig(clientsig, RTMP_SIG_SIZE);	/* reuse this value in verification */
105
       RTMP_Log(RTMP_LOGDEBUG, "%s: Client digest offset: %d", __FUNCTION__,
106
 	  digestPosClient);
107
@@ -890,8 +894,13 @@ HandShake(RTMP * r, int FP9HandShake)
108
 	  dhposServer = getdh(serversig, RTMP_SIG_SIZE);
109
 	  RTMP_Log(RTMP_LOGDEBUG, "%s: Server DH public key offset: %d", __FUNCTION__,
110
 	    dhposServer);
111
+#if OPENSSL_VERSION_NUMBER > 0x10100000L
112
+	  len = DH_compute_key(r->Link.dh, &serversig[dhposServer],
113
+                                         128, secretKey);
114
+#else
115
 	  len = DHComputeSharedSecretKey(r->Link.dh, &serversig[dhposServer],
116
 	  				128, secretKey);
117
+#endif
118
 	  if (len < 0)
119
 	    {
120
 	      RTMP_Log(RTMP_LOGDEBUG, "%s: Wrong secret key position!", __FUNCTION__);
121
@@ -1157,7 +1166,7 @@ SHandShake(RTMP * r)
122
       if (encrypted)
123
 	{
124
 	  /* generate Diffie-Hellmann parameters */
125
-	  r->Link.dh = DHInit(1024);
126
+	  DH_generate_key(r->Link.dh);
127
 	  if (!r->Link.dh)
128
 	    {
129
 	      RTMP_Log(RTMP_LOGERROR, "%s: Couldn't initialize Diffie-Hellmann!",
130
@@ -1168,7 +1177,7 @@ SHandShake(RTMP * r)
131
 	  dhposServer = getdh(serversig, RTMP_SIG_SIZE);
132
 	  RTMP_Log(RTMP_LOGDEBUG, "%s: DH pubkey position: %d", __FUNCTION__, dhposServer);
133
 
134
-	  if (!DHGenerateKey(r->Link.dh))
135
+	  if (!DH_generate_key(r->Link.dh))
136
 	    {
137
 	      RTMP_Log(RTMP_LOGERROR, "%s: Couldn't generate Diffie-Hellmann public key!",
138
 		  __FUNCTION__);
(-)multimedia/librtmp/files/patch-hashswf.c (+26 lines)
Line 0 Link Here
1
--- hashswf.c.orig	2016-02-29 01:15:13 UTC
2
+++ hashswf.c
3
@@ -57,10 +57,10 @@
4
 #include <openssl/sha.h>
5
 #include <openssl/hmac.h>
6
 #include <openssl/rc4.h>
7
-#define HMAC_setup(ctx, key, len)	HMAC_CTX_init(&ctx); HMAC_Init_ex(&ctx, (unsigned char *)key, len, EVP_sha256(), 0)
8
-#define HMAC_crunch(ctx, buf, len)	HMAC_Update(&ctx, (unsigned char *)buf, len)
9
-#define HMAC_finish(ctx, dig, dlen)	HMAC_Final(&ctx, (unsigned char *)dig, &dlen);
10
-#define HMAC_close(ctx)	HMAC_CTX_cleanup(&ctx)
11
+#define HMAC_setup(ctx, key, len)	HMAC_CTX_new(); HMAC_Init_ex(ctx, (unsigned char *)key, len, EVP_sha256(), 0)
12
+#define HMAC_crunch(ctx, buf, len)	HMAC_Update(ctx, (unsigned char *)buf, len)
13
+#define HMAC_finish(ctx, dig, dlen)	HMAC_Final(ctx, (unsigned char *)dig, &dlen);
14
+#define HMAC_close(ctx)
15
 #endif
16
 
17
 extern void RTMP_TLS_Init();
18
@@ -289,7 +289,7 @@ leave:
19
 struct info
20
 {
21
   z_stream *zs;
22
-  HMAC_CTX ctx;
23
+  HMAC_CTX *ctx;
24
   int first;
25
   int zlib;
26
   int size;
(-)multimedia/librtmp/files/patch-librtmp-Makefile (-83 lines)
Lines 1-83 Link Here
1
--- Makefile.orig	2016-02-29 01:15:13 UTC
2
+++ Makefile
3
@@ -1,19 +1,21 @@
4
 VERSION=v2.4
5
 
6
-prefix=/usr/local
7
+prefix=$(PREFIX)
8
 
9
 incdir=$(prefix)/include/librtmp
10
 bindir=$(prefix)/bin
11
 libdir=$(prefix)/lib
12
+libdatadir=$(prefix)/libdata
13
 mandir=$(prefix)/man
14
 BINDIR=$(DESTDIR)$(bindir)
15
 INCDIR=$(DESTDIR)$(incdir)
16
 LIBDIR=$(DESTDIR)$(libdir)
17
+LIBDATADIR=$(DESTDIR)$(libdatadir)
18
 MANDIR=$(DESTDIR)$(mandir)
19
 
20
-CC=$(CROSS_COMPILE)gcc
21
-LD=$(CROSS_COMPILE)ld
22
-AR=$(CROSS_COMPILE)ar
23
+CC?=$(CROSS_COMPILE)gcc
24
+LD?=$(CROSS_COMPILE)ld
25
+AR?=$(CROSS_COMPILE)ar
26
 
27
 SYS=posix
28
 CRYPTO=OPENSSL
29
@@ -23,14 +25,14 @@ DEF_OPENSSL=-DUSE_OPENSSL
30
 DEF_GNUTLS=-DUSE_GNUTLS
31
 DEF_=-DNO_CRYPTO
32
 REQ_GNUTLS=gnutls,hogweed,nettle
33
-REQ_OPENSSL=libssl,libcrypto
34
+#REQ_OPENSSL=libssl,libcrypto
35
 PUB_GNUTLS=-lgmp
36
 LIBZ=-lz
37
 LIBS_posix=
38
 LIBS_darwin=
39
 LIBS_mingw=-lws2_32 -lwinmm -lgdi32
40
 LIB_GNUTLS=-lgnutls -lhogweed -lnettle -lgmp $(LIBZ)
41
-LIB_OPENSSL=-lssl -lcrypto $(LIBZ)
42
+LIB_OPENSSL=-L$(OPENSSLLIB) -lssl -lcrypto $(LIBZ)
43
 LIB_POLARSSL=-lpolarssl $(LIBZ)
44
 PRIVATE_LIBS=$(LIBS_$(SYS))
45
 CRYPTO_LIB=$(LIB_$(CRYPTO)) $(PRIVATE_LIBS)
46
@@ -74,8 +76,9 @@ SO_INST=$(SOINST_$(SHARED))
47
 
48
 DEF=-DRTMPDUMP_VERSION=\"$(VERSION)\" $(CRYPTO_DEF) $(XDEF)
49
 OPT=-O2
50
-CFLAGS=-Wall $(XCFLAGS) $(INC) $(DEF) $(OPT) $(SO_DEF)
51
-LDFLAGS=$(XLDFLAGS)
52
+#CFLAGS=-Wall $(XCFLAGS) $(INC) $(DEF) $(OPT) $(SO_DEF)
53
+CFLAGS+=$(DEF) $(SO_DEF)
54
+#LDFLAGS=$(XLDFLAGS)
55
 
56
 
57
 OBJS=rtmp.o log.o amf.o hashswf.o parseurl.o
58
@@ -102,20 +105,22 @@ librtmp.pc: librtmp.pc.in Makefile
59
 	sed -e "s;@prefix@;$(prefix);" -e "s;@libdir@;$(libdir);" \
60
 		-e "s;@VERSION@;$(VERSION);" \
61
 		-e "s;@CRYPTO_REQ@;$(CRYPTO_REQ);" \
62
+		-e "s;@OPENSSLLIB@;$(OPENSSLLIB);" \
63
+		-e "s;@OPENSSLINC@;$(OPENSSLINC);" \
64
 		-e "s;@PUBLIC_LIBS@;$(PUBLIC_LIBS);" \
65
 		-e "s;@PRIVATE_LIBS@;$(PRIVATE_LIBS);" librtmp.pc.in > $@
66
 
67
 install:	install_base $(SO_INST)
68
 
69
 install_base:	librtmp.a librtmp.pc
70
-	-mkdir -p $(INCDIR) $(LIBDIR)/pkgconfig $(MANDIR)/man3 $(SODIR)
71
+	-mkdir -p $(INCDIR) $(LIBDATADIR)/pkgconfig $(MANDIR)/man3 $(SODIR)
72
 	cp amf.h http.h log.h rtmp.h $(INCDIR)
73
 	cp librtmp.a $(LIBDIR)
74
-	cp librtmp.pc $(LIBDIR)/pkgconfig
75
+	cp librtmp.pc $(LIBDATADIR)/pkgconfig
76
 	cp librtmp.3 $(MANDIR)/man3
77
 
78
 install_so:	librtmp$(SO_EXT)
79
-	cp librtmp$(SO_EXT) $(SODIR)
80
+	${BSD_INSTALL_LIB} librtmp$(SO_EXT) $(SODIR)
81
 	$(INSTALL_IMPLIB)
82
 	cd $(SODIR); ln -sf librtmp$(SO_EXT) librtmp.$(SOX)
83
 

Return to bug 231940