On 2026/02/08 14:56, Caspar Schutijser wrote:
> Hi,
> 
> After more than a decade, a new version of validns is available.
> It's now hosted with and maintained by DNS-OARC. The build system
> has changed and all patches can go since they're incorporated in
> the main branch.
> 
> I can become MAINTAINER of this tool.
> 
> Did I do the DISTFILES part right? (I think so, because it works and
> produces the desired file name in the distfiles directory.)
> Comments or OKs?

DIST_TUPLE= codeberg DNS-OARC validns v0.9.0 .

> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/net/validns/Makefile,v
> diff -u -p -r1.6 Makefile
> --- Makefile  27 Sep 2023 14:18:39 -0000      1.6
> +++ Makefile  8 Feb 2026 13:42:33 -0000
> @@ -1,29 +1,34 @@
>  COMMENT =    DNS and DNSSEC zone file validator
>  
> -DISTNAME =   validns-0.8
> -REVISION =   1
> +V =          0.9.0
> +PKGNAME =    validns-${V}
>  
>  CATEGORIES = net
>  
> -HOMEPAGE =   http://www.validns.net/
> +HOMEPAGE =   https://codeberg.org/DNS-OARC/validns
> +
> +MAINTAINER = Caspar Schutijser <[email protected]>
>  
>  # BSD
>  PERMIT_PACKAGE =     Yes
>  
>  WANTLIB +=   Judy c crypto pthread
>  
> -SITES =              ${HOMEPAGE}download/
> +SITES =              https://codeberg.org/DNS-OARC/validns/archive/
> +
> +DISTFILES =  validns-{v}${V}${EXTRACT_SUFX}
>  
>  LIB_DEPENDS =        devel/libJudy
>  
>  TEST_DEPENDS =       devel/p5-Test-Command-Simple
>  
> -MAKE_ENV =   CC="${CC}" CFLAGS="${CFLAGS}"
> +CONFIGURE_STYLE =    autoreconf
> +AUTOCONF_VERSION =   2.69
> +AUTOMAKE_VERSION =   1.18
> +AUTORECONF =         ./autogen.sh
>  
> -ALL_TARGET = validns
> +CONFIGURE_ENV =      CPPFLAGS="-I${LOCALBASE}/include" 
> LDFLAGS="-L${LOCALBASE}/lib"
>  
> -do-install:
> -     ${INSTALL_PROGRAM} ${WRKSRC}/validns ${PREFIX}/bin
> -     ${INSTALL_MAN} ${WRKSRC}/validns.1 ${PREFIX}/man/man1
> +WRKSRC =     ${WRKDIR}/validns
>  
>  .include <bsd.port.mk>
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/net/validns/distinfo,v
> diff -u -p -r1.1.1.1 distinfo
> --- distinfo  6 May 2017 15:52:24 -0000       1.1.1.1
> +++ distinfo  8 Feb 2026 13:42:33 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (validns-0.8.tar.gz) = 3y2w6qmYoEEf9MHE5BfrgtMq7Eg1+S9F8mxmyNHVvSI=
> -SIZE (validns-0.8.tar.gz) = 190325
> +SHA256 (validns-0.9.0.tar.gz) = ZwxAIgTewZUbIMTKP171KXYszs4Lu5eWlZzJ/alJ61M=
> +SIZE (validns-0.9.0.tar.gz) = 253152
> Index: patches/patch-Makefile
> ===================================================================
> RCS file: patches/patch-Makefile
> diff -N patches/patch-Makefile
> --- patches/patch-Makefile    11 Mar 2022 19:48:04 -0000      1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,11 +0,0 @@
> -Index: Makefile
> ---- Makefile.orig
> -+++ Makefile
> -@@ -1,6 +1,5 @@
> - # The following options seem to work fine on Linux, FreeBSD, and Darwin
> --OPTIMIZE=-O2 -g
> --CFLAGS=-Wall -Werror -pthread -fno-strict-aliasing
> -+CFLAGS+=-Wall -Werror -pthread -fno-strict-aliasing
> - INCPATH=-I/usr/local/include -I/opt/local/include -I/usr/local/ssl/include
> - CC?=cc
> - 
> Index: patches/patch-carp_c
> ===================================================================
> RCS file: patches/patch-carp_c
> diff -N patches/patch-carp_c
> --- patches/patch-carp_c      11 Mar 2022 19:48:04 -0000      1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,12 +0,0 @@
> -Index: carp.c
> ---- carp.c.orig
> -+++ carp.c
> -@@ -102,7 +102,7 @@ static char proggy[MAXPATHLEN];
> - 
> - const char *thisprogname(void)
> - {
> --#if defined(__FreeBSD__)
> -+#if defined(__FreeBSD__) || defined(__OpenBSD__)
> -     return getprogname();
> - #elif defined(__APPLE__)
> -     return getprogname();
> Index: patches/patch-dnskey_c
> ===================================================================
> RCS file: patches/patch-dnskey_c
> diff -N patches/patch-dnskey_c
> --- patches/patch-dnskey_c    11 Mar 2022 19:48:04 -0000      1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,31 +0,0 @@
> -https://github.com/tobez/validns/pull/71
> -
> -Index: dnskey.c
> ---- dnskey.c.orig
> -+++ dnskey.c
> -@@ -145,6 +145,7 @@ int dnskey_build_pkey(struct rr_dnskey *rr)
> -             unsigned int e_bytes;
> -             unsigned char *pk;
> -             int l;
> -+            BIGNUM *n, *e;
> - 
> -             rsa = RSA_new();
> -             if (!rsa)
> -@@ -165,11 +166,15 @@ int dnskey_build_pkey(struct rr_dnskey *rr)
> -             if (l < e_bytes) /* public key is too short */
> -                     goto done;
> - 
> --            rsa->e = BN_bin2bn(pk, e_bytes, NULL);
> -+            e = BN_bin2bn(pk, e_bytes, NULL);
> -             pk += e_bytes;
> -             l -= e_bytes;
> - 
> --            rsa->n = BN_bin2bn(pk, l, NULL);
> -+            n = BN_bin2bn(pk, l, NULL);
> -+            if (!e || !n)
> -+                    goto done;
> -+
> -+            RSA_set0_key(rsa, n, e, NULL);
> - 
> -             pkey = EVP_PKEY_new();
> -             if (!pkey)
> Index: patches/patch-nsec3checks_c
> ===================================================================
> RCS file: patches/patch-nsec3checks_c
> diff -N patches/patch-nsec3checks_c
> --- patches/patch-nsec3checks_c       11 Mar 2022 19:48:04 -0000      1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,57 +0,0 @@
> -https://github.com/tobez/validns/pull/71
> -
> -Index: nsec3checks.c
> ---- nsec3checks.c.orig
> -+++ nsec3checks.c
> -@@ -28,7 +28,7 @@
> - static struct binary_data name2hash(char *name, struct rr *param)
> - {
> -     struct rr_nsec3param *p = (struct rr_nsec3param *)param;
> --    EVP_MD_CTX ctx;
> -+    EVP_MD_CTX *ctx;
> -     unsigned char md0[EVP_MAX_MD_SIZE];
> -     unsigned char md1[EVP_MAX_MD_SIZE];
> -     unsigned char *md[2];
> -@@ -45,26 +45,31 @@ static struct binary_data name2hash(char *name, struct
> - 
> -     /* XXX Maybe use Init_ex and Final_ex for speed? */
> - 
> --    EVP_MD_CTX_init(&ctx);
> --    if (EVP_DigestInit(&ctx, EVP_sha1()) != 1)
> -+    ctx = EVP_MD_CTX_new();
> -+    if (ctx == NULL)
> -             return r;
> --    digest_size = EVP_MD_CTX_size(&ctx);
> --    EVP_DigestUpdate(&ctx, wire_name.data, wire_name.length);
> --    EVP_DigestUpdate(&ctx, p->salt.data, p->salt.length);
> --    EVP_DigestFinal(&ctx, md[mdi], NULL);
> -+    if (EVP_DigestInit(ctx, EVP_sha1()) != 1)
> -+            goto out;
> -+    digest_size = EVP_MD_CTX_size(ctx);
> -+    EVP_DigestUpdate(ctx, wire_name.data, wire_name.length);
> -+    EVP_DigestUpdate(ctx, p->salt.data, p->salt.length);
> -+    EVP_DigestFinal(ctx, md[mdi], NULL);
> - 
> -     for (i = 0; i < p->iterations; i++) {
> --            if (EVP_DigestInit(&ctx, EVP_sha1()) != 1)
> --                    return r;
> --            EVP_DigestUpdate(&ctx, md[mdi], digest_size);
> -+    if (EVP_DigestInit(ctx, EVP_sha1()) != 1)
> -+            goto out;
> -+
> -+    EVP_DigestUpdate(ctx, md[mdi], digest_size);
> -             mdi = (mdi + 1) % 2;
> --            EVP_DigestUpdate(&ctx, p->salt.data, p->salt.length);
> --            EVP_DigestFinal(&ctx, md[mdi], NULL);
> -+            EVP_DigestUpdate(ctx, p->salt.data, p->salt.length);
> -+            EVP_DigestFinal(ctx, md[mdi], NULL);
> -     }
> - 
> -     r.length = digest_size;
> -     r.data = getmem(digest_size);
> -     memcpy(r.data, md[mdi], digest_size);
> -+out:
> -+    EVP_MD_CTX_free(ctx);
> -     return r;
> - }
> - 
> Index: patches/patch-rrsig_c
> ===================================================================
> RCS file: patches/patch-rrsig_c
> diff -N patches/patch-rrsig_c
> --- patches/patch-rrsig_c     11 Mar 2022 19:48:04 -0000      1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,145 +0,0 @@
> -https://github.com/tobez/validns/pull/71
> -
> -Index: rrsig.c
> ---- rrsig.c.orig
> -+++ rrsig.c
> -@@ -26,7 +26,7 @@
> - struct verification_data
> - {
> -     struct verification_data *next;
> --    EVP_MD_CTX ctx;
> -+    EVP_MD_CTX *ctx;
> -     struct rr_dnskey *key;
> -     struct rr_rrsig *rr;
> -     int ok;
> -@@ -180,7 +180,7 @@ void *verification_thread(void *dummy)
> -             if (d) {
> -                     int r;
> -                     d->next = NULL;
> --                    r = EVP_VerifyFinal(&d->ctx, (unsigned char 
> *)d->rr->signature.data, d->rr->signature.length, d->key->pkey);
> -+                    r = EVP_VerifyFinal(d->ctx, (unsigned char 
> *)d->rr->signature.data, d->rr->signature.length, d->key->pkey);
> -                     if (r == 1) {
> -                             d->ok = 1;
> -                     } else {
> -@@ -232,7 +232,7 @@ static void schedule_verification(struct verification_
> -     } else {
> -             int r;
> -             G.stats.signatures_verified++;
> --            r = EVP_VerifyFinal(&d->ctx, (unsigned char 
> *)d->rr->signature.data, d->rr->signature.length, d->key->pkey);
> -+            r = EVP_VerifyFinal(d->ctx, (unsigned char 
> *)d->rr->signature.data, d->rr->signature.length, d->key->pkey);
> -             if (r == 1) {
> -                     d->ok = 1;
> -             } else {
> -@@ -250,21 +250,22 @@ static int verify_signature(struct verification_data *
> -     struct rr *signed_rr;
> -     int i;
> - 
> --    EVP_MD_CTX_init(&d->ctx);
> -+    if ((d->ctx = EVP_MD_CTX_new()) == NULL)
> -+            return 0;
> -     switch (d->rr->algorithm) {
> -     case ALG_DSA:
> -     case ALG_RSASHA1:
> -     case ALG_DSA_NSEC3_SHA1:
> -     case ALG_RSASHA1_NSEC3_SHA1:
> --            if (EVP_VerifyInit(&d->ctx, EVP_sha1()) != 1)
> -+            if (EVP_VerifyInit(d->ctx, EVP_sha1()) != 1)
> -                     return 0;
> -             break;
> -     case ALG_RSASHA256:
> --            if (EVP_VerifyInit(&d->ctx, EVP_sha256()) != 1)
> -+            if (EVP_VerifyInit(d->ctx, EVP_sha256()) != 1)
> -                     return 0;
> -             break;
> -     case ALG_RSASHA512:
> --            if (EVP_VerifyInit(&d->ctx, EVP_sha512()) != 1)
> -+            if (EVP_VerifyInit(d->ctx, EVP_sha512()) != 1)
> -                     return 0;
> -             break;
> -     default:
> -@@ -274,7 +275,7 @@ static int verify_signature(struct verification_data *
> -     chunk = rrsig_wirerdata_ex(&d->rr->rr, 0);
> -     if (chunk.length < 0)
> -             return 0;
> --    EVP_VerifyUpdate(&d->ctx, chunk.data, chunk.length);
> -+    EVP_VerifyUpdate(d->ctx, chunk.data, chunk.length);
> - 
> -     set = getmem_temp(sizeof(*set) * signed_set->count);
> - 
> -@@ -294,12 +295,12 @@ static int verify_signature(struct verification_data *
> -             chunk = name2wire_name(signed_set->named_rr->name);
> -             if (chunk.length < 0)
> -                     return 0;
> --            EVP_VerifyUpdate(&d->ctx, chunk.data, chunk.length);
> --            b2 = htons(set[i].rr->rdtype);    EVP_VerifyUpdate(&d->ctx, 
> &b2, 2);
> --            b2 = htons(1);  /* class IN */   EVP_VerifyUpdate(&d->ctx, &b2, 
> 2);
> --            b4 = htonl(set[i].rr->ttl);       EVP_VerifyUpdate(&d->ctx, 
> &b4, 4);
> --            b2 = htons(set[i].wired.length); EVP_VerifyUpdate(&d->ctx, &b2, 
> 2);
> --            EVP_VerifyUpdate(&d->ctx, set[i].wired.data, 
> set[i].wired.length);
> -+            EVP_VerifyUpdate(d->ctx, chunk.data, chunk.length);
> -+            b2 = htons(set[i].rr->rdtype);    EVP_VerifyUpdate(d->ctx, &b2, 
> 2);
> -+            b2 = htons(1);  /* class IN */   EVP_VerifyUpdate(d->ctx, &b2, 
> 2);
> -+            b4 = htonl(set[i].rr->ttl);       EVP_VerifyUpdate(d->ctx, &b4, 
> 4);
> -+            b2 = htons(set[i].wired.length); EVP_VerifyUpdate(d->ctx, &b2, 
> 2);
> -+            EVP_VerifyUpdate(d->ctx, set[i].wired.data, 
> set[i].wired.length);
> -     }
> - 
> -     schedule_verification(d);
> -@@ -371,49 +372,12 @@ static void *rrsig_validate(struct rr *rrv)
> -     return rr;
> - }
> - 
> --static pthread_mutex_t *lock_cs;
> --static long *lock_count;
> --
> --static unsigned long pthreads_thread_id(void)
> --{
> --    unsigned long ret;
> --
> --    ret=(unsigned long)pthread_self();
> --    return(ret);
> --}
> --
> --static void pthreads_locking_callback(int mode, int type, char *file, int 
> line)
> --{
> --    if (mode & CRYPTO_LOCK) {
> --            pthread_mutex_lock(&(lock_cs[type]));
> --            lock_count[type]++;
> --    } else {
> --            pthread_mutex_unlock(&(lock_cs[type]));
> --    }
> --}
> --
> - void verify_all_keys(void)
> - {
> -     struct keys_to_verify *k = all_keys_to_verify;
> -     int i;
> -     struct timespec sleep_time;
> - 
> --    ERR_load_crypto_strings();
> --    if (G.opt.n_threads > 1) {
> --            lock_cs = OPENSSL_malloc(CRYPTO_num_locks() * 
> sizeof(pthread_mutex_t));
> --            lock_count = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(long));
> --            for (i = 0; i < CRYPTO_num_locks(); i++) {
> --                    lock_count[i] = 0;
> --                    pthread_mutex_init(&lock_cs[i],NULL);
> --            }
> --
> --            CRYPTO_set_id_callback((unsigned long (*)())pthreads_thread_id);
> --            CRYPTO_set_locking_callback((void 
> (*)())pthreads_locking_callback);
> --
> --            if (pthread_mutex_init(&queue_lock, NULL) != 0)
> --                    croak(1, "pthread_mutex_init");
> --    }
> --
> -     while (k) {
> -             freeall_temp();
> -             for (i = 0; i < k->n_keys; i++) {
> -@@ -440,6 +404,7 @@ void verify_all_keys(void)
> -                             if (k->to_verify[i].openssl_error != 0)
> -                                     e = k->to_verify[i].openssl_error;
> -                     }
> -+                    EVP_MD_CTX_free(k->to_verify[i].ctx);
> -             }
> -             if (!ok) {
> -                     struct named_rr *named_rr;
> Index: pkg/PLIST
> ===================================================================
> RCS file: /cvs/ports/net/validns/pkg/PLIST,v
> diff -u -p -r1.2 PLIST
> --- pkg/PLIST 11 Mar 2022 19:48:04 -0000      1.2
> +++ pkg/PLIST 8 Feb 2026 13:42:33 -0000
> @@ -1,2 +1,7 @@
>  @bin bin/validns
>  @man man/man1/validns.1
> +share/doc/validns/
> +share/doc/validns/CHANGELOG.md
> +share/doc/validns/LICENSE
> +share/doc/validns/README.md
> +share/doc/validns/TECHNICAL.md
> 

Reply via email to