git: 2177ea1bb740 - main - security/libhydrogen: Add libhydrogen 0.0.0.g20240509

From: Po-Chuan Hsieh <sunpoet_at_FreeBSD.org>
Date: Sun, 15 Sep 2024 20:15:35 UTC
The branch main has been updated by sunpoet:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2177ea1bb740c4021d20bb4c2c5bc2dee2581cdb

commit 2177ea1bb740c4021d20bb4c2c5bc2dee2581cdb
Author:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2024-09-15 19:08:08 +0000
Commit:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2024-09-15 20:09:33 +0000

    security/libhydrogen: Add libhydrogen 0.0.0.g20240509
    
    The Hydrogen library is a small, easy-to-use, hard-to-misuse cryptographic
    library.
    
    Features:
    - Consistent high-level API, inspired by libsodium. Instead of low-level
      primitives, it exposes simple functions to solve common problems that
      cryptography can solve.
    - 100% built using just two cryptographic building blocks: the Curve25519
      elliptic curve, and the Gimli permutation.
    - Small and easy to audit. Implemented as one tiny file for every set of
      operation, and adding a single .c file to your project is all it takes to use
      libhydrogen in your project.
    - The whole code is released under a single, very liberal license (ISC).
    - Zero dynamic memory allocations and low stack requirements (median: 32 bytes,
      max: 128 bytes). This makes it usable in constrained environments such as
      microcontrollers.
    - Portable: written in standard C99. Supports Linux, *BSD, MacOS, Windows, and
      the Arduino IDE out of the box.
    - Can generate cryptographically-secure random numbers, even on Arduino boards.
    - Attempts to mitigate the implications of accidental misuse, even on systems
      with an unreliable PRG and/or no clock.
---
 security/Makefile                               |  1 +
 security/libhydrogen/Makefile                   | 18 +++++++++++++
 security/libhydrogen/distinfo                   |  3 +++
 security/libhydrogen/files/patch-CMakeLists.txt | 36 +++++++++++++++++++++++++
 security/libhydrogen/pkg-descr                  | 21 +++++++++++++++
 security/libhydrogen/pkg-plist                  |  6 +++++
 6 files changed, 85 insertions(+)

diff --git a/security/Makefile b/security/Makefile
index 888955587526..ccd72e742840 100644
--- a/security/Makefile
+++ b/security/Makefile
@@ -295,6 +295,7 @@
     SUBDIR += libgpg-error
     SUBDIR += libgsasl
     SUBDIR += libhijack
+    SUBDIR += libhydrogen
     SUBDIR += libident
     SUBDIR += libkleo
     SUBDIR += libkpass
diff --git a/security/libhydrogen/Makefile b/security/libhydrogen/Makefile
new file mode 100644
index 000000000000..0a4b7110e4b3
--- /dev/null
+++ b/security/libhydrogen/Makefile
@@ -0,0 +1,18 @@
+PORTNAME=	libhydrogen
+PORTVERSION=	0.0.0.g20240509
+CATEGORIES=	security
+
+MAINTAINER=	sunpoet@FreeBSD.org
+COMMENT=	Lightweight, secure, easy-to-use crypto library for constrained environments
+WWW=		https://github.com/jedisct1/libhydrogen
+
+LICENSE=	ISCL
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+USES=		cmake
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	jedisct1
+GH_TAGNAME=	c18e510
+
+.include <bsd.port.mk>
diff --git a/security/libhydrogen/distinfo b/security/libhydrogen/distinfo
new file mode 100644
index 000000000000..3db51e90e1f1
--- /dev/null
+++ b/security/libhydrogen/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1726080915
+SHA256 (jedisct1-libhydrogen-0.0.0.g20240509-c18e510_GH0.tar.gz) = 44e155d56a45cea83e7d838ad2b0c7757d83bcddff3d80663c510d77e365fc17
+SIZE (jedisct1-libhydrogen-0.0.0.g20240509-c18e510_GH0.tar.gz) = 45819
diff --git a/security/libhydrogen/files/patch-CMakeLists.txt b/security/libhydrogen/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..ea713881a2a4
--- /dev/null
+++ b/security/libhydrogen/files/patch-CMakeLists.txt
@@ -0,0 +1,36 @@
+--- CMakeLists.txt.orig	2024-05-09 19:42:48 UTC
++++ CMakeLists.txt
+@@ -89,8 +89,9 @@ set(compile_options
+ 
+ # Main library
+ 
+-add_library("${PROJECT_NAME}")
++add_library("${PROJECT_NAME}" SHARED)
+ add_library("${PROJECT_NAME}::${PROJECT_NAME}" ALIAS "${PROJECT_NAME}")
++add_library("${PROJECT_NAME}_static" STATIC)
+ 
+ target_sources("${PROJECT_NAME}" PRIVATE ${source_files})
+ 
+@@ -100,11 +101,21 @@ target_compile_options("${PROJECT_NAME}" PRIVATE ${com
+ 
+ target_compile_options("${PROJECT_NAME}" PRIVATE ${compile_options})
+ 
++target_sources("${PROJECT_NAME}_static" PRIVATE ${source_files})
++
++target_include_directories("${PROJECT_NAME}_static"
++                           PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
++                                  $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
++
++target_compile_options("${PROJECT_NAME}_static" PRIVATE ${compile_options})
++
++set_target_properties("${PROJECT_NAME}_static" PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
++
+ # Installation
+ 
+ set(targets_export_name "${PROJECT_NAME}-targets")
+ 
+-install(TARGETS "${PROJECT_NAME}"
++install(TARGETS "${PROJECT_NAME}" "${PROJECT_NAME}_static"
+         EXPORT "${targets_export_name}"
+         LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+         ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
diff --git a/security/libhydrogen/pkg-descr b/security/libhydrogen/pkg-descr
new file mode 100644
index 000000000000..65f344c1b1a6
--- /dev/null
+++ b/security/libhydrogen/pkg-descr
@@ -0,0 +1,21 @@
+The Hydrogen library is a small, easy-to-use, hard-to-misuse cryptographic
+library.
+
+Features:
+- Consistent high-level API, inspired by libsodium. Instead of low-level
+  primitives, it exposes simple functions to solve common problems that
+  cryptography can solve.
+- 100% built using just two cryptographic building blocks: the Curve25519
+  elliptic curve, and the Gimli permutation.
+- Small and easy to audit. Implemented as one tiny file for every set of
+  operation, and adding a single .c file to your project is all it takes to use
+  libhydrogen in your project.
+- The whole code is released under a single, very liberal license (ISC).
+- Zero dynamic memory allocations and low stack requirements (median: 32 bytes,
+  max: 128 bytes). This makes it usable in constrained environments such as
+  microcontrollers.
+- Portable: written in standard C99. Supports Linux, *BSD, MacOS, Windows, and
+  the Arduino IDE out of the box.
+- Can generate cryptographically-secure random numbers, even on Arduino boards.
+- Attempts to mitigate the implications of accidental misuse, even on systems
+  with an unreliable PRG and/or no clock.
diff --git a/security/libhydrogen/pkg-plist b/security/libhydrogen/pkg-plist
new file mode 100644
index 000000000000..6c6eab7a85ee
--- /dev/null
+++ b/security/libhydrogen/pkg-plist
@@ -0,0 +1,6 @@
+include/hydrogen.h
+lib/libhydrogen.a
+lib/libhydrogen.so
+share/cmake/hydrogen/hydrogen-config.cmake
+share/cmake/hydrogen/hydrogen-targets-%%CMAKE_BUILD_TYPE%%.cmake
+share/cmake/hydrogen/hydrogen-targets.cmake