From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9A46DC4363D for ; Fri, 25 Sep 2020 12:59:19 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 44930206DB for ; Fri, 25 Sep 2020 12:59:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="v2rf8a22" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 44930206DB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=virtualization-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id AA56587612; Fri, 25 Sep 2020 12:59:18 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id X+Nx2iA7sW0p; Fri, 25 Sep 2020 12:59:17 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by hemlock.osuosl.org (Postfix) with ESMTP id 7E888875FC; Fri, 25 Sep 2020 12:59:17 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 76BA6C0890; Fri, 25 Sep 2020 12:59:17 +0000 (UTC) Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id C3D0AC0890 for ; Fri, 25 Sep 2020 12:59:16 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 9B4D686DF0 for ; Fri, 25 Sep 2020 12:59:16 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id A4cKglFZfH3f for ; Fri, 25 Sep 2020 12:59:13 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by whitealder.osuosl.org (Postfix) with ESMTPS id 7DCD486D23 for ; Fri, 25 Sep 2020 12:59:13 +0000 (UTC) Received: by mail-wr1-f66.google.com with SMTP id o5so3452963wrn.13 for ; Fri, 25 Sep 2020 05:59:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Q4iTHSBorxk55Li2+GvTNnYqx3kRUnXXkY6aAFMYM/s=; b=v2rf8a22kBUgvdat3avWZaW4mN0N/9L+GeS8rZBwFpbXgyNEA8VuJfT+y6TXOJi/jn 8771/fqeQCE4KnqcuWbyEHsU1A1oyvnct5X0a7zqa6y+v5zKAfikbc6M5TtDu3Vv9KDn eCzpC+XQnacfBUplYEg6WMnBxG+69iasXx9vAWv6aJzUxGNRpuw8gcDthchF1kMwSM7U +4I+PcinNdi8sBnAG4CS1BVzAXnyOcYRp3hzoTca3/k8gTUvmMEW9z5dLqfC8mEs0q2A 2Pfp/TqleOQeL0aOB3Zudp1/B7yTNGO+dN4xcrtnA4CSXUnByPuIBdItaMWf+XqlVdw2 2M9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Q4iTHSBorxk55Li2+GvTNnYqx3kRUnXXkY6aAFMYM/s=; b=e/LrNmp6eOff9qqsnFOv3dIxlDkoql4cnigE6pbkCohkwy63QwWJiuOSbJq6ks17RU Qh+txpwyMBr6d2dQPOR7lmw9t2pMHKXRsdhGTmsNy2sWWHx0qtiPoC0Lr2DPRvu75Czk 6Mg3VkXxsBTCZkW/Ncobng8FXyISR3EreDWkhpvNjXYu/pO3OQEP2hJ0AffkQbnmB50d FJj08ww5vu+wHr0QMeAgKdmCVlrioi0GcgFucpf8jJ3s6HMigG8dftYtBFxDXE5MQTYZ DN6HADYYsTbWrbLQiuS9x/XFLgau5yfcKCjeT6aTJdYTtkuARV9un+7ySIK8Lt+Dkmyt TwBQ== X-Gm-Message-State: AOAM5314Vcu8c9r7XjHGnpGNN18UxvEj1bY4rNoA43fyO3XWdAU/Pcwy Jzx6ZgS/JVntmqtBQgJOvtRX9Q== X-Google-Smtp-Source: ABdhPJyhV2HYYzu/SbmGq+HXq0mlohFIVNFo6iMDNOdcQsYjpYH/oS8OWnIeoRhAoMBBlvixP+sFWw== X-Received: by 2002:a5d:40cd:: with SMTP id b13mr4353786wrq.297.1601038751867; Fri, 25 Sep 2020 05:59:11 -0700 (PDT) Received: from zen.linaroharston ([51.148.130.216]) by smtp.gmail.com with ESMTPSA id x67sm2411242wmb.25.2020.09.25.05.59.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2020 05:59:10 -0700 (PDT) Received: from zen.lan (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 74C251FF9C; Fri, 25 Sep 2020 13:51:49 +0100 (BST) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org, maxim.uvarov@linaro.org, joakim.bech@linaro.org, ilias.apalodimas@linaro.org, tomas.winkler@intel.com, yang.huang@intel.com, bing.zhu@intel.com, Matti.Moell@opensynergy.com, hmo@opensynergy.com Subject: [RFC PATCH 13/19] tools/vhost-user-rpmb: implement the PROGRAM_KEY handshake Date: Fri, 25 Sep 2020 13:51:41 +0100 Message-Id: <20200925125147.26943-14-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200925125147.26943-1-alex.bennee@linaro.org> References: <20200925125147.26943-1-alex.bennee@linaro.org> MIME-Version: 1.0 Cc: jean-philippe@linaro.org, takahiro.akashi@linaro.org, virtualization@lists.linuxfoundation.org, arnd@linaro.org, stratos-dev@op-lists.linaro.org X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" VGhpcyBpbXBsZW1lbnRzIHRoZSBmaXJzdCBoYW5kc2hha2Ugb2YgdGhlIGRldmljZSBpbml0aWFs aXNhdGlvbiB3aGljaAppcyB0aGUgcHJvZ3JhbW1pbmcgb2YgdGhlIGRldmljZSBrZXkuIFRoaXMg Y2FuIG9ubHkgYmUgZG9uZSBvbmNlCnBlci1kZXZpY2UuCgpDdXJyZW50bHkgdGhlcmUgaXMgbm8g cGVyc2lzdGVuY2UgZm9yIHRoZSBkZXZpY2Uga2V5IGFuZCBvdGhlcgptZXRhZGF0YSBzdWNoIGFz IHRoZSB3cml0ZSBjb3VudC4gVGhpcyB3aWxsIGJlIGFkZGVkIGxhdGVyLgoKW1RPRE86IGNsYXJp ZnkgdGhlIHNwZWMgaWYgd2Ugc2hvdWxkIHJlc3BvbmQgaW1tZWRpYXRlbHkgb3Igb24gcmVxdWVz dF0KClNpZ25lZC1vZmYtYnk6IEFsZXggQmVubsOpZSA8YWxleC5iZW5uZWVAbGluYXJvLm9yZz4K LS0tCiB0b29scy92aG9zdC11c2VyLXJwbWIvbWFpbi5jIHwgMjk5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgMjg2IGluc2VydGlvbnMoKyksIDEz IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Zob3N0LXVzZXItcnBtYi9tYWluLmMg Yi90b29scy92aG9zdC11c2VyLXJwbWIvbWFpbi5jCmluZGV4IDY0YmQ3ZTc5ZjU3My4uOWM5OGY2 OTE2ZjZmIDEwMDY0NAotLS0gYS90b29scy92aG9zdC11c2VyLXJwbWIvbWFpbi5jCisrKyBiL3Rv b2xzL3Zob3N0LXVzZXItcnBtYi9tYWluLmMKQEAgLTIyLDEwICsyMiwxNCBAQAogI2luY2x1ZGUg PHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4K KyNpbmNsdWRlIDxlbmRpYW4uaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KIAogI2luY2x1ZGUgImNv bnRyaWIvbGlidmhvc3QtdXNlci9saWJ2aG9zdC11c2VyLWdsaWIuaCIKICNpbmNsdWRlICJjb250 cmliL2xpYnZob3N0LXVzZXIvbGlidmhvc3QtdXNlci5oIgogCisjaW5jbHVkZSAiaG1hY19zaGEy NTYuaCIKKwogI2lmbmRlZiBjb250YWluZXJfb2YKICNkZWZpbmUgY29udGFpbmVyX29mKHB0ciwg dHlwZSwgbWVtYmVyKSAoeyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGNvbnN0IHR5 cGVvZigoKHR5cGUgKikgMCktPm1lbWJlcikgKl9fbXB0ciA9IChwdHIpOyAgICAgXApAQCAtNTcs NiArNjEsMzEgQEAgZW51bSB7CiAvKiBUaGVzZSBzdHJ1Y3R1cmVzIGFyZSBkZWZpbmVkIGluIHRo ZSBzcGVjaWZpY2F0aW9uICovCiAjZGVmaW5lIEtpQiAgICAgKDFVTCA8PCAxMCkKICNkZWZpbmUg TUFYX1JQTUJfU0laRSAoS2lCICogMTI4ICogMjU2KQorI2RlZmluZSBSUE1CX0tFWV9NQUNfU0la RSAzMgorCisvKiBSUE1CIFJlcXVlc3QgVHlwZXMgKi8KKyNkZWZpbmUgVklSVElPX1JQTUJfUkVR X1BST0dSQU1fS0VZICAgICAgICAweDAwMDEKKyNkZWZpbmUgVklSVElPX1JQTUJfUkVRX0dFVF9X UklURV9DT1VOVEVSICAweDAwMDIKKyNkZWZpbmUgVklSVElPX1JQTUJfUkVRX0RBVEFfV1JJVEUg ICAgICAgICAweDAwMDMKKyNkZWZpbmUgVklSVElPX1JQTUJfUkVRX0RBVEFfUkVBRCAgICAgICAg ICAweDAwMDQKKyNkZWZpbmUgVklSVElPX1JQTUJfUkVRX1JFU1VMVF9SRUFEICAgICAgICAweDAw MDUKKworLyogUlBNQiBSZXNwb25zZSBUeXBlcyAqLworI2RlZmluZSBWSVJUSU9fUlBNQl9SRVNQ X1BST0dSQU1fS0VZICAgICAgIDB4MDEwMAorI2RlZmluZSBWSVJUSU9fUlBNQl9SRVNQX0dFVF9D T1VOVEVSICAgICAgIDB4MDIwMAorI2RlZmluZSBWSVJUSU9fUlBNQl9SRVNQX0RBVEFfV1JJVEUg ICAgICAgIDB4MDMwMAorI2RlZmluZSBWSVJUSU9fUlBNQl9SRVNQX0RBVEFfUkVBRCAgICAgICAg IDB4MDQwMAorCisvKiBSUE1CIE9wZXJhdGlvbiBSZXN1bHRzICovCisjZGVmaW5lIFZJUlRJT19S UE1CX1JFU19PSyAgICAgICAgICAgICAgICAgICAgIDB4MDAwMAorI2RlZmluZSBWSVJUSU9fUlBN Ql9SRVNfR0VORVJBTF9GQUlMVVJFICAgICAgICAweDAwMDEKKyNkZWZpbmUgVklSVElPX1JQTUJf UkVTX0FVVEhfRkFJTFVSRSAgICAgICAgICAgMHgwMDAyCisjZGVmaW5lIFZJUlRJT19SUE1CX1JF U19DT1VOVF9GQUlMVVJFICAgICAgICAgIDB4MDAwMworI2RlZmluZSBWSVJUSU9fUlBNQl9SRVNf QUREUl9GQUlMVVJFICAgICAgICAgICAweDAwMDQKKyNkZWZpbmUgVklSVElPX1JQTUJfUkVTX1dS SVRFX0ZBSUxVUkUgICAgICAgICAgMHgwMDA1CisjZGVmaW5lIFZJUlRJT19SUE1CX1JFU19SRUFE X0ZBSUxVUkUgICAgICAgICAgIDB4MDAwNgorI2RlZmluZSBWSVJUSU9fUlBNQl9SRVNfTk9fQVVU SF9LRVkgICAgICAgICAgICAweDAwMDcKKyNkZWZpbmUgVklSVElPX1JQTUJfUkVTX1dSSVRFX0NP VU5URVJfRVhQSVJFRCAgMHgwMDgwCiAKIHN0cnVjdCB2aXJ0aW9fcnBtYl9jb25maWcgewogICAg IHVpbnQ4X3QgY2FwYWNpdHk7CkBAIC02NCw5ICs5MywxMyBAQCBzdHJ1Y3QgdmlydGlvX3JwbWJf Y29uZmlnIHsKICAgICB1aW50OF90IG1heF9yZF9jbnQ7CiB9OwogCisvKgorICogVGhpcyBpcyBi YXNlZCBvbiB0aGUgSkRFQyBzdGFuZGFyZCBhbmQgbm90IHRoZSBjdXJyZW50bHkgbm90CisgKiB1 cC1zdHJlYW1lZCBOVk1FIHN0YW5kYXJkLgorICovCiBzdHJ1Y3QgdmlydGlvX3JwbWJfZnJhbWUg ewogICAgIHVpbnQ4X3Qgc3R1ZmZbMTk2XTsKLSAgICB1aW50OF90IGtleV9tYWNbMzJdOworICAg IHVpbnQ4X3Qga2V5X21hY1tSUE1CX0tFWV9NQUNfU0laRV07CiAgICAgdWludDhfdCBkYXRhWzI1 Nl07CiAgICAgdWludDhfdCBub25jZVsxNl07CiAgICAgLyogcmVtYWluaW5nIGZpZWxkcyBhcmUg YmlnLWVuZGlhbiAqLwpAQCAtNzUsNyArMTA4LDcgQEAgc3RydWN0IHZpcnRpb19ycG1iX2ZyYW1l IHsKICAgICB1aW50MTZfdCBibG9ja19jb3VudDsKICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAg dWludDE2X3QgcmVxX3Jlc3A7Ci19OworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKIAogLyoK ICAqIFN0cnVjdHVyZSB0byB0cmFjayBpbnRlcm5hbCBzdGF0ZSBvZiBSUE1CIERldmljZQpAQCAt ODcsMTUgKzEyMCw2MyBAQCB0eXBlZGVmIHN0cnVjdCBWdVJwbWIgewogICAgIEdNYWluTG9vcCAq bG9vcDsKICAgICBpbnQgZmxhc2hfZmQ7CiAgICAgdm9pZCAqZmxhc2hfbWFwOworICAgIHVpbnQ4 X3QgKmtleTsKKyAgICB1aW50MTZfdCBsYXN0X3Jlc3VsdDsKKyAgICB1aW50MTZfdCBsYXN0X3Jl cXJlc3A7CiB9IFZ1UnBtYjsKIAotc3RydWN0IHZpcnRpb19ycG1iX2N0cmxfY29tbWFuZCB7Ci0g ICAgVnVWaXJ0cUVsZW1lbnQgZWxlbTsKLSAgICBWdVZpcnRxICp2cTsKLSAgICBzdHJ1Y3Qgdmly dGlvX3JwbWJfZnJhbWUgZnJhbWU7Ci0gICAgdWludDMyX3QgZXJyb3I7Ci0gICAgYm9vbCBmaW5p c2hlZDsKLX07CisvKiByZWZlciB0byB1dGlsL2lvdi5jICovCitzdGF0aWMgc2l6ZV90IHZycG1i X2lvdl9zaXplKGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgaW92X2NudCkKK3sKKyAgICBzaXplX3QgbGVuOwor ICAgIHVuc2lnbmVkIGludCBpOworCisgICAgbGVuID0gMDsKKyAgICBmb3IgKGkgPSAwOyBpIDwg aW92X2NudDsgaSsrKSB7CisgICAgICAgIGxlbiArPSBpb3ZbaV0uaW92X2xlbjsKKyAgICB9Cisg ICAgcmV0dXJuIGxlbjsKK30KKworCitzdGF0aWMgc2l6ZV90IHZycG1iX2lvdl90b19idWYoY29u c3Qgc3RydWN0IGlvdmVjICppb3YsIGNvbnN0IHVuc2lnbmVkIGludCBpb3ZfY250LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsIHZvaWQgKmJ1Ziwgc2l6ZV90 IGJ5dGVzKQoreworICAgIHNpemVfdCBkb25lOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZv ciAoaSA9IDAsIGRvbmUgPSAwOyAob2Zmc2V0IHx8IGRvbmUgPCBieXRlcykgJiYgaSA8IGlvdl9j bnQ7IGkrKykgeworICAgICAgICBpZiAob2Zmc2V0IDwgaW92W2ldLmlvdl9sZW4pIHsKKyAgICAg ICAgICAgIHNpemVfdCBsZW4gPSBNSU4oaW92W2ldLmlvdl9sZW4gLSBvZmZzZXQsIGJ5dGVzIC0g ZG9uZSk7CisgICAgICAgICAgICBtZW1jcHkoYnVmICsgZG9uZSwgaW92W2ldLmlvdl9iYXNlICsg b2Zmc2V0LCBsZW4pOworICAgICAgICAgICAgZG9uZSArPSBsZW47CisgICAgICAgICAgICBvZmZz ZXQgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb2Zmc2V0IC09IGlvdltpXS5p b3ZfbGVuOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChvZmZzZXQgPT0gMCk7CisgICAg cmV0dXJuIGRvbmU7Cit9CisKK3N0YXRpYyBzaXplX3QgdnJwbWJfaW92X2Zyb21fYnVmKGNvbnN0 IHN0cnVjdCBpb3ZlYyAqaW92LCB1bnNpZ25lZCBpbnQgaW92X2NudCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90 IGJ5dGVzKQoreworICAgIHNpemVfdCBkb25lOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZv ciAoaSA9IDAsIGRvbmUgPSAwOyAob2Zmc2V0IHx8IGRvbmUgPCBieXRlcykgJiYgaSA8IGlvdl9j bnQ7IGkrKykgeworICAgICAgICBpZiAob2Zmc2V0IDwgaW92W2ldLmlvdl9sZW4pIHsKKyAgICAg ICAgICAgIHNpemVfdCBsZW4gPSBNSU4oaW92W2ldLmlvdl9sZW4gLSBvZmZzZXQsIGJ5dGVzIC0g ZG9uZSk7CisgICAgICAgICAgICBtZW1jcHkoaW92W2ldLmlvdl9iYXNlICsgb2Zmc2V0LCBidWYg KyBkb25lLCBsZW4pOworICAgICAgICAgICAgZG9uZSArPSBsZW47CisgICAgICAgICAgICBvZmZz ZXQgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb2Zmc2V0IC09IGlvdltpXS5p b3ZfbGVuOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChvZmZzZXQgPT0gMCk7CisgICAg cmV0dXJuIGRvbmU7Cit9CiAKIHN0YXRpYyB2b2lkIHZycG1iX3BhbmljKFZ1RGV2ICpkZXYsIGNv bnN0IGNoYXIgKm1zZykKIHsKQEAgLTE0MiwxOSArMjIzLDIxMSBAQCB2cnBtYl9zZXRfY29uZmln KFZ1RGV2ICpkZXYsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCiAgICAgcmV0dXJuIDA7CiB9CiAKKy8q CisgKiB2cnBtYl91cGRhdGVfbWFjX2luX2ZyYW1lOgorICoKKyAqIEZyb20gdGhlIHNwZWM6Cisg KiAgIFRoZSBNQUMgaXMgY2FsY3VsYXRlZCB1c2luZyBITUFDIFNIQS0yNTYuIEl0IHRha2VzCisg KiAgIGFzIGlucHV0IGEga2V5IGFuZCBhIG1lc3NhZ2UuIFRoZSBrZXkgdXNlZCBmb3IgdGhlIE1B QyBjYWxjdWxhdGlvbgorICogICBpcyBhbHdheXMgdGhlIDI1Ni1iaXQgUlBNQiBhdXRoZW50aWNh dGlvbiBrZXkuIFRoZSBtZXNzYWdlIHVzZWQgYXMKKyAqICAgaW5wdXQgdG8gdGhlIE1BQyBjYWxj dWxhdGlvbiBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgZmllbGRzIGluCisgKiAgIHRoZSBS UE1CIGZyYW1lcyBleGNsdWRpbmcgc3R1ZmYgYnl0ZXMgYW5kIHRoZSBNQUMgaXRzZWxmLgorICoK KyAqIFRoZSBjb2RlIHRvIGRvIHRoaXMgaGFzIGJlZW4gbGlmdGVkIGZyb20gdGhlIG9wdGVlIHN1 cHBsaWNhbnQgY29kZQorICogd2hpY2ggaXRzZWxmIHVzZXMgYSAzIGNsYXVzZSBCU0QgY2h1bmsg b2YgY29kZS4KKyAqLworCitzdGF0aWMgdm9pZCB2cnBtYl91cGRhdGVfbWFjX2luX2ZyYW1lKFZ1 UnBtYiAqciwgc3RydWN0IHZpcnRpb19ycG1iX2ZyYW1lICpmcm0pCit7CisgICAgaG1hY19zaGEy NTZfY3R4IGN0eDsKKyAgICBzdGF0aWMgY29uc3QgaW50IGRsZW4gPSAoc2l6ZW9mKHN0cnVjdCB2 aXJ0aW9fcnBtYl9mcmFtZSkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRv ZihzdHJ1Y3QgdmlydGlvX3JwbWJfZnJhbWUsIGRhdGEpKTsKKworICAgIGhtYWNfc2hhMjU2X2lu aXQoJmN0eCwgci0+a2V5LCBSUE1CX0tFWV9NQUNfU0laRSk7CisgICAgaG1hY19zaGEyNTZfdXBk YXRlKCZjdHgsIGZybS0+ZGF0YSwgZGxlbik7CisgICAgaG1hY19zaGEyNTZfZmluYWwoJmN0eCwg JmZybS0+a2V5X21hY1swXSwgMzIpOworfQorCisvKgorICogSGFuZGxlcnMgZm9yIGluZGl2aWR1 YWwgY29udHJvbCBtZXNzYWdlcworICovCisKKy8qCisgKiB2cnBtYl9oYW5kbGVfcHJvZ3JhbV9r ZXk6CisgKgorICogUHJvZ3JhbSB0aGUgZGV2aWNlIHdpdGggb3VyIGtleS4gVGhlIHNwZWMgaXMg YSBsaXR0bGUgaGF6enkgb24gaWYKKyAqIHdlIHJlc3BvbmQgc3RyYWlnaHQgYXdheSBvciB3ZSB3 YWl0IGZvciB0aGUgdXNlciB0byBzZW5kIGEKKyAqIFZJUlRJT19SUE1CX1JFUV9SRVNVTFRfUkVB RCByZXF1ZXN0LgorICovCitzdGF0aWMgdm9pZCB2cnBtYl9oYW5kbGVfcHJvZ3JhbV9rZXkoVnVE ZXYgKmRldiwgc3RydWN0IHZpcnRpb19ycG1iX2ZyYW1lICpmcmFtZSkKK3sKKyAgICBWdVJwbWIg KnIgPSBjb250YWluZXJfb2YoZGV2LCBWdVJwbWIsIGRldi5wYXJlbnQpOworCisgICAgLyoKKyAg ICAgKiBSdW4gdGhlIGNoZWNrcyBmcm9tOgorICAgICAqIDUuMTIuNi4xLjEgRGV2aWNlIFJlcXVp cmVtZW50czogRGV2aWNlIE9wZXJhdGlvbjogUHJvZ3JhbSBLZXkKKyAgICAgKi8KKyAgICByLT5s YXN0X3JlcXJlc3AgPSBWSVJUSU9fUlBNQl9SRVNQX1BST0dSQU1fS0VZOworCisgICAgLyogRmFp bCBpZiBhbHJlYWR5IHByb2dyYW1tZWQgKi8KKyAgICBpZiAoci0+a2V5KSB7CisgICAgICAgIGdf ZGVidWcoImtleSBhbHJlYWR5IHByb2dyYW1tZWQiKTsKKyAgICAgICAgci0+bGFzdF9yZXN1bHQg PSBWSVJUSU9fUlBNQl9SRVNfV1JJVEVfRkFJTFVSRTsKKyAgICB9IGVsc2UgaWYgKGJlMTZ0b2go ZnJhbWUtPmJsb2NrX2NvdW50KSAhPSAxKSB7CisgICAgICAgIGdfZGVidWcoIndlaXJkIGJsb2Nr IGNvdW50cyAoJWQpIiwgZnJhbWUtPmJsb2NrX2NvdW50KTsKKyAgICAgICAgci0+bGFzdF9yZXN1 bHQgPSBWSVJUSU9fUlBNQl9SRVNfR0VORVJBTF9GQUlMVVJFOworICAgIH0gZWxzZSB7CisgICAg ICAgIHItPmtleSA9IGdfbWVtZHVwKCZmcmFtZS0+a2V5X21hY1swXSwgUlBNQl9LRVlfTUFDX1NJ WkUpOworICAgICAgICByLT5sYXN0X3Jlc3VsdCA9IFZJUlRJT19SUE1CX1JFU19PSzsKKyAgICB9 CisKKyAgICBnX2luZm8oIiVzOiByZXFfcmVzcCA9ICV4LCByZXN1bHQgPSAleCIsIF9fZnVuY19f LAorICAgICAgICAgICByLT5sYXN0X3JlcXJlc3AsIHItPmxhc3RfcmVzdWx0KTsKKyAgICByZXR1 cm47Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBtZXNzYWdlLiBU aGlzIGlzIG9ubHkgdmFsaWQgaWYgdGhlCisgKiBwcmV2aW91cyBtZXNzYWdlIHdhcyBWSVJUSU9f UlBNQl9SRVFfUFJPR1JBTV9LRVkgb3IKKyAqIFZJUlRJT19SUE1CX1JFUV9EQVRBX1dSSVRFLgor ICoKKyAqIFRoZSBmcmFtZSBzaG91bGQgYmUgZnJlZWQgb25jZSBzZW50LgorICovCitzdGF0aWMg c3RydWN0IHZpcnRpb19ycG1iX2ZyYW1lICogdnJwbWJfaGFuZGxlX3Jlc3VsdF9yZWFkKFZ1RGV2 ICpkZXYpCit7CisgICAgVnVScG1iICpyID0gY29udGFpbmVyX29mKGRldiwgVnVScG1iLCBkZXYu cGFyZW50KTsKKyAgICBzdHJ1Y3QgdmlydGlvX3JwbWJfZnJhbWUgKnJlc3AgPSBnX25ldzAoc3Ry dWN0IHZpcnRpb19ycG1iX2ZyYW1lLCAxKTsKKworICAgIGlmIChyLT5sYXN0X3JlcXJlc3AgPT0g VklSVElPX1JQTUJfUkVTUF9QUk9HUkFNX0tFWSB8fAorICAgICAgICByLT5sYXN0X3JlcXJlc3Ag PT0gVklSVElPX1JQTUJfUkVRX0RBVEFfV1JJVEUpIHsKKyAgICAgICAgcmVzcC0+cmVzdWx0ID0g aHRvYmUxNihyLT5sYXN0X3Jlc3VsdCk7CisgICAgICAgIHJlc3AtPnJlcV9yZXNwID0gaHRvYmUx NihyLT5sYXN0X3JlcXJlc3ApOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3AtPnJlc3VsdCA9 IGh0b2JlMTYoVklSVElPX1JQTUJfUkVTX0dFTkVSQUxfRkFJTFVSRSk7CisgICAgfQorCisgICAg LyogY2FsY3VsYXRlIEhNQUMgKi8KKyAgICBpZiAoIXItPmtleSkgeworICAgICAgICByZXNwLT5y ZXN1bHQgPSBodG9iZTE2KFZJUlRJT19SUE1CX1JFU19HRU5FUkFMX0ZBSUxVUkUpOworICAgIH0g ZWxzZSB7CisgICAgICAgIHZycG1iX3VwZGF0ZV9tYWNfaW5fZnJhbWUociwgcmVzcCk7CisgICAg fQorCisgICAgZ19pbmZvKCIlczogcmVzdWx0ID0gJXggcmVxX3Jlc3AgPSAleCIsIF9fZnVuY19f LAorICAgICAgICAgICBiZTE2dG9oKHJlc3AtPnJlc3VsdCksCisgICAgICAgICAgIGJlMTZ0b2go cmVzcC0+cmVxX3Jlc3ApKTsKKyAgICByZXR1cm4gcmVzcDsKK30KKworc3RhdGljIHZvaWQgZm10 X2J5dGVzKEdTdHJpbmcgKnMsIHVpbnQ4X3QgKmJ5dGVzLCBpbnQgbGVuKQoreworICAgIGludCBp OworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBpZiAoaSAlIDE2ID09 IDApIHsKKyAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9jKHMsICdcbicpOworICAgICAgICB9 CisgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYocywgIiV4ICIsIGJ5dGVzW2ldKTsKKyAg ICB9Cit9CisKK3N0YXRpYyB2b2lkIHZycG1iX2R1bXBfZnJhbWUoc3RydWN0IHZpcnRpb19ycG1i X2ZyYW1lICpmcmFtZSkKK3sKKyAgICBnX2F1dG9wdHIoR1N0cmluZykgcyA9IGdfc3RyaW5nX25l dygiZnJhbWU6ICIpOworCisgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihzLCAiICVwXG4iLCBm cmFtZSk7CisgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihzLCAia2V5X21hYzoiKTsKKyAgICBm bXRfYnl0ZXMocywgKHVpbnQ4X3QgKikgJmZyYW1lLT5rZXlfbWFjWzBdLCAzMik7CisgICAgZ19z dHJpbmdfYXBwZW5kX3ByaW50ZihzLCAiXG5kYXRhOiIpOworICAgIGZtdF9ieXRlcyhzLCAodWlu dDhfdCAqKSAmZnJhbWUtPmRhdGEsIDI1Nik7CisgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50Zihz LCAiXG5ub25jZToiKTsKKyAgICBmbXRfYnl0ZXMocywgKHVpbnQ4X3QgKikgJmZyYW1lLT5ub25j ZSwgMTYpOworICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYocywgIlxud3JpdGVfY291bnRlcjog JWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBiZTMydG9oKGZyYW1lLT53cml0ZV9j b3VudGVyKSk7CisgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihzLCAiYWRkcmVzczogJSMwNHhc biIsIGJlMTZ0b2goZnJhbWUtPmFkZHJlc3MpKTsKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRm KHMsICJibG9ja19jb3VudDogJWRcbiIsIGJlMTZ0b2goZnJhbWUtPmJsb2NrX2NvdW50KSk7Cisg ICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihzLCAicmVzdWx0OiAlZFxuIiwgYmUxNnRvaChmcmFt ZS0+cmVzdWx0KSk7CisgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihzLCAicmVxX3Jlc3A6ICVk XG4iLCBiZTE2dG9oKGZyYW1lLT5yZXFfcmVzcCkpOworCisgICAgZ19kZWJ1ZygiJXM6ICVzXG4i LCBfX2Z1bmNfXywgcy0+c3RyKTsKK30KKwogc3RhdGljIHZvaWQKIHZycG1iX2hhbmRsZV9jdHJs KFZ1RGV2ICpkZXYsIGludCBxaWR4KQogewogICAgIFZ1VmlydHEgKnZxID0gdnVfZ2V0X3F1ZXVl KGRldiwgcWlkeCk7Ci0gICAgc3RydWN0IHZpcnRpb19ycG1iX2N0cmxfY29tbWFuZCAqY21kID0g TlVMTDsKKyAgICBzdHJ1Y3QgdmlydGlvX3JwbWJfZnJhbWUgKmZyYW1lcyA9IE5VTEw7CiAKICAg ICBmb3IgKDs7KSB7Ci0gICAgICAgIGNtZCA9IHZ1X3F1ZXVlX3BvcChkZXYsIHZxLCBzaXplb2Yo c3RydWN0IHZpcnRpb19ycG1iX2N0cmxfY29tbWFuZCkpOwotICAgICAgICBpZiAoIWNtZCkgewor ICAgICAgICBWdVZpcnRxRWxlbWVudCAqZWxlbTsKKyAgICAgICAgc2l6ZV90IGxlbiwgZnJhbWVf c3ogPSBzaXplb2Yoc3RydWN0IHZpcnRpb19ycG1iX2ZyYW1lKTsKKyAgICAgICAgaW50IG47CisK KyAgICAgICAgZWxlbSA9IHZ1X3F1ZXVlX3BvcChkZXYsIHZxLCBzaXplb2YoVnVWaXJ0cUVsZW1l bnQpKTsKKyAgICAgICAgaWYgKCFlbGVtKSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg fQorICAgICAgICBnX2RlYnVnKCIlczogZ290IHF1ZXVlIChpbiAlZCwgb3V0ICVkKSIsIF9fZnVu Y19fLAorICAgICAgICAgICAgICAgIGVsZW0tPmluX251bSwgZWxlbS0+b3V0X251bSk7CiAKLSAg ICAgICAgZ19kZWJ1ZygidW4taGFuZGxlZCBjbWQ6ICVwIiwgY21kKTsKKyAgICAgICAgbGVuID0g dnJwbWJfaW92X3NpemUoZWxlbS0+b3V0X3NnLCBlbGVtLT5vdXRfbnVtKTsKKyAgICAgICAgZnJh bWVzID0gZ19yZWFsbG9jKGZyYW1lcywgbGVuKTsKKyAgICAgICAgdnJwbWJfaW92X3RvX2J1Zihl bGVtLT5vdXRfc2csIGVsZW0tPm91dF9udW0sIDAsIGZyYW1lcywgbGVuKTsKKworICAgICAgICBp ZiAobGVuICUgZnJhbWVfc3ogIT0gMCkgeworICAgICAgICAgICAgZ193YXJuaW5nKCIlczogaW5j b21wbGV0ZSBmcmFtZXMgJXp1LyV6dSAhPSAwXG4iLAorICAgICAgICAgICAgICAgICAgICAgIF9f ZnVuY19fLCBsZW4sIGZyYW1lX3N6KTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAobiA9IDA7 IG4gPCBsZW4gLyBmcmFtZV9zejsgbisrKSB7CisgICAgICAgICAgICBzdHJ1Y3QgdmlydGlvX3Jw bWJfZnJhbWUgKmYgPSAmZnJhbWVzW25dOworICAgICAgICAgICAgc3RydWN0IHZpcnRpb19ycG1i X2ZyYW1lICpyZXNwID0gTlVMTDsKKyAgICAgICAgICAgIHVpbnQxNl90IHJlcV9yZXNwID0gYmUx NnRvaChmLT5yZXFfcmVzcCk7CisgICAgICAgICAgICBib29sIHJlc3BvbmRlZCA9IGZhbHNlOwor CisgICAgICAgICAgICBpZiAoZGVidWcpIHsKKyAgICAgICAgICAgICAgICBnX2luZm8oInJlcV9y ZXNwPSV4IiwgcmVxX3Jlc3ApOworICAgICAgICAgICAgICAgIHZycG1iX2R1bXBfZnJhbWUoZik7 CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAocmVxX3Jlc3ApIHsKKyAgICAg ICAgICAgIGNhc2UgVklSVElPX1JQTUJfUkVRX1BST0dSQU1fS0VZOgorICAgICAgICAgICAgICAg IHZycG1iX2hhbmRsZV9wcm9ncmFtX2tleShkZXYsIGYpOworICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgY2FzZSBWSVJUSU9fUlBNQl9SRVFfUkVTVUxUX1JFQUQ6CisgICAgICAg ICAgICAgICAgaWYgKCFyZXNwb25kZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzcCA9IHZy cG1iX2hhbmRsZV9yZXN1bHRfcmVhZChkZXYpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgICAgICAgIGdfd2FybmluZygiJXM6IGFscmVhZHkgc2VudCBhIHJlc3BvbnNl IGluIHRoaXMgc2V0IG9mIGZyYW1lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf X2Z1bmNfXyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBnX2RlYnVnKCJ1bi1oYW5kbGVkIHJl cXVlc3Q6ICV4IiwgZi0+cmVxX3Jlc3ApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgfQorCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogRG8gd2UgaGF2ZSBhIGZy YW1lIHRvIHNlbmQgYmFjaz8KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKHJlc3Ap IHsKKyAgICAgICAgICAgICAgICBnX2RlYnVnKCJzZW5kaW5nIHJlc3BvbnNlIGZyYW1lOiAlcCIs IHJlc3ApOworICAgICAgICAgICAgICAgIGlmIChkZWJ1ZykgeworICAgICAgICAgICAgICAgICAg ICB2cnBtYl9kdW1wX2ZyYW1lKHJlc3ApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICBsZW4gPSB2cnBtYl9pb3ZfZnJvbV9idWYoZWxlbS0+aW5fc2csCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0tPmluX251bSwgMCwgcmVzcCwgc2l6ZW9m KCpyZXNwKSk7CisgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBzaXplb2YoKnJlc3ApKSB7Cisg ICAgICAgICAgICAgICAgICAgIGdfY3JpdGljYWwoIiVzOiByZXNwb25zZSBzaXplIGluY29ycmVj dCAlenUgdnMgJXp1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywg bGVuLCBzaXplb2YoKnJlc3ApKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICAgICAgICB2dV9xdWV1ZV9wdXNoKGRldiwgdnEsIGVsZW0sIGxlbik7CisgICAgICAgICAg ICAgICAgICAgIHZ1X3F1ZXVlX25vdGlmeShkZXYsIHZxKTsKKyAgICAgICAgICAgICAgICAgICAg cmVzcG9uZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBn X2ZyZWUocmVzcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiB9CiAKLS0gCjIu MjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmly dHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5k YXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL3ZpcnR1YWxpemF0aW9u