From c59d2ae29da08e45d6de61ca059f66a4c8b67fc5 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 23 Sep 2021 16:22:04 +0200 Subject: [PATCH] Add yubikey-personalization --- ...1-fix-boolean-value-with-json-c-0.14.patch | 83 +++++++++++++++++++ mingw-w64-yubikey-personalization/PKGBUILD | 63 ++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 mingw-w64-yubikey-personalization/0001-fix-boolean-value-with-json-c-0.14.patch create mode 100644 mingw-w64-yubikey-personalization/PKGBUILD diff --git a/mingw-w64-yubikey-personalization/0001-fix-boolean-value-with-json-c-0.14.patch b/mingw-w64-yubikey-personalization/0001-fix-boolean-value-with-json-c-0.14.patch new file mode 100644 index 0000000000..8a57ea3184 --- /dev/null +++ b/mingw-w64-yubikey-personalization/0001-fix-boolean-value-with-json-c-0.14.patch @@ -0,0 +1,83 @@ +From 0aa2e2cae2e1777863993a10c809bb50f4cde7f8 Mon Sep 17 00:00:00 2001 +From: Christian Hesse +Date: Sat, 25 Apr 2020 20:55:28 +0200 +Subject: [PATCH 1/1] fix boolean value with json-c 0.14 + +Upstream removed the TRUE and FALSE defines in commit +0992aac61f8b087efd7094e9ac2b84fa9c040fcd. +--- + ykpers-json.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/ykpers-json.c b/ykpers-json.c +index a62e907..15ad380 100644 +--- a/ykpers-json.c ++++ b/ykpers-json.c +@@ -40,7 +40,7 @@ + #define yk_json_object_object_get(obj, key, value) json_object_object_get_ex(obj, key, &value) + #else + typedef int json_bool; +-#define yk_json_object_object_get(obj, key, value) (value = json_object_object_get(obj, key)) == NULL ? (json_bool)FALSE : (json_bool)TRUE ++#define yk_json_object_object_get(obj, key, value) (value = json_object_object_get(obj, key)) == NULL ? 0 : 1 + #endif + + static void set_json_value(struct map_st *p, int mode, json_object *options, YKP_CONFIG *cfg) { +@@ -50,7 +50,7 @@ static void set_json_value(struct map_st *p, int mode, json_object *options, YKP + if(p->mode && (mode & p->mode) == mode) { + json_object *joption; + json_bool ret = yk_json_object_object_get(options, p->json_text, joption); +- if(ret == TRUE && json_object_get_type(joption) == json_type_boolean) { ++ if(ret == 1 && json_object_get_type(joption) == json_type_boolean) { + int value = json_object_get_boolean(joption); + if(value == 1) { + p->setter(cfg, true); +@@ -230,20 +230,20 @@ int _ykp_json_import_cfg(YKP_CONFIG *cfg, const char *json, size_t len) { + ykp_errno = YKP_EINVAL; + goto out; + } +- if(yk_json_object_object_get(jobj, "yubiProdConfig", yprod_json) == FALSE) { ++ if(yk_json_object_object_get(jobj, "yubiProdConfig", yprod_json) == 0) { + ykp_errno = YKP_EINVAL; + goto out; + } +- if(yk_json_object_object_get(yprod_json, "mode", jmode) == FALSE) { ++ if(yk_json_object_object_get(yprod_json, "mode", jmode) == 0) { + ykp_errno = YKP_EINVAL; + goto out; + } +- if(yk_json_object_object_get(yprod_json, "options", options) == FALSE) { ++ if(yk_json_object_object_get(yprod_json, "options", options) == 0) { + ykp_errno = YKP_EINVAL; + goto out; + } + +- if(yk_json_object_object_get(yprod_json, "targetConfig", jtarget) == TRUE) { ++ if(yk_json_object_object_get(yprod_json, "targetConfig", jtarget) == 1) { + int target_config = json_object_get_int(jtarget); + int command; + if(target_config == 1) { +@@ -275,13 +275,13 @@ int _ykp_json_import_cfg(YKP_CONFIG *cfg, const char *json, size_t len) { + if(mode == MODE_OATH_HOTP) { + json_object *jdigits, *jrandom; + ykp_set_tktflag_OATH_HOTP(cfg, true); +- if(yk_json_object_object_get(options, "oathDigits", jdigits) == TRUE) { ++ if(yk_json_object_object_get(options, "oathDigits", jdigits) == 1) { + int digits = json_object_get_int(jdigits); + if(digits == 8) { + ykp_set_cfgflag_OATH_HOTP8(cfg, true); + } + } +- if(yk_json_object_object_get(options, "randomSeed", jrandom) == TRUE) { ++ if(yk_json_object_object_get(options, "randomSeed", jrandom) == 1) { + int random = json_object_get_boolean(jrandom); + int seed = 0; + if(random == 1) { +@@ -290,7 +290,7 @@ int _ykp_json_import_cfg(YKP_CONFIG *cfg, const char *json, size_t len) { + goto out; + } else { + json_object *jseed; +- if(yk_json_object_object_get(options, "fixedSeedvalue", jseed) == TRUE) { ++ if(yk_json_object_object_get(options, "fixedSeedvalue", jseed) == 1) { + seed = json_object_get_int(jseed); + } + } diff --git a/mingw-w64-yubikey-personalization/PKGBUILD b/mingw-w64-yubikey-personalization/PKGBUILD new file mode 100644 index 0000000000..82d21a0226 --- /dev/null +++ b/mingw-w64-yubikey-personalization/PKGBUILD @@ -0,0 +1,63 @@ +_realname=yubikey-personalization +_shortname=ykpers +pkgbase=mingw-w64-${_realname} +pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") +pkgver=1.20.0 +pkgrel=1 +pkgdesc="Yubico YubiKey Personalization library and tool (mingw-w64)" +arch=('any') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +url='https://github.com/Yubico/yubikey-personalization' +license=('BSD') +depends=( + "${MINGW_PACKAGE_PREFIX}-libusb" + "${MINGW_PACKAGE_PREFIX}-json-c" + "${MINGW_PACKAGE_PREFIX}-yubico-c" +) +validpgpkeys=('0A3B0262BCA1705307D5FF06BCA00FD4B2168C0A') # Klas Lindfors +source=("https://developers.yubico.com/${_realname}/Releases/${_shortname}-${pkgver}.tar.gz"{,.sig} + '0001-fix-boolean-value-with-json-c-0.14.patch') +sha256sums=('0ec84d0ea862f45a7d85a1a3afe5e60b8da42df211bb7d27a50f486e31a79b93' + 'SKIP' + 'f9b434e9570ce7d0192182aab979f767238b704f12645546e567db841bb7b5e2') + +prepare() { + cd ${srcdir}/${_shortname}-${pkgver} + + patch -p1 -i ${srcdir}/0001-fix-boolean-value-with-json-c-0.14.patch + + autoreconf -vfi +} + +build() { + cd "${srcdir}"/${_shortname}-${pkgver} + [[ -d "${srcdir}"/build-${CARCH} ]] && rm -rf "${srcdir}"/build-${CARCH} + mkdir -p "${srcdir}"/build-${CARCH} && cd "${srcdir}"/build-${CARCH} + + export lt_cv_deplibs_check_method='pass_all' + CFLAGS+=" -fcommon" + + ../${_shortname}-${pkgver}/configure \ + --prefix=${MINGW_PREFIX} \ + --build=${MINGW_CHOST} \ + --host=${MINGW_CHOST} \ + --target=${MINGW_CHOST} \ + --enable-static \ + --enable-shared + + make +} + +check() { + cd "${srcdir}"/build-${CARCH} + + make check +} + +package() { + cd "${srcdir}"/build-${CARCH} + + make install DESTDIR="${pkgdir}" + + install -Dm644 ${srcdir}/${_shortname}-${pkgver}/COPYING ${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING +}