diff --git a/net-im/telegram/Makefile b/net-im/telegram/Makefile index 9283d5b85e856..51165902a80bb 100644 --- a/net-im/telegram/Makefile +++ b/net-im/telegram/Makefile @@ -35,6 +35,12 @@ PORTDOCS= * OPTIONS_DEFINE= DOCS +.include + +.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200085 +EXTRA_PATCHES+= ${FILESDIR}/extra-patch-openssl-1.1.0 +.endif + do-install: @${MKDIR} ${STAGEDIR}${PREFIX}/etc/telegram-cli ${INSTALL_PROGRAM} ${WRKSRC}/bin/telegram-cli ${STAGEDIR}${PREFIX}/bin diff --git a/net-im/telegram/files/extra-patch-openssl-1.1.0 b/net-im/telegram/files/extra-patch-openssl-1.1.0 new file mode 100644 index 0000000000000..f21a362607809 --- /dev/null +++ b/net-im/telegram/files/extra-patch-openssl-1.1.0 @@ -0,0 +1,38 @@ +--- tgl/crypto/rsa_pem_openssl.c.orig 2018-10-21 14:25:36 UTC ++++ tgl/crypto/rsa_pem_openssl.c +@@ -36,18 +36,28 @@ TGLC_WRAPPER_ASSOC(rsa,RSA) + // TODO: Refactor crucial struct-identity into its own header. + TGLC_WRAPPER_ASSOC(bn,BIGNUM) + ++/* ++ * Note: Since OpenSSL version 1.1.0-pre5 the RSA struct (rsa_st) is opaque, ++ * see https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes ++ */ + TGLC_rsa *TGLC_rsa_new (unsigned long e, int n_bytes, const unsigned char *n) { + RSA *ret = RSA_new (); +- ret->e = unwrap_bn (TGLC_bn_new ()); +- TGLC_bn_set_word (wrap_bn (ret->e), e); +- ret->n = unwrap_bn (TGLC_bn_bin2bn (n, n_bytes, NULL)); ++ BIGNUM *ret_e = unwrap_bn (TGLC_bn_new ()); ++ BIGNUM *ret_n = unwrap_bn (TGLC_bn_bin2bn (n, n_bytes, NULL)); ++ RSA_set0_key (ret, ret_n, ret_e, NULL); ++ TGLC_bn_set_word (wrap_bn (ret_e), e); + return wrap_rsa (ret); + } + +-#define RSA_GETTER(M) \ +- TGLC_bn *TGLC_rsa_ ## M (TGLC_rsa *key) { \ +- return wrap_bn (unwrap_rsa (key)->M); \ +- } \ ++#define RSA_GETTER(M) \ ++TGLC_bn *TGLC_rsa_ ## M (TGLC_rsa *key) { \ ++ BIGNUM *rsa_n, *rsa_e, *rsa_d; \ ++ RSA_get0_key(unwrap_rsa (key), \ ++ (const BIGNUM **) &rsa_n, \ ++ (const BIGNUM **) &rsa_e, \ ++ (const BIGNUM **) &rsa_d); \ ++ return wrap_bn (rsa_ ## M); \ ++} + + RSA_GETTER(n); + RSA_GETTER(e);