<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/18daccffb99835a479579fefec63fb0a360c870f">https://github.com/macports/macports-ports/commit/18daccffb99835a479579fefec63fb0a360c870f</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 18daccffb99 opensc: update to 0.23.0
</span>18daccffb99 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 18daccffb99835a479579fefec63fb0a360c870f
</span>Author: Yuriy Lukyanets <df@dflab.net>
AuthorDate: Sat Sep 9 15:12:47 2023 +0200

<span style='display:block; white-space:pre;color:#404040;'>    opensc: update to 0.23.0
</span>---
 security/opensc/Portfile                       |  10 +-
 security/opensc/files/patch-pgp-and-tools.diff | 133 +++++++++++++++++++++++++
 security/opensc/files/patch-winscard.diff      |  14 ---
 3 files changed, 138 insertions(+), 19 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/opensc/Portfile b/security/opensc/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index ae42f5245ad..6af8d9d4066 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/security/opensc/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/security/opensc/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -6,12 +6,12 @@ PortGroup               openssl 1.0
</span> PortGroup               compiler_blacklist_versions 1.0
 
 name                    opensc
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup            OpenSC OpenSC 0.22.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup            OpenSC OpenSC 0.23.0
</span> revision                0
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums               rmd160  7796feadb78c57457eb97d9409be2fac36bf61e9 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        sha256  cbe0f660773458ca09b5167addca1f00c65cad424a906749f68eb34ceb6dcd0d \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        size    1790141
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums               rmd160  17ca6962955588a7a6c8aec0c20af7f2a93eb25c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  80b9b1c84bb740b0a69109744dbbe0c1f49ab918bbd9500c7f898167b8847fb9 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        size    1965242
</span> 
 categories              security
 license                 LGPL-2.1
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -46,7 +46,7 @@ depends_build           port:docbook-xsl-nons \
</span> 
 default_variants        +readline
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles              patch-winscard.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles              patch-winscard.diff patch-pgp-and-tools.diff
</span> patch.pre_args          -p1
 
 # https://trac.macports.org/ticket/65709
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/opensc/files/patch-pgp-and-tools.diff b/security/opensc/files/patch-pgp-and-tools.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..a86c22679e6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/security/opensc/files/patch-pgp-and-tools.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,133 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Changes are taken from OpenSC master branch, most probably this patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# will not be needed after next release.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/libopensc/card-openpgp.c b/src/libopensc/card-openpgp.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index fad32f0c..e4e6cc4d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/libopensc/card-openpgp.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/libopensc/card-openpgp.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -129,7 +129,7 @@ static pgp_ec_curves_t ec_curves_gnuk[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int                pgp_get_card_features(sc_card_t *card);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int                pgp_finish(sc_card_t *card);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static void               pgp_iterate_blobs(pgp_blob_t *, void (*func)());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static void               pgp_free_blobs(pgp_blob_t *);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int                pgp_get_blob(sc_card_t *card, pgp_blob_t *blob,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            unsigned int id, pgp_blob_t **ret);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -947,7 +947,7 @@ pgp_finish(sc_card_t *card)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           if (priv != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   /* delete fake file hierarchy */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                  pgp_iterate_blobs(priv->mf, pgp_free_blob);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  pgp_free_blobs(priv->mf);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   /* delete private data */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   free(priv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1147,10 +1147,10 @@ pgp_free_blob(pgp_blob_t *blob)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * Internal: iterate through the blob tree, calling a function for each blob.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Internal: iterate through the blob tree, calling pgp_free_blob for each blob.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-pgp_iterate_blobs(pgp_blob_t *blob, void (*func)())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++pgp_free_blobs(pgp_blob_t *blob)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (blob) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           pgp_blob_t *child = blob->files;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1158,10 +1158,10 @@ pgp_iterate_blobs(pgp_blob_t *blob, void (*func)())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           while (child != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   pgp_blob_t *next = child->next;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                  pgp_iterate_blobs(child, func);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  pgp_free_blobs(child);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   child = next;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          func(blob);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          pgp_free_blob(blob);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/tools/cardos-tool.c b/src/tools/cardos-tool.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4e6dd554..26959abb 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/tools/cardos-tool.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/tools/cardos-tool.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1183,6 +1183,9 @@ int main(int argc, char *argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (action_count == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        util_print_usage_and_die(app_name, options, option_help, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /* create sc_context_t object */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   memset(&ctx_param, 0, sizeof(ctx_param));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ctx_param.ver      = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/tools/netkey-tool.c b/src/tools/netkey-tool.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f2904ad1..ad82b282 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/tools/netkey-tool.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/tools/netkey-tool.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -535,6 +535,7 @@ int main(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           fprintf(stderr,"Establish-Context failed: %s\n", sc_strerror(r));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       ctx->debug = debug;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if(ctx->debug>0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           printf("Context for application \"%s\" created, Debug=%d\n", ctx->app_name, ctx->debug);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/tools/pkcs11-tool.c b/src/tools/pkcs11-tool.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index aae205fe..8402fe39 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/tools/pkcs11-tool.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/tools/pkcs11-tool.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -7315,41 +7315,42 @@ static int test_random(CK_SESSION_HANDLE session)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           printf("  seeding (C_SeedRandom) not supported\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else if (rv != CKR_OK) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           p11_perror("C_SeedRandom", rv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               errors++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   rv = p11->C_GenerateRandom(session, buf1, 10);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (rv != CKR_OK) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           p11_perror("C_GenerateRandom", rv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               errors++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   rv = p11->C_GenerateRandom(session, buf1, 100);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (rv != CKR_OK) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           p11_perror("C_GenerateRandom(buf1,100)", rv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               errors++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   rv = p11->C_GenerateRandom(session, buf1, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (rv != CKR_OK) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           p11_perror("C_GenerateRandom(buf1,0)", rv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               errors++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   rv = p11->C_GenerateRandom(session, buf2, 100);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (rv != CKR_OK) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           p11_perror("C_GenerateRandom(buf2,100)", rv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               errors++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (memcmp(buf1, buf2, 100) == 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           printf("  ERR: C_GenerateRandom returned twice the same value!!!\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          errors++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               errors++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  printf("  seems to be OK\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (!errors)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          printf("  seems to be OK\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return errors;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int test_card_detection(int wait_for_event)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/security/opensc/files/patch-winscard.diff b/security/opensc/files/patch-winscard.diff
</span><span style='display:block; white-space:pre;color:#808080;'>index 54dff4d10b3..5360b0bb786 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/security/opensc/files/patch-winscard.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/security/opensc/files/patch-winscard.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -21,17 +21,3 @@ diff --git a/src/libopensc/internal-winscard.h b/src/libopensc/internal-winscard
</span>  #include <winscard.h>
  #ifdef __APPLE__
  #include <wintypes.h>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/libopensc/reader-pcsc.c b/src/libopensc/reader-pcsc.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/src/libopensc/reader-pcsc.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/src/libopensc/reader-pcsc.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -182,8 +182,10 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return SC_ERROR_CARD_UNRESPONSIVE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   case SCARD_E_SHARING_VIOLATION:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return SC_ERROR_READER_LOCKED;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef SCARD_E_NO_READERS_AVAILABLE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   case SCARD_E_NO_READERS_AVAILABLE:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return SC_ERROR_NO_READERS_FOUND;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   case SCARD_E_UNKNOWN_READER:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return SC_ERROR_READER_DETACHED;
</span></pre><pre style='margin:0'>

</pre>