From patchwork Tue Oct 10 18:38:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matt Wood X-Patchwork-Id: 1846038 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20230601 header.b=Xul3t5Zv; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=eDYM2kqL; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2607:f8b0:4864:20::f3e; helo=mail-qv1-xf3e.google.com; envelope-from=swupdate+bncbccpragruucbbinus2uqmgqe4mnwxgq@googlegroups.com; receiver=patchwork.ozlabs.org) Received: from mail-qv1-xf3e.google.com (mail-qv1-xf3e.google.com [IPv6:2607:f8b0:4864:20::f3e]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4S4l624MBFz1ypX for ; Wed, 11 Oct 2023 05:38:33 +1100 (AEDT) Received: by mail-qv1-xf3e.google.com with SMTP id 6a1803df08f44-6557c921df1sf59403186d6.2 for ; Tue, 10 Oct 2023 11:38:32 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1696963106; cv=pass; d=google.com; s=arc-20160816; b=ShepSuXwbqm/B/ndBK+KLm7y8tMpf3GByyyA1cCVLB51q3xe5QnXZ9hAfD5A6IaE7Z svsjSScRkNATXodGtuTY4ESzcQwcmAReoICqF54nYBNI1GrsbL75Kx0fMre6Jo+ngfdR o4nn2eQbMAHLdEAvApbF31j9AAtqJKtIvKTX/hEWB/RPOa2AmIj1RXzxIzjNIUyGr22e pH31BQa52IqsA3EzH/MnQwwjmEMNJyJIsDbombEQeHH8539Wq3VUzJ51MnsvKl/C1fCC NjZg4utMGRkIiylsk/cOI5bVDhBqBjTbDsAAxGPdgHCAe2twKNzMKVtyCH+XzFU3tdag KBlg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:to:subject:from:content-language :user-agent:mime-version:date:message-id:sender:dkim-signature :dkim-signature; bh=xWuIpSkmWA+g35y7c0xOBBYNr0ClO4rT8P80WaJf34Q=; fh=nvZsCFpxgpf+fsVXzjnWA8g1K3V/kNbRAKogjNDW4HY=; b=BV3+Wa4lMMnQuy+aDRbU9IrsyEM6a64fTS85AEFYj3k5eOFCMF5dee1umkkiZv/rYD 74ZUJccjmiH25YcyjI3MRPm0wB0TQJvSuhpICWlUSmqPooqwV4bqvQAdEZLXXPOrbKRd DG+7j3jLu+BVhk4QoM7VYlvSO0HT2VFcXm+6vkkUlTLdPcNZkPmWPReqig+IiAd+0R4U TOtAHdk0RbPWzPW9MESIWcum5InX6lJk+P1IPI5O2duPfIvVoh/M4flQvKe2RxLkghpa FEZ8sbchlMKQDmuhqEtq+QupRZoNkQ2TqBpSCRVBf5+xomP7ekB1DiiGX101fxj4NWiP i2vQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=GG4hIJuQ; spf=pass (google.com: domain of mattwood2000@gmail.com designates 2607:f8b0:4864:20::82d as permitted sender) smtp.mailfrom=mattwood2000@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1696963106; x=1697567906; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:to:subject:from:content-language:user-agent :mime-version:date:message-id:sender:from:to:cc:subject:date :message-id:reply-to; bh=xWuIpSkmWA+g35y7c0xOBBYNr0ClO4rT8P80WaJf34Q=; b=Xul3t5ZvPRUdHRWU5Z8I/Hv4PQGej3XywH6+hJKkF3cr5pJchAwIknhoWySHvIihqb Zq+cf48NEddhjjFAwVpdgdGCfzjX2O/4mdiyw0NVxHE8/fJlJ/uU10xCA+04DsXp4R+K KhXDHVfBqGByE36oROz7Z4uEqS93O+uUd1CxH9/8qA1atZ6oMNOknS3Q6Wzo0bo73elL PrZZTiDwY5FnaW/lR7ZevXRHuC/OQLrDCTL6MPfVZ343l2LhtLHFw0qhZeJy/pNZTENI UQhr7mUBVtQ9U1xSfr85zuWVOwtGntmGqvZf4cjGZg242cRpOvf96n8mLXkQE7tHTb9z A3Tg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696963106; x=1697567906; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:to:subject:from:content-language:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=xWuIpSkmWA+g35y7c0xOBBYNr0ClO4rT8P80WaJf34Q=; b=eDYM2kqLr9vM8dziubWO+MxkaIbChPahlqMU3+2ZmqooIHmeOnsIaxP/Eo5qY5oKOI odBhte7AJ2Tf7cJGLPBWn2e/8AjLsVvfiAgXSLZ44j/JwExDTnh3sQ7kpZ1+7LWsN/93 2CESNLUuVSWFtuUc5B8PYACH+1mVw/7BehyEcZ35OdRsW8qXO7w1S6/VFn9sTnqfz1Ls hUO+q3Pj04CdEL6uQxozAzLov8prW7TJBlFU3UkGeoM98J6HyLfTYWLJDcRuDsDL9d5B +cALbS0H0+SeCV9rUnSmVVXUH0ZBquq1FmQ6lgfpnZvGVrxTuinz1l/FkqCy6xGAIky/ lZVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696963106; x=1697567906; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:to:subject:from :content-language:user-agent:mime-version:date:message-id :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to; bh=xWuIpSkmWA+g35y7c0xOBBYNr0ClO4rT8P80WaJf34Q=; b=sQky7fpv70hJbLW3F6Et452BUC/V9+04xyVh96URzA3RQt05fkD7MK29Wu0ZAd3sUw ERmLztWykJqfi02nmr85FTxSjIf9HmDhtbnylsuXHie+/YvDhZu4df3QOIOsnMmK2un1 eRxquBKjrW1XWOQcTHNcHUbkpDQpJhwZMKLD2JGdM7Tj+8hPbTEbNjsxtcCLbGiMO6ms Xe31LLMAL0lpHc5GQKjfOifDh+FOYX+mpDaIZvRf1zfB8IyVYKLE145EwPFxMevz8Gmp PQIHh1/rtfzvxD+5C9f/2Lev0Y0jrYsTzna/2WfzuJAfOBxT4ALUmJlYRw10PUSMVGmV ++1g== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOJu0YzgMkJIEsZKjTvj9nW2wHfRWg4b1hr4WDk6NQ2BEOVVEMTbZOrA aQWJ68/Gv6qjDdZG9OJySBI= X-Google-Smtp-Source: AGHT+IH193+IkRIquAcuEND6ZLTc+B8BTwWjmA1bf0USkLw6GofrEyGCNbl5bivaJS++Itz13wONxQ== X-Received: by 2002:a05:6214:301b:b0:65b:1594:264e with SMTP id ke27-20020a056214301b00b0065b1594264emr20325831qvb.51.1696963105920; Tue, 10 Oct 2023 11:38:25 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a0c:a619:0:b0:65d:b9b:f30e with SMTP id s25-20020a0ca619000000b0065d0b9bf30els4396471qva.0.-pod-prod-03-us; Tue, 10 Oct 2023 11:38:25 -0700 (PDT) X-Received: by 2002:a05:6102:2cd:b0:452:77f1:f1e8 with SMTP id h13-20020a05610202cd00b0045277f1f1e8mr14106407vsh.33.1696963104885; Tue, 10 Oct 2023 11:38:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696963104; cv=none; d=google.com; s=arc-20160816; b=VzeXd43QOF+KRfx3CK8NaZUtc8xkK077sgNTIbPoTUXl1Mo04tA5OR4GAYXZ9xz0WJ WAtOJ4Jh12Njno0976DXz1qg6rs7Rr8+dPXsiAl+FutuYUPa536eOvexDqzOLt1kB/tx z/fX9AaIOCgUzK6oYRhgnXxpa6oh6zBqZdracoDekk8Bm02ukh47Il3d44Xu8dRo0AV8 99uYnIAiKhchXNzyECauN6365qzGWPPySxFmGbkpOUJiq4orj6AherMI+YTnU4Kdl2Il dGersujB7L6OadKdwKOgv5u+PNfNLrzEtxUb90VI5JtLt7y92WJxHGqcERriMSFnARdK AAqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:to:subject:from:content-language :user-agent:mime-version:date:message-id:dkim-signature; bh=DRkZ7TWZ7IC+0KDY8siDh5zH0//4W6B6IX4WeJKfH8E=; fh=nvZsCFpxgpf+fsVXzjnWA8g1K3V/kNbRAKogjNDW4HY=; b=sJWGODz+b6f5T/OdtKJsnHnbdckjPm8Pbu3ha3DI56MU3kZrzWr4vfDPIvqS2HKoGx SfkvLj2fw4cmOQXpNGjvCixeeNP16HBvZ5ZCnKiGX93tpV3kyNAT03tksuIIjmZPS+BL CiUPq/cO6S6XQdPp085FRCskbiAEG2oKvVqa3z8Auqxs4J5MYFLHjxTXXYddHe36FdQN 7alHiXooZ8g0g3pifylbYA1iDuW+Nlxmq47+2gso5RkxjoYED6It/02ypLSr/o2foqDc JHfa0tp1RK6pC1bpfjbglfRNFZ/1zoLiOHh4y2UonqDUn9qcu/k+P0+oBsdkvz/CuwPt HvCA== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=GG4hIJuQ; spf=pass (google.com: domain of mattwood2000@gmail.com designates 2607:f8b0:4864:20::82d as permitted sender) smtp.mailfrom=mattwood2000@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from mail-qt1-x82d.google.com (mail-qt1-x82d.google.com. [2607:f8b0:4864:20::82d]) by gmr-mx.google.com with ESMTPS id bm9-20020a056102510900b004508d6fcf6csi1758373vsb.1.2023.10.10.11.38.24 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 10 Oct 2023 11:38:24 -0700 (PDT) Received-SPF: pass (google.com: domain of mattwood2000@gmail.com designates 2607:f8b0:4864:20::82d as permitted sender) client-ip=2607:f8b0:4864:20::82d; Received: by mail-qt1-x82d.google.com with SMTP id d75a77b69052e-418148607c2so33391881cf.3 for ; Tue, 10 Oct 2023 11:38:24 -0700 (PDT) X-Received: by 2002:ac8:5f90:0:b0:418:3c05:b52b with SMTP id j16-20020ac85f90000000b004183c05b52bmr19652902qta.59.1696963104248; Tue, 10 Oct 2023 11:38:24 -0700 (PDT) Received: from [192.168.1.225] (pool-71-184-130-35.bstnma.fios.verizon.net. [71.184.130.35]) by smtp.gmail.com with ESMTPSA id l17-20020ac81491000000b004181d77e08fsm4688908qtj.85.2023.10.10.11.38.23 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 10 Oct 2023 11:38:23 -0700 (PDT) Message-ID: <3b13b79a-3112-40bb-a44c-1eb588f06cff@gmail.com> Date: Tue, 10 Oct 2023 14:38:23 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: Matt Wood Subject: [swupdate] [PATCH] Add delta download over ssl To: swupdate@googlegroups.com X-Original-Sender: mattwood2000@gmail.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=GG4hIJuQ; spf=pass (google.com: domain of mattwood2000@gmail.com designates 2607:f8b0:4864:20::82d as permitted sender) smtp.mailfrom=mattwood2000@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Rename suricatta_channel_settings to be generic, update existing calls, and add call in start_delta_downloader function. Add delta update section in swupdate.cfg example. Signed-off-by: Matt Wood Reviewed-by: Stefano Babic --- corelib/server_utils.c | 2 +- examples/configuration/swupdate.cfg | 18 ++++++++++++++++-- handlers/delta_downloader.c | 11 +++++++++++ include/server_utils.h | 2 +- suricatta/server_general.c | 2 +- suricatta/server_hawkbit.c | 2 +- 6 files changed, 31 insertions(+), 6 deletions(-) diff --git a/corelib/server_utils.c b/corelib/server_utils.c index d7d733d..025a57d 100644 --- a/corelib/server_utils.c +++ b/corelib/server_utils.c @@ -15,7 +15,7 @@ #include #include "server_utils.h" -void suricatta_channel_settings(void *elem, channel_data_t *chan) +void channel_settings(void *elem, channel_data_t *chan) { char tmp[128]; diff --git a/examples/configuration/swupdate.cfg b/examples/configuration/swupdate.cfg index 46bf1f4..20edb8b 100644 --- a/examples/configuration/swupdate.cfg +++ b/examples/configuration/swupdate.cfg @@ -165,10 +165,10 @@ identify : ( # File with Public Certificate Authority # sslkey : string # path of the file containing the key for SSL connection or pkcs11 URI -# (ex. "pkcs11:model=ATECC608B;token=0ABC;serial=0123456789abcdef;object=device;type=private") +# ex. "pkcs11:model=ATECC608B;token=0ABC;serial=0123456789abcdef;object=device;type=private") # sslcert : string # path of the file containing the certificate for SSL connection or pkcs11 URI - (ex. "pkcs11:model=ATECC608B;token=0ABC;serial=0123456789abcdef;object=device;type=cert") +# (ex. "pkcs11:model=ATECC608B;token=0ABC;serial=0123456789abcdef;object=device;type=cert") # targettoken : string # hawkBit target security token # gatewaytoken : string @@ -264,3 +264,17 @@ webserver : groupid = 1000; timeout = 20; }; + +# delta update section +# +# sslkey : string +# path of the file containing the key for SSL connection or pkcs11 URI +# (ex. "pkcs11:model=ATECC608B;token=0ABC;serial=0123456789abcdef;object=device;type=private") +# sslcert : string +# path of the file containing the certificate for SSL connection or pkcs11 URI +# (ex. "pkcs11:model=ATECC608B;token=0ABC;serial=0123456789abcdef;object=device;type=cert") +delta : +{ + sslkey = "/etc/ssl/sslkey"; + sslcert = "/etc/ssl/sslcert"; +}; diff --git a/handlers/delta_downloader.c b/handlers/delta_downloader.c index e080092..abc3969 100644 --- a/handlers/delta_downloader.c +++ b/handlers/delta_downloader.c @@ -34,6 +34,8 @@ #include "swupdate_dict.h" #include "delta_handler.h" #include "delta_process.h" +#include "swupdate_settings.h" +#include "server_utils.h" /* * Structure used in curl callbacks @@ -198,6 +200,15 @@ int start_delta_downloader(const char __attribute__ ((__unused__)) *fname, channel_data.range = &req->data[req->urllen + 1]; channel_data.user = &priv; + swupdate_cfg_handle handle; + swupdate_cfg_init(&handle); + + if (swupdate_cfg_read_file(&handle, fname) == 0) { + read_module_settings(&handle, "delta", channel_settings, &channel_data); + } + + swupdate_cfg_destroy(&handle); + if (channel->open(channel, &channel_data) == CHANNEL_OK) { transfer = channel->get_file(channel, (void *)&channel_data); } else { diff --git a/include/server_utils.h b/include/server_utils.h index 7df02e3..8b249d5 100644 --- a/include/server_utils.h +++ b/include/server_utils.h @@ -14,6 +14,6 @@ struct json_object; -void suricatta_channel_settings(void *elem, channel_data_t *chan); +void channel_settings(void *elem, channel_data_t *chan); server_op_res_t map_channel_retcode(channel_op_res_t response); struct json_object *server_tokenize_msg(char *buf, size_t size); diff --git a/suricatta/server_general.c b/suricatta/server_general.c index e86bdee..218e429 100644 --- a/suricatta/server_general.c +++ b/suricatta/server_general.c @@ -594,7 +594,7 @@ static int server_general_settings(void *elem, void __attribute__ ((__unused__) get_field(LIBCFG_PARSER, elem, "polldelay", &server_general.polling_interval); - suricatta_channel_settings(elem, &channel_data_defaults); + channel_settings(elem, &channel_data_defaults); return 0; } diff --git a/suricatta/server_hawkbit.c b/suricatta/server_hawkbit.c index e6006cf..349dc11 100644 --- a/suricatta/server_hawkbit.c +++ b/suricatta/server_hawkbit.c @@ -1675,7 +1675,7 @@ static int server_hawkbit_settings(void *elem, void __attribute__ ((__unused__) get_field(LIBCFG_PARSER, elem, "initial-report-resend-period", &server_hawkbit.initial_report_resend_period); - suricatta_channel_settings(elem, &channel_data_defaults); + channel_settings(elem, &channel_data_defaults); get_field(LIBCFG_PARSER, elem, "usetokentodwl", &server_hawkbit.usetokentodwl);