Patch Detail
Show a patch.
GET /api/1.1/patches/3470/?format=api
{ "id": 3470, "url": "https://patchwork.libcamera.org/api/1.1/patches/3470/?format=api", "web_url": "https://patchwork.libcamera.org/patch/3470/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20200415193719.783-1-laurent.pinchart@ideasonboard.com>", "date": "2020-04-15T19:37:18", "name": "[libcamera-devel,1/2] libcamera: Make IPA module signing optional", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "5bbbeb14c8d95e0b1b4d7efc30183ee3a4ebe11d", "submitter": { "id": 2, "url": "https://patchwork.libcamera.org/api/1.1/people/2/?format=api", "name": "Laurent Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/3470/mbox/", "series": [ { "id": 812, "url": "https://patchwork.libcamera.org/api/1.1/series/812/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=812", "date": "2020-04-15T19:37:18", "name": "[libcamera-devel,1/2] libcamera: Make IPA module signing optional", "version": 1, "mbox": "https://patchwork.libcamera.org/series/812/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/3470/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/3470/checks/", "tags": {}, "headers": { "Return-Path": "<laurent.pinchart@ideasonboard.com>", "Received": [ "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BCF4B60406\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 15 Apr 2020 21:37:35 +0200 (CEST)", "from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id D457C2D1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 15 Apr 2020 21:37:34 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"HgRwHVxI\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1586979455;\n\tbh=QK4XVriz6xnGY4c2+G0qQI0L/Xifg+KB2y3dRi9KgKI=;\n\th=From:To:Subject:Date:From;\n\tb=HgRwHVxITGXL+qzABOsGVqNeGd/P2ukwoYqeQKqrtp9mPCNqspTXWDwfqytcEUJnB\n\tLJ3kPYCqj+pV7WLIvosnIn93QH1CGAjdPRDraBKCObnM6b8TEfkUJmeh013GwxG1EB\n\txowPiuRSaD0IY1ZTnI+YR074Z/jgmLOdOsR05DXA=", "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Wed, 15 Apr 2020 22:37:18 +0300", "Message-Id": "<20200415193719.783-1-laurent.pinchart@ideasonboard.com>", "X-Mailer": "git-send-email 2.24.1", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 1/2] libcamera: Make IPA module signing\n\toptional", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "X-List-Received-Date": "Wed, 15 Apr 2020 19:37:36 -0000" }, "content": "The IPA module signing mechanism relies on openssl to generate keys and\nsign the module. If openssl is not found on the system, the build will\nfail. Make the dependency optional by detecting openssl, and skip\ngeneration of signatures if openssl isn't found.\n\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n src/ipa/meson.build | 4 +++-\n src/ipa/rkisp1/meson.build | 14 ++++++++------\n src/ipa/vimc/meson.build | 14 ++++++++------\n src/libcamera/include/ipa_manager.h | 2 ++\n src/libcamera/ipa_manager.cpp | 4 ++++\n src/libcamera/ipa_pub_key.cpp.in | 4 +++-\n src/libcamera/meson.build | 16 +++++++++-------\n src/meson.build | 15 +++++++++++----\n 8 files changed, 48 insertions(+), 25 deletions(-)", "diff": "diff --git a/src/ipa/meson.build b/src/ipa/meson.build\nindex cb4e3ab3388f..96d3ce79ffe9 100644\n--- a/src/ipa/meson.build\n+++ b/src/ipa/meson.build\n@@ -10,7 +10,9 @@ config_h.set('IPA_MODULE_DIR',\n \n subdir('libipa')\n \n-ipa_sign = find_program('ipa-sign.sh')\n+if ipa_sign_module\n+ ipa_sign = find_program('ipa-sign.sh')\n+endif\n \n ipas = ['rkisp1', 'vimc']\n \ndiff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build\nindex 6ccadcfbbe64..247d0429b49c 100644\n--- a/src/ipa/rkisp1/meson.build\n+++ b/src/ipa/rkisp1/meson.build\n@@ -9,9 +9,11 @@ mod = shared_module(ipa_name,\n install : true,\n install_dir : ipa_install_dir)\n \n-custom_target(ipa_name + '.so.sign',\n- input : mod,\n- output : ipa_name + '.so.sign',\n- command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n- install : true,\n- install_dir : ipa_install_dir)\n+if ipa_sign_module\n+ custom_target(ipa_name + '.so.sign',\n+ input : mod,\n+ output : ipa_name + '.so.sign',\n+ command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n+ install : true,\n+ install_dir : ipa_install_dir)\n+endif\ndiff --git a/src/ipa/vimc/meson.build b/src/ipa/vimc/meson.build\nindex 3c932aa7aaad..a354096d8496 100644\n--- a/src/ipa/vimc/meson.build\n+++ b/src/ipa/vimc/meson.build\n@@ -9,9 +9,11 @@ mod = shared_module(ipa_name,\n install : true,\n install_dir : ipa_install_dir)\n \n-custom_target(ipa_name + '.so.sign',\n- input : mod,\n- output : ipa_name + '.so.sign',\n- command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n- install : true,\n- install_dir : ipa_install_dir)\n+if ipa_sign_module\n+ custom_target(ipa_name + '.so.sign',\n+ input : mod,\n+ output : ipa_name + '.so.sign',\n+ command : [ ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@' ],\n+ install : true,\n+ install_dir : ipa_install_dir)\n+endif\ndiff --git a/src/libcamera/include/ipa_manager.h b/src/libcamera/include/ipa_manager.h\nindex 0b5fd2ac1f12..6165efb8b145 100644\n--- a/src/libcamera/include/ipa_manager.h\n+++ b/src/libcamera/include/ipa_manager.h\n@@ -40,8 +40,10 @@ private:\n \n \tbool isSignatureValid(IPAModule *ipa) const;\n \n+#if HAVE_IPA_PUBKEY\n \tstatic const uint8_t publicKeyData_[];\n \tstatic const PubKey pubKey_;\n+#endif\n };\n \n } /* namespace libcamera */\ndiff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp\nindex 7de1404eebdd..50b6792d6cce 100644\n--- a/src/libcamera/ipa_manager.cpp\n+++ b/src/libcamera/ipa_manager.cpp\n@@ -304,6 +304,7 @@ std::unique_ptr<IPAInterface> IPAManager::createIPA(PipelineHandler *pipe,\n \n bool IPAManager::isSignatureValid(IPAModule *ipa) const\n {\n+#if HAVE_IPA_PUBKEY\n \tFile file{ ipa->path() };\n \tif (!file.open(File::ReadOnly))\n \t\treturn false;\n@@ -319,6 +320,9 @@ bool IPAManager::isSignatureValid(IPAModule *ipa) const\n \t\t<< (valid ? \"valid\" : \"not valid\");\n \n \treturn valid;\n+#else\n+\treturn false;\n+#endif\n }\n \n } /* namespace libcamera */\ndiff --git a/src/libcamera/ipa_pub_key.cpp.in b/src/libcamera/ipa_pub_key.cpp.in\nindex e1fe287c160e..7ffc1e24d67b 100644\n--- a/src/libcamera/ipa_pub_key.cpp.in\n+++ b/src/libcamera/ipa_pub_key.cpp.in\n@@ -2,7 +2,7 @@\n /*\n * Copyright (C) 2020, Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n *\n- * ipa_key.cpp - IPA module signing public key\n+ * ipa_pub_key.cpp - IPA module signing public key\n *\n * This file is auto-generated. Do not edit.\n */\n@@ -11,10 +11,12 @@\n \n namespace libcamera {\n \n+#if HAVE_IPA_PUBKEY\n const uint8_t IPAManager::publicKeyData_[] = {\n \t${ipa_key}\n };\n \n const PubKey IPAManager::pubKey_{ { IPAManager::publicKeyData_ } };\n+#endif\n \n } /* namespace libcamera */\ndiff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\nindex c502450c4b2d..dcd2fb4900e6 100644\n--- a/src/libcamera/meson.build\n+++ b/src/libcamera/meson.build\n@@ -101,13 +101,15 @@ version_cpp = vcs_tag(command : [gen_version, meson.build_root()],\n \n libcamera_sources += version_cpp\n \n-gen_ipa_pub_key = files('gen-ipa-pub-key.py')\n-ipa_pub_key_cpp = custom_target('ipa_pub_key_cpp',\n- input : [ ipa_priv_key, 'ipa_pub_key.cpp.in' ],\n- output : 'ipa_pub_key.cpp',\n- command : [ gen_ipa_pub_key, '@INPUT@', '@OUTPUT@' ])\n-\n-libcamera_sources += ipa_pub_key_cpp\n+if ipa_sign_module\n+ gen_ipa_pub_key = files('gen-ipa-pub-key.py')\n+ ipa_pub_key_cpp = custom_target('ipa_pub_key_cpp',\n+ input : [ ipa_priv_key, 'ipa_pub_key.cpp.in' ],\n+ output : 'ipa_pub_key.cpp',\n+ command : [ gen_ipa_pub_key, '@INPUT@', '@OUTPUT@' ])\n+\n+ libcamera_sources += ipa_pub_key_cpp\n+endif\n \n libcamera_deps = [\n libatomic,\ndiff --git a/src/meson.build b/src/meson.build\nindex dc0e0c82b900..296682758613 100644\n--- a/src/meson.build\n+++ b/src/meson.build\n@@ -2,10 +2,17 @@ if get_option('android')\n subdir('android')\n endif\n \n-ipa_gen_priv_key = find_program('ipa/gen-ipa-priv-key.sh')\n-ipa_priv_key = custom_target('ipa-priv-key',\n- output : [ 'ipa-priv-key.pem' ],\n- command : [ ipa_gen_priv_key, '@OUTPUT@' ])\n+openssl = find_program('openssl', required : false)\n+if openssl.found()\n+ ipa_gen_priv_key = find_program('ipa/gen-ipa-priv-key.sh')\n+ ipa_priv_key = custom_target('ipa-priv-key',\n+ output : [ 'ipa-priv-key.pem' ],\n+ command : [ ipa_gen_priv_key, '@OUTPUT@' ])\n+ config_h.set('HAVE_IPA_PUBKEY', 1)\n+ ipa_sign_module = true\n+else\n+ ipa_sign_module = false\n+endif\n \n subdir('libcamera')\n subdir('ipa')\n", "prefixes": [ "libcamera-devel", "1/2" ] }