Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tIuNx-00HOPq-AA for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Dec 2024 18:46:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tIuMu-0023S3-JM for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Dec 2024 18:45:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tIuMu-0023Rq-4a for pgsql-hackers@lists.postgresql.org; Wed, 04 Dec 2024 18:45:01 +0000 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tIuMr-0013ar-Ey for pgsql-hackers@lists.postgresql.org; Wed, 04 Dec 2024 18:45:00 +0000 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-725958d5ee0so131863b3a.1 for ; Wed, 04 Dec 2024 10:44:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733337895; x=1733942695; darn=lists.postgresql.org; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=RWmC6eSkZftM4vGeQUo6M8oIK9Lub6OFO+MI0ohBfgs=; b=S/Yl6dQJwA2+7f3zTH3ZiKjIYc6joo5JcK6OZk6A/vb2aBvzNXxoLypC2AATouOnee i2VydlLfYmmtLcgWhGHG2GLrkcCJX5KulVgcpl5TUagPC4EHtUMJ5If5KDVSkEqxmHFu dNE6SKn3AuKbOT5dWbDiiuuBKypn4n3QEoS5B3yt5i97dqHypxWLBD4nCXpgssVpr5jA wEptKIDAbgvrLXouYeojnxf0eCIsMCzjDmoeZlQgePfjIXstduYjPuVoMWh0PT/68RrN 1k63C72eBfzc9pSrXhTm6qrADRrS79ep675HrDx0mozrC6/PJd4WqKuC5gndEmPOrNaM fwCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733337895; x=1733942695; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=RWmC6eSkZftM4vGeQUo6M8oIK9Lub6OFO+MI0ohBfgs=; b=O9oD2bpFLQDYSGT1pTC6eTtImgpjEA+87aMne2VPi9SvciQ8QhTpofWk6xTLPmUkRk 4/SclF+tU9PcyRkOF+jUC+w7YQ9FeFNCY/A4TQBiSdDAK+2wBUskBXwDgYtoDmj0sDjO mbXDy87SjmgON+lfYt/zmf4++ozLZPOtX3Tl2fXmad78BS/E3LsbkXhqhm5tsljjcptN zWhLZ6JpaOYPKio0ZCAC0a9SRYt0LjrDZHob340S5tLaBGjYrrOJtWG604dFwbX7L00J B9daKyr/E1/He03rJgAeYvYPDoqzm/vOFGiDzNVzqggaSmAaKYVbPi62drQ+MByxhoRV WhzA== X-Gm-Message-State: AOJu0Yxe2CAaoOdFG7ZlpNR6f3lttMFC4+Xb2tGNaGqrmkUzU6qo+GEQ /RE8mGOwKrtmDNoKuvhbgURMY2QCfZRz/rvYx5ydP9CkG37Wkkma4XgJzeyG X-Gm-Gg: ASbGncvJY/tf/mVsNz2ZlW8+iQu0fUxi4DC5ykzDvvX25GigDhm18mt+jUDIMczYVzW 0qyroqOU7q1Jrnl5/H6SpVJdDun3qoCxAZXjQxiRQOeVTXvGCOZxHH/ykwN6vJPGj2i6eHeGHGL dxsriB/yGkvRkCYgR1v+qX/BDBe6FLiIh2ipZDzTFomDQ1acCWXu90KpTHu9BC6QxKLpF6M2Ick uhC3kEWOAjpq/Ru8k+HTX82S11jTzB93G8u2afz218z392iRd/N5bLVRr06l0s0MeOAyRtI2Eza lZLUA6oeo+4krhG+DU0Jwxuwh7TVO5OSM23Gr+CKsFrWWw== X-Google-Smtp-Source: AGHT+IFXYp7NgSi8i8bcEJpTKcmfSZAhnOzJlPoE0DH33cljI9McY+HZznZ4Evt00ulsxJNtgqgdzQ== X-Received: by 2002:a05:6a00:3d53:b0:71e:7a56:3eaf with SMTP id d2e1a72fcca58-7257fcdae57mr10408401b3a.24.1733337895336; Wed, 04 Dec 2024 10:44:55 -0800 (PST) Received: from ?IPV6:2804:14d:328a:a59c:44b8:e9b0:caca:473a? ([2804:14d:328a:a59c:44b8:e9b0:caca:473a]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-72590d136c4sm1594608b3a.9.2024.12.04.10.44.52 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 04 Dec 2024 10:44:53 -0800 (PST) Content-Type: multipart/mixed; boundary="------------bvZNxXBLyMf2q0EoAegoovvX" Message-ID: <27b29a35-9b96-46a9-bc1a-914140869dac@gmail.com> Date: Wed, 4 Dec 2024 15:44:51 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: PostgreSQL Hackers From: Matheus Alcantara Subject: SCRAM pass-through authentication for postgres_fdw List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------bvZNxXBLyMf2q0EoAegoovvX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, The attached a patch enables SCRAM authentication for postgres_fdw connections without requiring plain-text password on user mapping properties. This is achieved by storing the SCRAM ClientKey and ServerKey obtained during client authentication with the backend. These keys are then used to complete the SCRAM exchange between the backend and the fdw server, eliminating the need to derive them from a stored plain-text password. I think that some documentation updates may be necessary for this change. If so, I plan to submit an updated patch with the relevant documentation changes in the coming days. This patch is based on a previous WIP patch from Peter Eisentraut [1] [1] https://github.com/petere/postgresql/commit/90009ccd736e99d65c59b9078d14d76fffc2426a -- Matheus Alcantara EDB: https://www.enterprisedb.com --------------bvZNxXBLyMf2q0EoAegoovvX Content-Type: text/plain; charset=UTF-8; name="v1-0001-postgres_fdw-SCRAM-authentication-pass-through.patch" Content-Disposition: attachment; filename*0="v1-0001-postgres_fdw-SCRAM-authentication-pass-through.patch" Content-Transfer-Encoding: base64 RnJvbSA2NWZjYjhjOTU2NWM3ZjRiYTVjMjA0YWY3NzVjMjljNzZkNDc0YTU3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoZXVzIEFsY2FudGFyYSA8bXRocy5kZXZAcG0u bWU+CkRhdGU6IFR1ZSwgMTkgTm92IDIwMjQgMTU6Mzc6NTcgLTAzMDAKU3ViamVjdDogW1BB VENIIHYxXSBwb3N0Z3Jlc19mZHc6IFNDUkFNIGF1dGhlbnRpY2F0aW9uIHBhc3MtdGhyb3Vn aAoKVGhpcyBjb21taXQgZW5hYmxlIFNDUkFNIGF1dGhlbnRpY2F0aW9uIGZvciBwb3N0Z3Jl c19mZHcgd2hlbiBjb25uZWN0aW5nCnRvIGEgZmR3IHNlcnZlciB3aXRob3V0IGhhdmluZyB0 byBzdG9yZSBhIHBsYWluLXRleHQgcGFzc3dvcmQgb24gdXNlcgptYXBwaW5nIG9wdGlvbnMu CgpUaGlzIGlzIGRvbmUgYnkgc2F2aW5nIHRoZSBTQ1JBTSBDbGllbnRLZXkgYW5kIFNlcnZl cnlLZXkgZnJvbSB0aGUKY2xpZW50IGF1dGhlbnRpY2F0aW9uIGFuZCB1c2luZyB0aG9zZSBp bnN0ZWFkIG9mIHRoZSBwbGFpbi10ZXh0IHBhc3N3b3JkCmZvciB0aGUgc2VydmVyLXNpZGUg U0NSQU0gZXhjaGFuZ2UuCi0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUgICAg ICAgICAgICB8ICAxICsKIGNvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyAgICAg ICAgfCA2NyArKysrKysrKysrKysrKysrKysrKysrLS0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3 L21lc29uLmJ1aWxkICAgICAgICAgfCAgNSArKwogY29udHJpYi9wb3N0Z3Jlc19mZHcvb3B0 aW9uLmMgICAgICAgICAgICB8ICAzICsrCiBjb250cmliL3Bvc3RncmVzX2Zkdy90LzAwMV9h dXRoX3NjcmFtLnBsIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQv bGlicHEvYXV0aC1zY3JhbS5jICAgICAgICAgICB8IDE2ICsrKystLQogc3JjL2luY2x1ZGUv bGlicHEvbGlicHEtYmUuaCAgICAgICAgICAgICB8ICA5ICsrKysKIHNyYy9pbnRlcmZhY2Vz L2xpYnBxL2ZlLWF1dGgtc2NyYW0uYyAgICAgfCAyOSArKysrKysrKy0tCiBzcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1hdXRoLmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9pbnRlcmZhY2Vz L2xpYnBxL2ZlLWNvbm5lY3QuYyAgICAgICAgfCAzMSArKysrKysrKysrKwogc3JjL2ludGVy ZmFjZXMvbGlicHEvbGlicHEtaW50LmggICAgICAgICB8ICA2ICsrKwogMTEgZmlsZXMgY2hh bmdlZCwgMjE3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGNvbnRyaWIvcG9zdGdyZXNfZmR3L3QvMDAxX2F1dGhfc2NyYW0ucGwKCmRpZmYg LS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9NYWtlZmlsZSBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L01ha2VmaWxlCmluZGV4IDg4ZmRjZTQwZDYuLjZjMTJjOGU5MjUgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L01ha2VmaWxlCisrKyBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L01ha2VmaWxlCkBAIC04LDYgKzgsNyBAQCBPQkpTID0gXAogCW9wdGlvbi5vIFwK IAlwb3N0Z3Jlc19mZHcubyBcCiAJc2hpcHBhYmxlLm8KK1RBUF9URVNUUyA9IDEKIFBHRklM RURFU0MgPSAicG9zdGdyZXNfZmR3IC0gZm9yZWlnbiBkYXRhIHdyYXBwZXIgZm9yIFBvc3Rn cmVTUUwiCiAKIFBHX0NQUEZMQUdTID0gLUkkKGxpYnBxX3NyY2RpcikKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L2Nvbm5lY3Rpb24uYwppbmRleCAyMzI2ZjM5MWQzLi5lMGUxZWJlMGQ0IDEwMDY0NAot LS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKKysrIGIvY29udHJpYi9w b3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAi YWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3VzZXJfbWFwcGluZy5oIgog I2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgorI2luY2x1ZGUgImNvbW1vbi9iYXNlNjQu aCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEtYmUuaCIK ICNpbmNsdWRlICJsaWJwcS9saWJwcS1iZS1mZS1oZWxwZXJzLmgiCkBAIC0xNjgsNiArMTY5 LDcgQEAgc3RhdGljIHZvaWQgcGdmZHdfZmluaXNoX2Fib3J0X2NsZWFudXAoTGlzdCAqcGVu ZGluZ19lbnRyaWVzLAogc3RhdGljIHZvaWQgcGdmZHdfc2VjdXJpdHlfY2hlY2soY29uc3Qg Y2hhciAqKmtleXdvcmRzLCBjb25zdCBjaGFyICoqdmFsdWVzLAogCQkJCQkJCQkgVXNlck1h cHBpbmcgKnVzZXIsIFBHY29ubiAqY29ubik7CiBzdGF0aWMgYm9vbCBVc2VyTWFwcGluZ1Bh c3N3b3JkUmVxdWlyZWQoVXNlck1hcHBpbmcgKnVzZXIpOworc3RhdGljIGJvb2wgVXNlU2Ny YW1QYXNzdGhyb3VnaChGb3JlaWduU2VydmVyICpzZXJ2ZXIsIFVzZXJNYXBwaW5nICp1c2Vy KTsKIHN0YXRpYyBib29sIGRpc2Nvbm5lY3RfY2FjaGVkX2Nvbm5lY3Rpb25zKE9pZCBzZXJ2 ZXJpZCk7CiBzdGF0aWMgdm9pZCBwb3N0Z3Jlc19mZHdfZ2V0X2Nvbm5lY3Rpb25zX2ludGVy bmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkJCQkJCQkJICBlbnVtIHBnZmR3 VmVyc2lvbiBhcGlfdmVyc2lvbik7CkBAIC00NzYsNyArNDc4LDcgQEAgY29ubmVjdF9wZ19z ZXJ2ZXIoRm9yZWlnblNlcnZlciAqc2VydmVyLCBVc2VyTWFwcGluZyAqdXNlcikKIAkJICog Zm9yIGFwcGxpY2F0aW9uX25hbWUsIGZhbGxiYWNrX2FwcGxpY2F0aW9uX25hbWUsIGNsaWVu dF9lbmNvZGluZywKIAkJICogZW5kIG1hcmtlci4KIAkJICovCi0JCW4gPSBsaXN0X2xlbmd0 aChzZXJ2ZXItPm9wdGlvbnMpICsgbGlzdF9sZW5ndGgodXNlci0+b3B0aW9ucykgKyA0Owor CQluID0gbGlzdF9sZW5ndGgoc2VydmVyLT5vcHRpb25zKSArIGxpc3RfbGVuZ3RoKHVzZXIt Pm9wdGlvbnMpICsgNCArIDI7CiAJCWtleXdvcmRzID0gKGNvbnN0IGNoYXIgKiopIHBhbGxv YyhuICogc2l6ZW9mKGNoYXIgKikpOwogCQl2YWx1ZXMgPSAoY29uc3QgY2hhciAqKikgcGFs bG9jKG4gKiBzaXplb2YoY2hhciAqKSk7CiAKQEAgLTU0NSwxMCArNTQ3LDM3IEBAIGNvbm5l Y3RfcGdfc2VydmVyKEZvcmVpZ25TZXJ2ZXIgKnNlcnZlciwgVXNlck1hcHBpbmcgKnVzZXIp CiAJCXZhbHVlc1tuXSA9IEdldERhdGFiYXNlRW5jb2RpbmdOYW1lKCk7CiAJCW4rKzsKIAor CQlpZiAoTXlQcm9jUG9ydC0+aGFzX3NjcmFtX2tleXMgJiYgVXNlU2NyYW1QYXNzdGhyb3Vn aChzZXJ2ZXIsIHVzZXIpKQorCQl7CisJCQlpbnQJCQlsZW47CisKKwkJCWtleXdvcmRzW25d ID0gInNjcmFtX2NsaWVudF9rZXkiOworCQkJbGVuID0gcGdfYjY0X2VuY19sZW4oc2l6ZW9m KE15UHJvY1BvcnQtPnNjcmFtX0NsaWVudEtleSkpOworCQkJLyogZG9uJ3QgZm9yZ2V0IHRo ZSB6ZXJvLXRlcm1pbmF0b3IgKi8KKwkJCXZhbHVlc1tuXSA9IHBhbGxvYzAobGVuKzEpOwor CQkJcGdfYjY0X2VuY29kZSgoY29uc3QgY2hhciAqKSBNeVByb2NQb3J0LT5zY3JhbV9DbGll bnRLZXksCisJCQkJCQkgIHNpemVvZihNeVByb2NQb3J0LT5zY3JhbV9DbGllbnRLZXkpLAor CQkJCQkJICAoY2hhciAqKSB2YWx1ZXNbbl0sIGxlbik7CisJCQluKys7CisKKwkJCWtleXdv cmRzW25dID0gInNjcmFtX3NlcnZlcl9rZXkiOworCQkJbGVuID0gcGdfYjY0X2VuY19sZW4o c2l6ZW9mKE15UHJvY1BvcnQtPnNjcmFtX1NlcnZlcktleSkpOworCQkJLyogZG9uJ3QgZm9y Z2V0IHRoZSB6ZXJvLXRlcm1pbmF0b3IgKi8KKwkJCXZhbHVlc1tuXSA9IHBhbGxvYzAobGVu KzEpOworCQkJcGdfYjY0X2VuY29kZSgoY29uc3QgY2hhciAqKSBNeVByb2NQb3J0LT5zY3Jh bV9TZXJ2ZXJLZXksCisJCQkJCQkgIHNpemVvZihNeVByb2NQb3J0LT5zY3JhbV9TZXJ2ZXJL ZXkpLAorCQkJCQkJICAoY2hhciAqKSB2YWx1ZXNbbl0sIGxlbik7CisJCQluKys7CisJCX0K KwogCQlrZXl3b3Jkc1tuXSA9IHZhbHVlc1tuXSA9IE5VTEw7CiAKLQkJLyogdmVyaWZ5IHRo ZSBzZXQgb2YgY29ubmVjdGlvbiBwYXJhbWV0ZXJzICovCi0JCWNoZWNrX2Nvbm5fcGFyYW1z KGtleXdvcmRzLCB2YWx1ZXMsIHVzZXIpOworCQkvKgorCQkgKiBWZXJpZnkgdGhlIHNldCBv ZiBjb25uZWN0aW9uIHBhcmFtZXRlcnMgb25seSBpZiBzY3JhbSBwYXNzLXRocm91Z2gKKwkJ ICogaXMgbm90IGJlaW5nIHVzZWQgYmVjYXVzZSB0aGUgcGFzc3dvcmQgaXMgbm90IG5lY2Vz c2FyeS4KKwkJICovCisJCWlmICghKE15UHJvY1BvcnQtPmhhc19zY3JhbV9rZXlzICYmIFVz ZVNjcmFtUGFzc3Rocm91Z2goc2VydmVyLCB1c2VyKSkpCisJCQljaGVja19jb25uX3BhcmFt cyhrZXl3b3JkcywgdmFsdWVzLCB1c2VyKTsKIAogCQkvKiBmaXJzdCB0aW1lLCBhbGxvY2F0 ZSBvciBnZXQgdGhlIGN1c3RvbSB3YWl0IGV2ZW50ICovCiAJCWlmIChwZ2Zkd193ZV9jb25u ZWN0ID09IDApCkBAIC01NjYsOCArNTk1LDEyIEBAIGNvbm5lY3RfcGdfc2VydmVyKEZvcmVp Z25TZXJ2ZXIgKnNlcnZlciwgVXNlck1hcHBpbmcgKnVzZXIpCiAJCQkJCQkJc2VydmVyLT5z ZXJ2ZXJuYW1lKSwKIAkJCQkJIGVycmRldGFpbF9pbnRlcm5hbCgiJXMiLCBwY2hvbXAoUFFl cnJvck1lc3NhZ2UoY29ubikpKSkpOwogCi0JCS8qIFBlcmZvcm0gcG9zdC1jb25uZWN0aW9u IHNlY3VyaXR5IGNoZWNrcyAqLwotCQlwZ2Zkd19zZWN1cml0eV9jaGVjayhrZXl3b3Jkcywg dmFsdWVzLCB1c2VyLCBjb25uKTsKKwkJLyoKKwkJICogUGVyZm9ybSBwb3N0LWNvbm5lY3Rp b24gc2VjdXJpdHkgY2hlY2tzIG9ubHkgaWYgc2NyYW0gcGFzcy10aHJvdWdoCisJCSAqIGlz IG5vdCBiZWluZyB1c2VkIGJlY2F1c2UgdGhlIHBhc3N3b3JkIGlzIG5vdCBuZWNlc3Nhcnku CisJCSAqLworCQlpZiAoIShNeVByb2NQb3J0LT5oYXNfc2NyYW1fa2V5cyAmJiBVc2VTY3Jh bVBhc3N0aHJvdWdoKHNlcnZlciwgdXNlcikpKQorCQkJcGdmZHdfc2VjdXJpdHlfY2hlY2so a2V5d29yZHMsIHZhbHVlcywgdXNlciwgY29ubik7CiAKIAkJLyogUHJlcGFyZSBuZXcgc2Vz c2lvbiBmb3IgdXNlICovCiAJCWNvbmZpZ3VyZV9yZW1vdGVfc2Vzc2lvbihjb25uKTsKQEAg LTYyMCw2ICs2NTMsMzAgQEAgVXNlck1hcHBpbmdQYXNzd29yZFJlcXVpcmVkKFVzZXJNYXBw aW5nICp1c2VyKQogCXJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbAorVXNlU2NyYW1Q YXNzdGhyb3VnaChGb3JlaWduU2VydmVyICpzZXJ2ZXIsIFVzZXJNYXBwaW5nICp1c2VyKQor eworCUxpc3RDZWxsICAgKmNlbGw7CisKKwlmb3JlYWNoKGNlbGwsIHNlcnZlci0+b3B0aW9u cykKKwl7CisJCURlZkVsZW0gICAgKmRlZiA9IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsK KworCQlpZiAoc3RyY21wKGRlZi0+ZGVmbmFtZSwgInVzZV9zY3JhbV9wYXNzdGhyb3VnaCIp ID09IDApCisJCQlyZXR1cm4gZGVmR2V0Qm9vbGVhbihkZWYpOworCX0KKworCWZvcmVhY2go Y2VsbCwgdXNlci0+b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAgKmRlZiA9IChEZWZFbGVt ICopIGxmaXJzdChjZWxsKTsKKworCQlpZiAoc3RyY21wKGRlZi0+ZGVmbmFtZSwgInVzZV9z Y3JhbV9wYXNzdGhyb3VnaCIpID09IDApCisJCQlyZXR1cm4gZGVmR2V0Qm9vbGVhbihkZWYp OworCX0KKworCXJldHVybiBmYWxzZTsKK30KKwogLyoKICAqIEZvciBub24tc3VwZXJ1c2Vy cywgaW5zaXN0IHRoYXQgdGhlIGNvbm5zdHIgc3BlY2lmeSBhIHBhc3N3b3JkIG9yIHRoYXQg dGhlCiAgKiB1c2VyIHByb3ZpZGVkIHRoZWlyIG93biBHU1NBUEkgZGVsZWdhdGVkIGNyZWRl bnRpYWxzLiAgVGhpcwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvbWVzb24u YnVpbGQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9tZXNvbi5idWlsZAppbmRleCAzMDE0MDg2 YmE2Li4yN2QwNzE4OGZjIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9tZXNv bi5idWlsZAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9tZXNvbi5idWlsZApAQCAtNDEs NCArNDEsOSBAQCB0ZXN0cyArPSB7CiAgICAgXSwKICAgICAncmVncmVzc19hcmdzJzogWyct LWRscGF0aCcsIG1lc29uLmJ1aWxkX3Jvb3QoKSAvICdzcmMvdGVzdC9yZWdyZXNzJ10sCiAg IH0sCisgICd0YXAnOiB7CisgICAgICAndGVzdHMnOiBbCisgICAgICAgICd0LzAwMV9hdXRo X3NjcmFtLnBsJywKKyAgICAgIF0sCisgIH0sCiB9CmRpZmYgLS1naXQgYS9jb250cmliL3Bv c3RncmVzX2Zkdy9vcHRpb24uYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L29wdGlvbi5jCmlu ZGV4IDIzMmQ4NTM1NGIuLjE1YWJjNjQzODEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L29wdGlvbi5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L29wdGlvbi5jCkBA IC0yNzksNiArMjc5LDkgQEAgSW5pdFBnRmR3T3B0aW9ucyh2b2lkKQogCQl7ImFuYWx5emVf c2FtcGxpbmciLCBGb3JlaWduU2VydmVyUmVsYXRpb25JZCwgZmFsc2V9LAogCQl7ImFuYWx5 emVfc2FtcGxpbmciLCBGb3JlaWduVGFibGVSZWxhdGlvbklkLCBmYWxzZX0sCiAKKwkJeyJ1 c2Vfc2NyYW1fcGFzc3Rocm91Z2giLCBGb3JlaWduU2VydmVyUmVsYXRpb25JZCwgZmFsc2V9 LAorCQl7InVzZV9zY3JhbV9wYXNzdGhyb3VnaCIsIFVzZXJNYXBwaW5nUmVsYXRpb25JZCwg ZmFsc2V9LAorCiAJCS8qCiAJCSAqIHNzbGNlcnQgYW5kIHNzbGtleSBhcmUgaW4gZmFjdCBs aWJwcSBvcHRpb25zLCBidXQgd2UgcmVwZWF0IHRoZW0KIAkJICogaGVyZSB0byBhbGxvdyB0 aGVtIHRvIGFwcGVhciBpbiBib3RoIGZvcmVpZ24gc2VydmVyIGNvbnRleHQgKHdoZW4KZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3QvMDAxX2F1dGhfc2NyYW0ucGwgYi9j b250cmliL3Bvc3RncmVzX2Zkdy90LzAwMV9hdXRoX3NjcmFtLnBsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjM4OGQyMTc5ZGIKLS0tIC9kZXYvbnVsbAorKysg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy90LzAwMV9hdXRoX3NjcmFtLnBsCkBAIC0wLDAgKzEs NjIgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCBTQ1JBTSBhdXRoZW50aWNhdGlvbiBwYXNzIHRo cm91Z2ggdGhlIGludGVybWVkaWFyeSBwb3N0Z3Jlc19mZHcgdG8gdGhlIHNlcnZlcgorCit1 c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2Ug VGVzdDo6TW9yZTsKKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ25vZGUnKTsKK215ICRob3N0YWRkciA9ICcxMjcuMC4wLjEnOworbXkgJHVzZXIgPSAi dXNlcjAxIjsKK215ICRkYjEgPSAiZGIxIjsKK215ICRkYjIgPSAiZGIyIjsKK215ICRmZHdf c2VydmVyID0gImRiMl9mZHciOworbXkgJGhvc3QgPSAkbm9kZS0+aG9zdDsKK215ICRwb3J0 ID0gJG5vZGUtPnBvcnQ7CitteSAkY29ubnN0ciA9ICRub2RlLT5jb25uc3RyKCRkYjEpIC4g cXEnIHVzZXI9JHVzZXInOworCiskbm9kZS0+aW5pdDsKKyRub2RlLT5zdGFydDsKKworIyBU ZXN0IHNldHVwCisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEnQ1JFQVRFIFVT RVIgJHVzZXIgV0lUSCBwYXNzd29yZCBcJ3Bhc3NcJyAnKTsKKyRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXEnQ1JFQVRFIERBVEFCQVNFICRkYjEnKTsKKyRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXEnQ1JFQVRFIERBVEFCQVNFICRkYjInKTsKKworJG5vZGUtPnNh ZmVfcHNxbCgkZGIyLCAnQ1JFQVRFIFRBQkxFIHQgQVMgU0VMRUNUIGcsZysxIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTApIGcoZyknKTsKKyRub2RlLT5zYWZlX3BzcWwoJGRiMiwgcXEn R1JBTlQgVVNBR0UgT04gU0NIRU1BIHB1YmxpYyB0byAkdXNlcicpOworJG5vZGUtPnNhZmVf cHNxbCgkZGIyLCBxcSdHUkFOVCBTRUxFQ1QgT04gdCB0byAkdXNlcicpOworCiskbm9kZS0+ c2FmZV9wc3FsKCRkYjEsICdDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcG9zdGdy ZXNfZmR3Jyk7Ciskbm9kZS0+c2FmZV9wc3FsKCRkYjEsIHFxJ0NSRUFURSBTRVJWRVIgJGZk d19zZXJ2ZXIgRk9SRUlHTiBEQVRBIFdSQVBQRVIgcG9zdGdyZXNfZmR3IG9wdGlvbnMgKAor CWhvc3QgXCckaG9zdFwnLCBwb3J0IFwnJHBvcnRcJywgZGJuYW1lIFwnJGRiMlwnLCB1c2Vf c2NyYW1fcGFzc3Rocm91Z2ggXCd0cnVlXCcpICcpOworIyBwYXNzd29yZCBub3QgcmVxdWly ZWQKKyRub2RlLT5zYWZlX3BzcWwoJGRiMSwgcXEnQ1JFQVRFIFVTRVIgTUFQUElORyBGT1Ig JHVzZXIgU0VSVkVSICRmZHdfc2VydmVyIE9QVElPTlMgKHVzZXIgXCckdXNlclwnKTsnKTsK KyRub2RlLT5zYWZlX3BzcWwoJGRiMSwgcXEnR1JBTlQgVVNBR0UgT04gRk9SRUlHTiBTRVJW RVIgJGZkd19zZXJ2ZXIgdG8gJHVzZXI7Jyk7Ciskbm9kZS0+c2FmZV9wc3FsKCRkYjEsIHFx J0dSQU5UIEFMTCBPTiBTQ0hFTUEgcHVibGljIHRvICR1c2VyJyk7CisKK3VubGluaygkbm9k ZS0+ZGF0YV9kaXIgLiAnL3BnX2hiYS5jb25mJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoCisJ J3BnX2hiYS5jb25mJywgcXF7Citsb2NhbCAgIGFsbCAgICAgICAgICAgICBhbGwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyYW0tc2hhLTI1NgoraG9zdCAgICBh bGwgICAgICAgICAgICAgYWxsICAgICAgICAgICAgICRob3N0YWRkci8zMiAgICAgICAgICAg IHNjcmFtLXNoYS0yNTYKK30pOworJG5vZGUtPnJlc3RhcnQ7CisKKyMgRW5kIG9mIHRlc3Qg c2V0dXAKKworJEVOVntQR1BBU1NXT1JEfSA9ICJwYXNzIjsKKworJG5vZGUtPnNhZmVfcHNx bCgkZGIxLCBxcSdJTVBPUlQgRk9SRUlHTiBTQ0hFTUEgcHVibGljIExJTUlUIFRPKHQpIEZS T00gU0VSVkVSICRmZHdfc2VydmVyIElOVE8gcHVibGljIDsnLAorCWNvbm5zdHI9PiRjb25u c3RyKTsKKworbXkgJHJldCA9ICRub2RlLT5zYWZlX3BzcWwoJGRiMSwgJ1NFTEVDVCBjb3Vu dCgxKSBGUk9NIHQnLAorCWNvbm5zdHI9PiRjb25uc3RyKTsKK2lzKCRyZXQsICcxMCcsICdT RUxFQ1QgY291bnQgZnJvbSBmZHcgc2VydmVyIHJldHVybnMgMTAnKTsKKworCitkb25lX3Rl c3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGgtc2NyYW0uYyBi L3NyYy9iYWNrZW5kL2xpYnBxL2F1dGgtc2NyYW0uYwppbmRleCA4YzViNmQ5YzY3Li44OGEx NWNjMGU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9hdXRoLXNjcmFtLmMKKysr IGIvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC1zY3JhbS5jCkBAIC0xMDEsNiArMTAxLDcgQEAK ICNpbmNsdWRlICJsaWJwcS9jcnlwdC5oIgogI2luY2x1ZGUgImxpYnBxL3Nhc2wuaCIKICNp bmNsdWRlICJsaWJwcS9zY3JhbS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogCiBzdGF0 aWMgdm9pZCBzY3JhbV9nZXRfbWVjaGFuaXNtcyhQb3J0ICpwb3J0LCBTdHJpbmdJbmZvIGJ1 Zik7CiBzdGF0aWMgdm9pZCAqc2NyYW1faW5pdChQb3J0ICpwb3J0LCBjb25zdCBjaGFyICpz ZWxlY3RlZF9tZWNoLApAQCAtMTQ0LDYgKzE0NSw3IEBAIHR5cGVkZWYgc3RydWN0CiAKIAlp bnQJCQlpdGVyYXRpb25zOwogCWNoYXIJICAgKnNhbHQ7CQkJLyogYmFzZTY0LWVuY29kZWQg Ki8KKwl1aW50OAkJQ2xpZW50S2V5W1NDUkFNX01BWF9LRVlfTEVOXTsKIAl1aW50OAkJU3Rv cmVkS2V5W1NDUkFNX01BWF9LRVlfTEVOXTsKIAl1aW50OAkJU2VydmVyS2V5W1NDUkFNX01B WF9LRVlfTEVOXTsKIApAQCAtNDYyLDYgKzQ2NCwxMyBAQCBzY3JhbV9leGNoYW5nZSh2b2lk ICpvcGFxLCBjb25zdCBjaGFyICppbnB1dCwgaW50IGlucHV0bGVuLAogCWlmICgqb3V0cHV0 KQogCQkqb3V0cHV0bGVuID0gc3RybGVuKCpvdXRwdXQpOwogCisJaWYgKHJlc3VsdCA9PSBQ R19TQVNMX0VYQ0hBTkdFX1NVQ0NFU1MgJiYgc3RhdGUtPnN0YXRlID09IFNDUkFNX0FVVEhf RklOSVNIRUQpCisJeworCQltZW1jcHkoTXlQcm9jUG9ydC0+c2NyYW1fQ2xpZW50S2V5LCBz dGF0ZS0+Q2xpZW50S2V5LCBzaXplb2YoTXlQcm9jUG9ydC0+c2NyYW1fQ2xpZW50S2V5KSk7 CisJCW1lbWNweShNeVByb2NQb3J0LT5zY3JhbV9TZXJ2ZXJLZXksIHN0YXRlLT5TZXJ2ZXJL ZXksIHNpemVvZihNeVByb2NQb3J0LT5zY3JhbV9TZXJ2ZXJLZXkpKTsKKwkJTXlQcm9jUG9y dC0+aGFzX3NjcmFtX2tleXMgPSB0cnVlOworCX0KKwogCXJldHVybiByZXN1bHQ7CiB9CiAK QEAgLTExNDAsOSArMTE0OSw4IEBAIHN0YXRpYyBib29sCiB2ZXJpZnlfY2xpZW50X3Byb29m KHNjcmFtX3N0YXRlICpzdGF0ZSkKIHsKIAl1aW50OAkJQ2xpZW50U2lnbmF0dXJlW1NDUkFN X01BWF9LRVlfTEVOXTsKLQl1aW50OAkJQ2xpZW50S2V5W1NDUkFNX01BWF9LRVlfTEVOXTsK IAl1aW50OAkJY2xpZW50X1N0b3JlZEtleVtTQ1JBTV9NQVhfS0VZX0xFTl07Ci0JcGdfaG1h Y19jdHggKmN0eCA9IHBnX2htYWNfY3JlYXRlKHN0YXRlLT5oYXNoX3R5cGUpOworCXBnX2ht YWNfY3R4ICpjdHggPSBwZ19obWFjX2NyZWF0ZShQR19TSEEyNTYpOwogCWludAkJCWk7CiAJ Y29uc3QgY2hhciAqZXJyc3RyID0gTlVMTDsKIApAQCAtMTE3MywxMCArMTE4MSwxMCBAQCB2 ZXJpZnlfY2xpZW50X3Byb29mKHNjcmFtX3N0YXRlICpzdGF0ZSkKIAogCS8qIEV4dHJhY3Qg dGhlIENsaWVudEtleSB0aGF0IHRoZSBjbGllbnQgY2FsY3VsYXRlZCBmcm9tIHRoZSBwcm9v ZiAqLwogCWZvciAoaSA9IDA7IGkgPCBzdGF0ZS0+a2V5X2xlbmd0aDsgaSsrKQotCQlDbGll bnRLZXlbaV0gPSBzdGF0ZS0+Q2xpZW50UHJvb2ZbaV0gXiBDbGllbnRTaWduYXR1cmVbaV07 CisJCXN0YXRlLT5DbGllbnRLZXlbaV0gPSBzdGF0ZS0+Q2xpZW50UHJvb2ZbaV0gXiBDbGll bnRTaWduYXR1cmVbaV07CiAKIAkvKiBIYXNoIGl0IG9uZSBtb3JlIHRpbWUsIGFuZCBjb21w YXJlIHdpdGggU3RvcmVkS2V5ICovCi0JaWYgKHNjcmFtX0goQ2xpZW50S2V5LCBzdGF0ZS0+ aGFzaF90eXBlLCBzdGF0ZS0+a2V5X2xlbmd0aCwKKwlpZiAoc2NyYW1fSChzdGF0ZS0+Q2xp ZW50S2V5LCBzdGF0ZS0+aGFzaF90eXBlLCBzdGF0ZS0+a2V5X2xlbmd0aCwKIAkJCQljbGll bnRfU3RvcmVkS2V5LCAmZXJyc3RyKSA8IDApCiAJCWVsb2coRVJST1IsICJjb3VsZCBub3Qg aGFzaCBzdG9yZWQga2V5OiAlcyIsIGVycnN0cik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2xpYnBxL2xpYnBxLWJlLmggYi9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS5oCmlu ZGV4IDkxMDliMmMzMzQuLjRlYjllODA1MjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xp YnBxL2xpYnBxLWJlLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUuaApAQCAt MTgsNiArMTgsOCBAQAogI2lmbmRlZiBMSUJQUV9CRV9ICiAjZGVmaW5lIExJQlBRX0JFX0gK IAorI2luY2x1ZGUgImNvbW1vbi9zY3JhbS1jb21tb24uaCIKKwogI2luY2x1ZGUgPHN5cy90 aW1lLmg+CiAjaWZkZWYgVVNFX09QRU5TU0wKICNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgpA QCAtMTgxLDYgKzE4MywxMyBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0CiAJaW50CQkJa2VlcGFs aXZlc19jb3VudDsKIAlpbnQJCQl0Y3BfdXNlcl90aW1lb3V0OwogCisJLyoKKwkgKiBTQ1JB TSBzdHJ1Y3R1cmVzLgorCSAqLworCXVpbnQ4CQlzY3JhbV9DbGllbnRLZXlbU0NSQU1fTUFY X0tFWV9MRU5dOworCXVpbnQ4CQlzY3JhbV9TZXJ2ZXJLZXlbU0NSQU1fTUFYX0tFWV9MRU5d OworCWJvb2wJCWhhc19zY3JhbV9rZXlzOyAvKiB0cnVlIGlmIHRoZSBhYm92ZSB0d28gYXJl IHZhbGlkICovCisKIAkvKgogCSAqIEdTU0FQSSBzdHJ1Y3R1cmVzLgogCSAqLwpkaWZmIC0t Z2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1zY3JhbS5jIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtYXV0aC1zY3JhbS5jCmluZGV4IDBiYjgyMGUwZDkuLjdiZWI1YTlk MzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtc2NyYW0uYwor KysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLXNjcmFtLmMKQEAgLTExOSw2ICsx MTksOCBAQCBzY3JhbV9pbml0KFBHY29ubiAqY29ubiwKIAkJcmV0dXJuIE5VTEw7CiAJfQog CisJaWYgKHBhc3N3b3JkKQorCXsKIAkvKiBOb3JtYWxpemUgdGhlIHBhc3N3b3JkIHdpdGgg U0FTTHByZXAsIGlmIHBvc3NpYmxlICovCiAJcmMgPSBwZ19zYXNscHJlcChwYXNzd29yZCwg JnByZXBfcGFzc3dvcmQpOwogCWlmIChyYyA9PSBTQVNMUFJFUF9PT00pCkBAIC0xMzgsNiAr MTQwLDcgQEAgc2NyYW1faW5pdChQR2Nvbm4gKmNvbm4sCiAJCX0KIAl9CiAJc3RhdGUtPnBh c3N3b3JkID0gcHJlcF9wYXNzd29yZDsKKwl9CiAKIAlyZXR1cm4gc3RhdGU7CiB9CkBAIC03 NzUsNiArNzc4LDEyIEBAIGNhbGN1bGF0ZV9jbGllbnRfcHJvb2YoZmVfc2NyYW1fc3RhdGUg KnN0YXRlLAogCQlyZXR1cm4gZmFsc2U7CiAJfQogCisJaWYgKHN0YXRlLT5jb25uLT5zY3Jh bV9jbGllbnRfa2V5X2JpbmFyeSkKKwl7CisJCW1lbWNweShDbGllbnRLZXksIHN0YXRlLT5j b25uLT5zY3JhbV9jbGllbnRfa2V5X2JpbmFyeSwgU0NSQU1fTUFYX0tFWV9MRU4pOworCX0K KwllbHNlCisJewogCS8qCiAJICogQ2FsY3VsYXRlIFNhbHRlZFBhc3N3b3JkLCBhbmQgc3Rv cmUgaXQgaW4gJ3N0YXRlJyBzbyB0aGF0IHdlIGNhbiByZXVzZQogCSAqIGl0IGxhdGVyIGlu IHZlcmlmeV9zZXJ2ZXJfc2lnbmF0dXJlLgpAQCAtNzgzLDE1ICs3OTIsMjAgQEAgY2FsY3Vs YXRlX2NsaWVudF9wcm9vZihmZV9zY3JhbV9zdGF0ZSAqc3RhdGUsCiAJCQkJCQkJIHN0YXRl LT5rZXlfbGVuZ3RoLCBzdGF0ZS0+c2FsdCwgc3RhdGUtPnNhbHRsZW4sCiAJCQkJCQkJIHN0 YXRlLT5pdGVyYXRpb25zLCBzdGF0ZS0+U2FsdGVkUGFzc3dvcmQsCiAJCQkJCQkJIGVycnN0 cikgPCAwIHx8Ci0JCXNjcmFtX0NsaWVudEtleShzdGF0ZS0+U2FsdGVkUGFzc3dvcmQsIHN0 YXRlLT5oYXNoX3R5cGUsCi0JCQkJCQlzdGF0ZS0+a2V5X2xlbmd0aCwgQ2xpZW50S2V5LCBl cnJzdHIpIDwgMCB8fAotCQlzY3JhbV9IKENsaWVudEtleSwgc3RhdGUtPmhhc2hfdHlwZSwg c3RhdGUtPmtleV9sZW5ndGgsCi0JCQkJU3RvcmVkS2V5LCBlcnJzdHIpIDwgMCkKKwkJCXNj cmFtX0NsaWVudEtleShzdGF0ZS0+U2FsdGVkUGFzc3dvcmQsIHN0YXRlLT5oYXNoX3R5cGUs CisJCQkJCQlzdGF0ZS0+a2V5X2xlbmd0aCwgQ2xpZW50S2V5LCBlcnJzdHIpIDwgMCkKIAl7 CiAJCS8qIGVycnN0ciBpcyBhbHJlYWR5IGZpbGxlZCBoZXJlICovCiAJCXBnX2htYWNfZnJl ZShjdHgpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQorCX0KKworCWlmIChzY3JhbV9IKENsaWVu dEtleSwgc3RhdGUtPmhhc2hfdHlwZSwgc3RhdGUtPmtleV9sZW5ndGgsIFN0b3JlZEtleSwg ZXJyc3RyKSAgPCAwKQorCXsKKwkJcGdfaG1hY19mcmVlKGN0eCk7CisJCXJldHVybiBmYWxz ZTsKKwl9CiAKIAlpZiAocGdfaG1hY19pbml0KGN0eCwgU3RvcmVkS2V5LCBzdGF0ZS0+a2V5 X2xlbmd0aCkgPCAwIHx8CiAJCXBnX2htYWNfdXBkYXRlKGN0eCwKQEAgLTg0MSw2ICs4NTUs MTIgQEAgdmVyaWZ5X3NlcnZlcl9zaWduYXR1cmUoZmVfc2NyYW1fc3RhdGUgKnN0YXRlLCBi b29sICptYXRjaCwKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAorCWlmIChzdGF0ZS0+Y29ubi0+ c2NyYW1fc2VydmVyX2tleV9iaW5hcnkpCisJeworCQltZW1jcHkoU2VydmVyS2V5LCBzdGF0 ZS0+Y29ubi0+c2NyYW1fc2VydmVyX2tleV9iaW5hcnksIFNDUkFNX01BWF9LRVlfTEVOKTsK Kwl9CisJZWxzZQorCXsKIAlpZiAoc2NyYW1fU2VydmVyS2V5KHN0YXRlLT5TYWx0ZWRQYXNz d29yZCwgc3RhdGUtPmhhc2hfdHlwZSwKIAkJCQkJCXN0YXRlLT5rZXlfbGVuZ3RoLCBTZXJ2 ZXJLZXksIGVycnN0cikgPCAwKQogCXsKQEAgLTg0OCw2ICs4NjgsNyBAQCB2ZXJpZnlfc2Vy dmVyX3NpZ25hdHVyZShmZV9zY3JhbV9zdGF0ZSAqc3RhdGUsIGJvb2wgKm1hdGNoLAogCQlw Z19obWFjX2ZyZWUoY3R4KTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KKwl9CiAKIAkvKiBjYWxj dWxhdGUgU2VydmVyU2lnbmF0dXJlICovCiAJaWYgKHBnX2htYWNfaW5pdChjdHgsIFNlcnZl cktleSwgc3RhdGUtPmtleV9sZW5ndGgpIDwgMCB8fApkaWZmIC0tZ2l0IGEvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtYXV0aC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC5j CmluZGV4IDIwZDM0MjdlOTQuLmVmMWM5NjVjZDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWF1dGguYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRo LmMKQEAgLTU1OSw3ICs1NTksNyBAQCBwZ19TQVNMX2luaXQoUEdjb25uICpjb25uLCBpbnQg cGF5bG9hZGxlbikKIAkgKiBGaXJzdCwgc2VsZWN0IHRoZSBwYXNzd29yZCB0byB1c2UgZm9y IHRoZSBleGNoYW5nZSwgY29tcGxhaW5pbmcgaWYKIAkgKiB0aGVyZSBpc24ndCBvbmUgYW5k IHRoZSBzZWxlY3RlZCBTQVNMIG1lY2hhbmlzbSBuZWVkcyBpdC4KIAkgKi8KLQlpZiAoY29u bi0+cGFzc3dvcmRfbmVlZGVkKQorCWlmIChjb25uLT5wYXNzd29yZF9uZWVkZWQgJiYgIWNv bm4tPnNjcmFtX2NsaWVudF9rZXlfYmluYXJ5KQogCXsKIAkJcGFzc3dvcmQgPSBjb25uLT5j b25uaG9zdFtjb25uLT53aGljaGhvc3RdLnBhc3N3b3JkOwogCQlpZiAocGFzc3dvcmQgPT0g TlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYwppbmRleCBhYWY4N2U4ZTg4Li40 NjRjZWZkOTAxIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0 LmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCkBAIC0yMiw2ICsy Miw3IEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCisjaW5j bHVkZSAiY29tbW9uL2Jhc2U2NC5oIgogI2luY2x1ZGUgImNvbW1vbi9pcC5oIgogI2luY2x1 ZGUgImNvbW1vbi9saW5rLWNhbmFyeS5oIgogI2luY2x1ZGUgImNvbW1vbi9zY3JhbS1jb21t b24uaCIKQEAgLTM2NSw2ICszNjYsMTIgQEAgc3RhdGljIGNvbnN0IGludGVybmFsUFFjb25u aW5mb09wdGlvbiBQUWNvbm5pbmZvT3B0aW9uc1tdID0gewogCQkiTG9hZC1CYWxhbmNlLUhv c3RzIiwgIiIsIDgsCS8qIHNpemVvZigiZGlzYWJsZSIpID0gOCAqLwogCW9mZnNldG9mKHN0 cnVjdCBwZ19jb25uLCBsb2FkX2JhbGFuY2VfaG9zdHMpfSwKIAorCXsic2NyYW1fY2xpZW50 X2tleSIsIE5VTEwsIE5VTEwsIE5VTEwsICJTQ1JBTS1DbGllbnQtS2V5IiwgIkQiLCBTQ1JB TV9NQVhfS0VZX0xFTiAqIDIsCisJb2Zmc2V0b2Yoc3RydWN0IHBnX2Nvbm4sIHNjcmFtX2Ns aWVudF9rZXkpfSwKKworCXsic2NyYW1fc2VydmVyX2tleSIsIE5VTEwsIE5VTEwsIE5VTEws ICJTQ1JBTS1TZXJ2ZXItS2V5IiwgIkQiLCBTQ1JBTV9NQVhfS0VZX0xFTiAqIDIsCisJb2Zm c2V0b2Yoc3RydWN0IHBnX2Nvbm4sIHNjcmFtX3NlcnZlcl9rZXkpfSwKKwogCS8qIFRlcm1p bmF0aW5nIGVudHJ5IC0tLSBNVVNUIEJFIExBU1QgKi8KIAl7TlVMTCwgTlVMTCwgTlVMTCwg TlVMTCwKIAlOVUxMLCBOVUxMLCAwfQpAQCAtMTc5Miw2ICsxNzk5LDI4IEBAIHBxQ29ubmVj dE9wdGlvbnMyKFBHY29ubiAqY29ubikKIAllbHNlCiAJCWNvbm4tPnRhcmdldF9zZXJ2ZXJf dHlwZSA9IFNFUlZFUl9UWVBFX0FOWTsKIAorCWlmIChjb25uLT5zY3JhbV9jbGllbnRfa2V5 KQorCXsKKwkJaW50CQkJbGVuOworCisJCWxlbiA9IHBnX2I2NF9kZWNfbGVuKHN0cmxlbihj b25uLT5zY3JhbV9jbGllbnRfa2V5KSk7CisJCWNvbm4tPnNjcmFtX2NsaWVudF9rZXlfbGVu ID0gbGVuOworCQljb25uLT5zY3JhbV9jbGllbnRfa2V5X2JpbmFyeSA9IG1hbGxvYyhsZW4p OworCQlwZ19iNjRfZGVjb2RlKGNvbm4tPnNjcmFtX2NsaWVudF9rZXksIHN0cmxlbihjb25u LT5zY3JhbV9jbGllbnRfa2V5KSwKKwkJCQkJICBjb25uLT5zY3JhbV9jbGllbnRfa2V5X2Jp bmFyeSwgbGVuKTsKKwl9CisKKwlpZiAoY29ubi0+c2NyYW1fc2VydmVyX2tleSkKKwl7CisJ CWludAkJCWxlbjsKKworCQlsZW4gPSBwZ19iNjRfZGVjX2xlbihzdHJsZW4oY29ubi0+c2Ny YW1fc2VydmVyX2tleSkpOworCQljb25uLT5zY3JhbV9zZXJ2ZXJfa2V5X2xlbiA9IGxlbjsK KwkJY29ubi0+c2NyYW1fc2VydmVyX2tleV9iaW5hcnkgPSBtYWxsb2MobGVuKTsKKwkJcGdf YjY0X2RlY29kZShjb25uLT5zY3JhbV9zZXJ2ZXJfa2V5LCBzdHJsZW4oY29ubi0+c2NyYW1f c2VydmVyX2tleSksCisJCQkJCSAgY29ubi0+c2NyYW1fc2VydmVyX2tleV9iaW5hcnksIGxl bik7CisJfQorCiAJLyoKIAkgKiB2YWxpZGF0ZSBsb2FkX2JhbGFuY2VfaG9zdHMgb3B0aW9u LCBhbmQgc2V0IGxvYWRfYmFsYW5jZV90eXBlCiAJICovCkBAIC00NzAzLDYgKzQ3MzIsOCBA QCBmcmVlUEdjb25uKFBHY29ubiAqY29ubikKIAlmcmVlKGNvbm4tPnJvd0J1Zik7CiAJZnJl ZShjb25uLT50YXJnZXRfc2Vzc2lvbl9hdHRycyk7CiAJZnJlZShjb25uLT5sb2FkX2JhbGFu Y2VfaG9zdHMpOworCWZyZWUoY29ubi0+c2NyYW1fY2xpZW50X2tleSk7CisJZnJlZShjb25u LT5zY3JhbV9zZXJ2ZXJfa2V5KTsKIAl0ZXJtUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVz c2FnZSk7CiAJdGVybVBRRXhwQnVmZmVyKCZjb25uLT53b3JrQnVmZmVyKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNl cy9saWJwcS9saWJwcS1pbnQuaAppbmRleCAwOGNjMzkxY2JkLi4xN2I4MWM4MWY0IDEwMDY0 NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaAorKysgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaApAQCAtNDI3LDYgKzQyNyw4IEBAIHN0cnVjdCBw Z19jb25uCiAJY2hhcgkgICAqdGFyZ2V0X3Nlc3Npb25fYXR0cnM7CS8qIGRlc2lyZWQgc2Vz c2lvbiBwcm9wZXJ0aWVzICovCiAJY2hhcgkgICAqcmVxdWlyZV9hdXRoOwkvKiBuYW1lIG9m IHRoZSBleHBlY3RlZCBhdXRoIG1ldGhvZCAqLwogCWNoYXIJICAgKmxvYWRfYmFsYW5jZV9o b3N0czsgLyogbG9hZCBiYWxhbmNlIG92ZXIgaG9zdHMgKi8KKwljaGFyCSAgICpzY3JhbV9j bGllbnRfa2V5OworCWNoYXIJICAgKnNjcmFtX3NlcnZlcl9rZXk7CiAKIAlib29sCQljYW5j ZWxSZXF1ZXN0OwkvKiB0cnVlIGlmIHRoaXMgY29ubmVjdGlvbiBpcyB1c2VkIHRvIHNlbmQg YQogCQkJCQkJCQkgKiBjYW5jZWwgcmVxdWVzdCwgaW5zdGVhZCBvZiBiZWluZyBhIG5vcm1h bApAQCAtNTE3LDYgKzUxOSwxMCBAQCBzdHJ1Y3QgcGdfY29ubgogCUFkZHJJbmZvICAgKmFk ZHI7CQkJLyogdGhlIGFycmF5IG9mIGFkZHJlc3NlcyBmb3IgdGhlIGN1cnJlbnRseQogCQkJ CQkJCQkgKiB0cmllZCBob3N0ICovCiAJYm9vbAkJc2VuZF9hcHBuYW1lOwkvKiBva2F5IHRv IHNlbmQgYXBwbGljYXRpb25fbmFtZT8gKi8KKwlzaXplX3QJCXNjcmFtX2NsaWVudF9rZXlf bGVuOworCWNoYXIJICAgKnNjcmFtX2NsaWVudF9rZXlfYmluYXJ5OworCXNpemVfdAkJc2Ny YW1fc2VydmVyX2tleV9sZW47CisJY2hhcgkgICAqc2NyYW1fc2VydmVyX2tleV9iaW5hcnk7 CiAKIAkvKiBNaXNjZWxsYW5lb3VzIHN0dWZmICovCiAJaW50CQkJYmVfcGlkOwkJCS8qIFBJ RCBvZiBiYWNrZW5kIC0tLSBuZWVkZWQgZm9yIGNhbmNlbHMgKi8KLS0gCjIuMzkuMyAoQXBw bGUgR2l0LTE0NikKCg== --------------bvZNxXBLyMf2q0EoAegoovvX--