From owner-svn-ports-all@freebsd.org Thu Mar 7 14:09:36 2019 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C81081530927; Thu, 7 Mar 2019 14:09:36 +0000 (UTC) (envelope-from danfe@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6ED90879A4; Thu, 7 Mar 2019 14:09:36 +0000 (UTC) (envelope-from danfe@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 630F71CB4D; Thu, 7 Mar 2019 14:09:36 +0000 (UTC) (envelope-from danfe@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x27E9aT5041551; Thu, 7 Mar 2019 14:09:36 GMT (envelope-from danfe@FreeBSD.org) Received: (from danfe@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x27E9amo041550; Thu, 7 Mar 2019 14:09:36 GMT (envelope-from danfe@FreeBSD.org) Message-Id: <201903071409.x27E9amo041550@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: danfe set sender to danfe@FreeBSD.org using -f From: Alexey Dokuchaev Date: Thu, 7 Mar 2019 14:09:36 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r494948 - head/security/john/files X-SVN-Group: ports-head X-SVN-Commit-Author: danfe X-SVN-Commit-Paths: head/security/john/files X-SVN-Commit-Revision: 494948 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 6ED90879A4 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.98)[-0.975,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Mar 2019 14:09:37 -0000 Author: danfe Date: Thu Mar 7 14:09:35 2019 New Revision: 494948 URL: https://svnweb.freebsd.org/changeset/ports/494948 Log: Unbreak GPG format plugin against newer versions of OpenSSL. Obtained from: https://github.com/magnumripper/JohnTheRipper/commit/c0557e7 Added: head/security/john/files/patch-gpg__fmt__plug.c (contents, props changed) Added: head/security/john/files/patch-gpg__fmt__plug.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/security/john/files/patch-gpg__fmt__plug.c Thu Mar 7 14:09:35 2019 (r494948) @@ -0,0 +1,117 @@ +--- gpg_fmt_plug.c.orig 2014-12-18 07:59:02 UTC ++++ gpg_fmt_plug.c +@@ -930,8 +930,12 @@ static int check_dsa_secret_key(DSA *dsa) + { + int error; + int rc = -1; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000 ++ const BIGNUM *p, *q, *g, *pub_key, *priv_key; ++#endif + BIGNUM *res = BN_new(); + BN_CTX *ctx = BN_CTX_new(); ++ + if (!res) { + fprintf(stderr, "failed to allocate result BN in check_dsa_secret_key()\n"); + exit(-1); +@@ -941,23 +945,35 @@ static int check_dsa_secret_key(DSA *dsa) + exit(-1); + } + ++#if OPENSSL_VERSION_NUMBER >= 0x10100000 ++ DSA_get0_pqg(dsa, &p, &q, &g); ++ DSA_get0_key(dsa, &pub_key, &priv_key); ++ error = BN_mod_exp(res, g, priv_key, p, ctx); ++#else + error = BN_mod_exp(res, dsa->g, dsa->priv_key, dsa->p, ctx); ++#endif ++ + if ( error == 0 ) { + goto freestuff; + } + ++#if OPENSSL_VERSION_NUMBER >= 0x10100000 ++ rc = BN_cmp(res, pub_key); ++#else + rc = BN_cmp(res, dsa->pub_key); ++#endif + + freestuff: + + BN_CTX_free(ctx); + BN_free(res); ++#if OPENSSL_VERSION_NUMBER < 0x10100000 + BN_free(dsa->g); + BN_free(dsa->q); + BN_free(dsa->p); + BN_free(dsa->pub_key); + BN_free(dsa->priv_key); +- ++#endif + return rc; + } + +@@ -1212,9 +1228,7 @@ static int check(unsigned char *keydata, int ks) + return 0; + if (blen < cur_salt->datalen && ((b = BN_bin2bn(out + 2, blen, NULL)) != NULL)) { + char *str = BN_bn2hex(b); +- DSA dsa; +- ElGamal_secret_key elg; +- RSA_secret_key rsa; ++ + if (strlen(str) != blen * 2) { /* verifier 2 */ + OPENSSL_free(str); + return 0; +@@ -1222,6 +1236,28 @@ static int check(unsigned char *keydata, int ks) + OPENSSL_free(str); + + if (cur_salt->pk_algorithm == 17) { /* DSA check */ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000 ++ DSA *dsa = DSA_new(); ++ BIGNUM *p, *q, *g, *pub_key, *priv_key; ++ ++ p = BN_bin2bn(cur_salt->p, cur_salt->pl, NULL); ++ // puts(BN_bn2hex(dsa.p)); ++ q = BN_bin2bn(cur_salt->q, cur_salt->ql, NULL); ++ // puts(BN_bn2hex(dsa.q)); ++ g = BN_bin2bn(cur_salt->g, cur_salt->gl, NULL); ++ // puts(BN_bn2hex(dsa.g)); ++ priv_key = b; ++ pub_key = BN_bin2bn(cur_salt->y, cur_salt->yl, NULL); ++ ++ DSA_set0_pqg(dsa, p, q, g); ++ DSA_set0_key(dsa, pub_key, priv_key); ++ ++ // puts(BN_bn2hex(dsa.pub_key)); ++ ret = check_dsa_secret_key(dsa); /* verifier 3 */ ++ DSA_free(dsa); ++#else ++ DSA dsa; ++ + dsa.p = BN_bin2bn(cur_salt->p, cur_salt->pl, NULL); + // puts(BN_bn2hex(dsa.p)); + dsa.q = BN_bin2bn(cur_salt->q, cur_salt->ql, NULL); +@@ -1232,10 +1268,13 @@ static int check(unsigned char *keydata, int ks) + dsa.pub_key = BN_bin2bn(cur_salt->y, cur_salt->yl, NULL); + // puts(BN_bn2hex(dsa.pub_key)); + ret = check_dsa_secret_key(&dsa); /* verifier 3 */ ++#endif + if (ret != 0) + return 0; + } + if (cur_salt->pk_algorithm == 16 || cur_salt->pk_algorithm == 20) { /* ElGamal check */ ++ ElGamal_secret_key elg; ++ + elg.p = BN_bin2bn(cur_salt->p, cur_salt->pl, NULL); + // puts(BN_bn2hex(elg.p)); + elg.g = BN_bin2bn(cur_salt->g, cur_salt->gl, NULL); +@@ -1249,8 +1288,10 @@ static int check(unsigned char *keydata, int ks) + return 0; + } + if (cur_salt->pk_algorithm == 1) { /* RSA check */ ++ RSA_secret_key rsa; + // http://www.ietf.org/rfc/rfc4880.txt + int length = 0; ++ + length += give_multi_precision_integer(out, length, &cur_salt->dl, cur_salt->d); + length += give_multi_precision_integer(out, length, &cur_salt->pl, cur_salt->p); + length += give_multi_precision_integer(out, length, &cur_salt->ql, cur_salt->q);