[PATCH] TPM SSL support

Thomas Habets <[email protected]> Wed, 30 May 2012 21:56:27 +0100
Newsgroups gmane.network.irc.irssi.devel
Message-ID <CA+kHd+dXfT4auEEt6u=kfUqsR9hJotHPXjhP9E8o0Lqd=H3c2w@mail.gmail.com>
--0016e6de00d39c63b404c147303d
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Attached is a patch to add support for the OpenSSL TPM engine.
In short this means that you can use a TPM chip to "lock" your SSL
client certificate to a physical machine.

More details on SSL and TPM here:
http://blog.habets.pp.se/2012/02/TPM-backed-SSL

Patched irssi here: https://github.com/ThomasHabets/irssi

--=20
typedef struct me_s {
=C2=A0char name[] =C2=A0 =C2=A0 =C2=A0=3D { "Thomas Habets" };
=C2=A0char email[] =C2=A0 =C2=A0 =3D { "[email protected]" };
=C2=A0char kernel[] =C2=A0 =C2=A0=3D { "Linux" };
=C2=A0char *pgpKey[] =C2=A0 =3D { "http://www.habets.pp.se/pubkey.txt" };
=C2=A0char pgp[] =3D { "A8A3 D1DD 4AE0 8467 7FDE =C2=A00945 286A E90A AD48 =
E854" };
=C2=A0char coolcmd[] =C2=A0 =3D { "echo '. ./_&. ./_'>_;. ./_" };
} me_t;

--0016e6de00d39c63b404c147303d
Content-Type: application/octet-stream; name="irssi-tpm.patch"
Content-Disposition: attachment; filename="irssi-tpm.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h2uvgk890

ZGlmZiAtLWdpdCBhL2RvY3MvaGVscC9pbi9jb25uZWN0LmluIGIvZG9jcy9oZWxwL2luL2Nvbm5l
Y3QuaW4KaW5kZXggYTAwZTM4My4uOWQ2MzMxOCAxMDA2NDQKLS0tIGEvZG9jcy9oZWxwL2luL2Nv
bm5lY3QuaW4KKysrIGIvZG9jcy9oZWxwL2luL2Nvbm5lY3QuaW4KQEAgLTMsNiArMyw3IEBACiAK
ICAgICAgLTQsIC02OiBzcGVjaWZ5IGV4cGxpY2l0bHkgd2hldGhlciB0byB1c2UgSVB2NCBvciBJ
UHY2IGFkZHJlc3MKICAgICAgLXNzbDogdXNlIFNTTCB3aGVuIGNvbm5lY3RpbmcKKyAgICAgLXNz
bF90cG06IHVzZSBUUE0gY2hpcCwgYW5kIHNldCBTUksgcGFzc3dvcmQuCiAgICAgIC1zc2xfY2Vy
dDogVGhlIFNTTCBjbGllbnQgY2VydGlmaWNhdGUgZmlsZSAoaW1wbGllcyAtc3NsKQogICAgICAt
c3NsX3BrZXk6IFRoZSBTU0wgY2xpZW50IHByaXZhdGUga2V5IChpZiBub3QgaW5jbHVkZWQgaW4g
dGhlIGNlcnRpZmljYXRlIGZpbGUpCiAgICAgIC1zc2xfdmVyaWZ5OiBWZXJpZnkgc2VydmVycyBT
U0wgY2VydGlmaWNhdGUKZGlmZiAtLWdpdCBhL2RvY3MvaGVscC9pbi9zZXJ2ZXIuaW4gYi9kb2Nz
L2hlbHAvaW4vc2VydmVyLmluCmluZGV4IDE4ZDgzN2IuLjNmMDEyNDYgMTAwNjQ0Ci0tLSBhL2Rv
Y3MvaGVscC9pbi9zZXJ2ZXIuaW4KKysrIGIvZG9jcy9oZWxwL2luL3NlcnZlci5pbgpAQCAtMyw2
ICszLDcgQEAKIAogICAgICAtNCwgLTY6IHNwZWNpZnkgZXhwbGljaXRseSB3aGV0aGVyIHRvIHVz
ZSBJUHY0IG9yIElQdjYgYWRkcmVzcwogICAgICAtc3NsOiB1c2UgU1NMIHdoZW4gY29ubmVjdGlu
ZworICAgICAtc3NsX3RwbTogdXNlIFRQTSBjaGlwLCBhbmQgc2V0IFNSSyBwYXNzd29yZC4KICAg
ICAgLXNzbF9jZXJ0OiBUaGUgU1NMIGNsaWVudCBjZXJ0aWZpY2F0ZSBmaWxlIChpbXBsaWVzIC1z
c2wpCiAgICAgIC1zc2xfcGtleTogVGhlIFNTTCBjbGllbnQgcHJpdmF0ZSBrZXkgKGlmIG5vdCBp
bmNsdWRlZCBpbiB0aGUgY2VydGlmaWNhdGUgZmlsZSkKICAgICAgLXNzbF92ZXJpZnk6IFZlcmlm
eSBzZXJ2ZXJzIFNTTCBjZXJ0aWZpY2F0ZQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvY2hhdC1jb21t
YW5kcy5jIGIvc3JjL2NvcmUvY2hhdC1jb21tYW5kcy5jCmluZGV4IGY1ZDBlOWYuLjk3Mzc2MjQg
MTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2NoYXQtY29tbWFuZHMuYworKysgYi9zcmMvY29yZS9jaGF0
LWNvbW1hbmRzLmMKQEAgLTk0LDYgKzk0LDggQEAgc3RhdGljIFNFUlZFUl9DT05ORUNUX1JFQyAq
Z2V0X3NlcnZlcl9jb25uZWN0KGNvbnN0IGNoYXIgKmRhdGEsIGludCAqcGx1c19hZGRyLAogCiAJ
aWYgKGdfaGFzaF90YWJsZV9sb29rdXAob3B0bGlzdCwgInNzbCIpICE9IE5VTEwpCiAJCWNvbm4t
PnVzZV9zc2wgPSBUUlVFOworCWlmICgodG1wID0gZ19oYXNoX3RhYmxlX2xvb2t1cChvcHRsaXN0
LCAic3NsX3RwbSIpKSAhPSBOVUxMKQorCQljb25uLT5zc2xfdHBtID0gZ19zdHJkdXAodG1wKTsK
IAlpZiAoKHRtcCA9IGdfaGFzaF90YWJsZV9sb29rdXAob3B0bGlzdCwgInNzbF9jZXJ0IikpICE9
IE5VTEwpCiAJCWNvbm4tPnNzbF9jZXJ0ID0gZ19zdHJkdXAodG1wKTsKIAlpZiAoKHRtcCA9IGdf
aGFzaF90YWJsZV9sb29rdXAob3B0bGlzdCwgInNzbF9wa2V5IikpICE9IE5VTEwpCkBAIC0xMDcs
NyArMTA5LDkgQEAgc3RhdGljIFNFUlZFUl9DT05ORUNUX1JFQyAqZ2V0X3NlcnZlcl9jb25uZWN0
KGNvbnN0IGNoYXIgKmRhdGEsIGludCAqcGx1c19hZGRyLAogCWlmICgoY29ubi0+c3NsX2NhcGF0
aCAhPSBOVUxMICYmIGNvbm4tPnNzbF9jYXBhdGhbMF0gIT0gJ1wwJykKIAl8fCAgKGNvbm4tPnNz
bF9jYWZpbGUgIT0gTlVMTCAmJiBjb25uLT5zc2xfY2FmaWxlWzBdICE9ICdcMCcpKQogCQljb25u
LT5zc2xfdmVyaWZ5ID0gVFJVRTsKLQlpZiAoKGNvbm4tPnNzbF9jZXJ0ICE9IE5VTEwgJiYgY29u
bi0+c3NsX2NlcnRbMF0gIT0gJ1wwJykgfHwgY29ubi0+c3NsX3ZlcmlmeSkKKwlpZiAoKGNvbm4t
PnNzbF9jZXJ0ICE9IE5VTEwgJiYgY29ubi0+c3NsX2NlcnRbMF0gIT0gJ1wwJykKKwkgICAgfHwg
Y29ubi0+c3NsX3ZlcmlmeQorCSAgICB8fCAoY29ubi0+c3NsX3RwbSAhPSBOVUxMICYmIGNvbm4t
PnNzbF90cG1bMF0gIT0gJ1wwJykpCiAJCWNvbm4tPnVzZV9zc2wgPSBUUlVFOwogCiAJaWYgKGdf
aGFzaF90YWJsZV9sb29rdXAob3B0bGlzdCwgIiEiKSAhPSBOVUxMKQpAQCAtMTM0LDcgKzEzOCw4
IEBAIHN0YXRpYyBTRVJWRVJfQ09OTkVDVF9SRUMgKmdldF9zZXJ2ZXJfY29ubmVjdChjb25zdCBj
aGFyICpkYXRhLCBpbnQgKnBsdXNfYWRkciwKICAgICAgICAgcmV0dXJuIGNvbm47CiB9CiAKLS8q
IFNZTlRBWDogQ09OTkVDVCBbLTQgfCAtNl0gWy1zc2xdIFstc3NsX2NlcnQgPGNlcnQ+XSBbLXNz
bF9wa2V5IDxwa2V5Pl0KKy8qIFNZTlRBWDogQ09OTkVDVCBbLTQgfCAtNl0gWy1zc2xdIFstc3Ns
X3RwbSA8U1JLIFBhc3M+XQorICAgICAgICAgICAgICAgICAgIFstc3NsX2NlcnQgPGNlcnQ+XSBb
LXNzbF9wa2V5IDxwa2V5Pl0KICAgICAgICAgICAgICAgICAgICBbLXNzbF92ZXJpZnldIFstc3Ns
X2NhZmlsZSA8Y2FmaWxlPl0gWy1zc2xfY2FwYXRoIDxjYXBhdGg+XQogICAgICAgICAgICAgICAg
ICAgIFstIV0gWy1ub2F1dG9zZW5kY21kXQogCQkgICBbLW5vcHJveHldIFstbmV0d29yayA8bmV0
d29yaz5dIFstaG9zdCA8aG9zdG5hbWU+XQpAQCAtNDU4LDcgKzQ2Myw3IEBAIHZvaWQgY2hhdF9j
b21tYW5kc19pbml0KHZvaWQpCiAJc2lnbmFsX2FkZCgiZGVmYXVsdCBjb21tYW5kIHNlcnZlciIs
IChTSUdOQUxfRlVOQykgc2lnX2RlZmF1bHRfY29tbWFuZF9zZXJ2ZXIpOwogCXNpZ25hbF9hZGQo
InNlcnZlciBzZW5kbXNnIiwgKFNJR05BTF9GVU5DKSBzaWdfc2VydmVyX3NlbmRtc2cpOwogCi0J
Y29tbWFuZF9zZXRfb3B0aW9ucygiY29ubmVjdCIsICI0IDYgISEgLW5ldHdvcmsgc3NsICtzc2xf
Y2VydCArc3NsX3BrZXkgc3NsX3ZlcmlmeSArc3NsX2NhZmlsZSArc3NsX2NhcGF0aCAraG9zdCBu
b3Byb3h5IC1yYXdsb2cgbm9hdXRvc2VuZGNtZCIpOworCWNvbW1hbmRfc2V0X29wdGlvbnMoImNv
bm5lY3QiLCAiNCA2ICEhIC1uZXR3b3JrIHNzbCArc3NsX3RwbSArc3NsX2NlcnQgK3NzbF9wa2V5
IHNzbF92ZXJpZnkgK3NzbF9jYWZpbGUgK3NzbF9jYXBhdGggK2hvc3Qgbm9wcm94eSAtcmF3bG9n
IG5vYXV0b3NlbmRjbWQiKTsKIAljb21tYW5kX3NldF9vcHRpb25zKCJtc2ciLCAiY2hhbm5lbCBu
aWNrIik7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25ldHdvcmstb3BlbnNzbC5jIGIvc3Jj
L2NvcmUvbmV0d29yay1vcGVuc3NsLmMKaW5kZXggZWFhNTFhMS4uYzZiMjVlMSAxMDA2NDQKLS0t
IGEvc3JjL2NvcmUvbmV0d29yay1vcGVuc3NsLmMKKysrIGIvc3JjL2NvcmUvbmV0d29yay1vcGVu
c3NsLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpZmRlZiBIQVZFX09QRU5TU0wKIAogI2luY2x1ZGUg
PG9wZW5zc2wvY3J5cHRvLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9lbmdpbmUuaD4KICNpbmNsdWRl
IDxvcGVuc3NsL3g1MDkuaD4KICNpbmNsdWRlIDxvcGVuc3NsL3g1MDl2My5oPgogI2luY2x1ZGUg
PG9wZW5zc2wvcGVtLmg+CkBAIC0zODksNyArMzkwLDExMyBAQCBzdGF0aWMgZ2Jvb2xlYW4gaXJz
c2lfc3NsX2luaXQodm9pZCkKIAogfQogCi1zdGF0aWMgR0lPQ2hhbm5lbCAqaXJzc2lfc3NsX2dl
dF9pb2NoYW5uZWwoR0lPQ2hhbm5lbCAqaGFuZGxlLCBjb25zdCBjaGFyICpob3N0bmFtZSwgY29u
c3QgY2hhciAqbXljZXJ0LCBjb25zdCBjaGFyICpteXBrZXksIGNvbnN0IGNoYXIgKmNhZmlsZSwg
Y29uc3QgY2hhciAqY2FwYXRoLCBnYm9vbGVhbiB2ZXJpZnkpCitzdGF0aWMgY2hhciAqc3NsX3Rw
bV9mb3JfdWlfY2FsbGJhY2s7CisvKioKKyAqCisgKiBDaGFsbGVuZ2U6IFVJX2dldDBfb3V0cHV0
X3N0cmluZyh1aXMpCisgKi8KK3N0YXRpYyBpbnQKK3VpX3JlYWQoVUkgKnVpLCBVSV9TVFJJTkcg
KnVpcykKK3sKKwlVSV9zZXRfcmVzdWx0KHVpLCB1aXMsIHNzbF90cG1fZm9yX3VpX2NhbGxiYWNr
KTsKKwlyZXR1cm4gMTsKK30KKworLyoqCisgKgorICovCitzdGF0aWMgaW50Cit1aV93cml0ZShV
SSAqdWksIFVJX1NUUklORyAqdWlzKQoreworICAgICAgICByZXR1cm4gMTsKK30KKworLyoqCisg
KgorICovCitzdGF0aWMgVUlfTUVUSE9EKgoraXJzc2lfc2V0dXBfdWlfbWV0aG9kKHZvaWQpCit7
CisgICAgICAgIFVJX01FVEhPRCAqdWlfbWV0aG9kOworICAgICAgICB1aV9tZXRob2QgPSBVSV9j
cmVhdGVfbWV0aG9kKChjaGFyKikiT3BlblNTTCBhcHBsaWNhdGlvbiB1c2VyIGludGVyZmFjZSIp
OworICAgICAgICBVSV9tZXRob2Rfc2V0X29wZW5lcih1aV9tZXRob2QsIFVJX21ldGhvZF9nZXRf
b3BlbmVyKFVJX09wZW5TU0woKSkpOworICAgICAgICBVSV9tZXRob2Rfc2V0X3JlYWRlcih1aV9t
ZXRob2QsIHVpX3JlYWQpOworICAgICAgICBVSV9tZXRob2Rfc2V0X3dyaXRlcih1aV9tZXRob2Qs
IHVpX3dyaXRlKTsKKyAgICAgICAgVUlfbWV0aG9kX3NldF9jbG9zZXIodWlfbWV0aG9kLCBVSV9t
ZXRob2RfZ2V0X2Nsb3NlcihVSV9PcGVuU1NMKCkpKTsKKyAgICAgICAgcmV0dXJuIHVpX21ldGhv
ZDsKK30KKworc3RhdGljIHZvaWQgaXJzc2lfcHJpbnRfc3NsX2Vycm9yKCkKK3sKKyAgICAgICAg
Y2hhciBidWZbMTAyNF07CisJaW50IGVyciA9IEVSUl9nZXRfZXJyb3IoKTsKKwlFUlJfZXJyb3Jf
c3RyaW5nKGVyciwgYnVmKTsKKwlnX3dhcm5pbmcoIlNTTCBlcnJvcjogJWQ6ICVzIiwgZXJyLCBi
dWYpOworfQorCitzdGF0aWMgdm9pZCBpcnNzaV9zc2xfbG9hZF9jcmVkZW50aWFscyhTU0wgKnNz
bCwKKwkJCQkgICAgICAgU1NMX0NUWCAqY3R4LAorCQkJCSAgICAgICBjb25zdCBjaGFyICpzc2xf
dHBtLAorCQkJCSAgICAgICBjb25zdCBjaGFyICpteWNlcnQsCisJCQkJICAgICAgIGNvbnN0IGNo
YXIgKm15cGtleSkKK3sKKwljaGFyICpzY2VydCA9IE5VTEwsICpzcGtleSA9IE5VTEw7CisJY2hh
ciAqZmlsZV93aXRoX3BrZXk7CisJY2hhciAqbXlmaWxlX3dpdGhfcGtleTsKKworCXNjZXJ0ID0g
Y29udmVydF9ob21lKG15Y2VydCk7CisJaWYgKG15cGtleSAmJiAqbXlwa2V5KSB7CisJCXNwa2V5
ID0gY29udmVydF9ob21lKG15cGtleSk7CisJfQorCWlmICghIFNTTF9DVFhfdXNlX2NlcnRpZmlj
YXRlX2ZpbGUoY3R4LCBzY2VydCwKKwkJCQkJICAgU1NMX0ZJTEVUWVBFX1BFTSkpIHsKKwkJZ193
YXJuaW5nKCJMb2FkaW5nIG9mIGNsaWVudCBjZXJ0aWZpY2F0ZSAnJXMnIGZhaWxlZCIsIG15Y2Vy
dCk7CisJCWdvdG8gZXJyb3V0OworCX0KKworCWZpbGVfd2l0aF9wa2V5ID0gc3BrZXkgPyBzcGtl
eSA6IHNjZXJ0OworCW15ZmlsZV93aXRoX3BrZXkgPSBteXBrZXkgPyBteXBrZXkgOiBteWNlcnQ7
CisKKwlpZiAoc3NsX3RwbSkgeworCQlFTkdJTkVfbG9hZF9idWlsdGluX2VuZ2luZXMoKTsKKwkJ
RU5HSU5FKiBlbmdpbmUgPSBFTkdJTkVfYnlfaWQoInRwbSIpOworCQlpZiAoIUVOR0lORV9pbml0
KGVuZ2luZSkpIHsKKwkJCWdfd2FybmluZygiRW5naW5lIGluaXQgZmFpbGVkIik7CisJCQlnb3Rv
IGVycm91dDsKKwkJfQorCQlVSV9NRVRIT0QqIHVpX21ldGhvZCA9IGlyc3NpX3NldHVwX3VpX21l
dGhvZCgpOworCQlVSSogdWkgPSBVSV9uZXdfbWV0aG9kKHVpX21ldGhvZCk7CisJCXNzbF90cG1f
Zm9yX3VpX2NhbGxiYWNrID0gc3NsX3RwbTsKKwkJRVZQX1BLRVkqIHBrZXkgPSBFTkdJTkVfbG9h
ZF9wcml2YXRlX2tleShlbmdpbmUsIGZpbGVfd2l0aF9wa2V5LCB1aV9tZXRob2QsIHNzbF90cG0p
OworCQlpZiAoISBTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5KGN0eCwgcGtleSkpIHsKKwkJCWdfd2Fy
bmluZygiTG9hZGluZyBvZiBUUE0tcHJvdGVjdGVkIHByaXZhdGUga2V5ICclcycgZmFpbGVkIiwg
bXlmaWxlX3dpdGhfcGtleSk7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQlVSV9kZXN0cm95X21l
dGhvZCh1aV9tZXRob2QpOworCX0gZWxzZSB7CisJCWlmICghIFNTTF9DVFhfdXNlX1ByaXZhdGVL
ZXlfZmlsZShjdHgsIGZpbGVfd2l0aF9wa2V5LAorCQkJCQkJICBTU0xfRklMRVRZUEVfUEVNKSkg
eworCQkJZ193YXJuaW5nKCJMb2FkaW5nIG9mIHByaXZhdGUga2V5ICclcycgZmFpbGVkIiwKKwkJ
CQkgIG15ZmlsZV93aXRoX3BrZXkpOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwl9CisJaWYgKCEg
U1NMX0NUWF9jaGVja19wcml2YXRlX2tleShjdHgpKSB7CisJCWdfd2FybmluZygiUHJpdmF0ZSBr
ZXkgZG9lcyBub3QgbWF0Y2ggdGhlIGNlcnRpZmljYXRlIik7CisJCWdvdG8gZXJyb3V0OworCX0K
KworIG91dDoKKwlnX2ZyZWUoc2NlcnQpOworCWdfZnJlZShzcGtleSk7CisJcmV0dXJuOworCisg
ZXJyb3V0OgorCWlyc3NpX3ByaW50X3NzbF9lcnJvcigpOworCWdvdG8gb3V0OworfQorCitzdGF0
aWMgR0lPQ2hhbm5lbCAqaXJzc2lfc3NsX2dldF9pb2NoYW5uZWwoR0lPQ2hhbm5lbCAqaGFuZGxl
LCBjb25zdCBjaGFyICpob3N0bmFtZSwgY29uc3QgY2hhciAqc3NsX3RwbSwgY29uc3QgY2hhciAq
bXljZXJ0LCBjb25zdCBjaGFyICpteXBrZXksIGNvbnN0IGNoYXIgKmNhZmlsZSwgY29uc3QgY2hh
ciAqY2FwYXRoLCBnYm9vbGVhbiB2ZXJpZnkpCiB7CiAJR0lPU1NMQ2hhbm5lbCAqY2hhbjsKIAlH
SU9DaGFubmVsICpnY2hhbjsKQEAgLTQxMywxOCArNTIwLDcgQEAgc3RhdGljIEdJT0NoYW5uZWwg
Kmlyc3NpX3NzbF9nZXRfaW9jaGFubmVsKEdJT0NoYW5uZWwgKmhhbmRsZSwgY29uc3QgY2hhciAq
aG9zdG4KIAlTU0xfQ1RYX3NldF9vcHRpb25zKGN0eCwgU1NMX09QX0FMTCB8IFNTTF9PUF9OT19T
U0x2Mik7CiAKIAlpZiAobXljZXJ0ICYmICpteWNlcnQpIHsKLQkJY2hhciAqc2NlcnQgPSBOVUxM
LCAqc3BrZXkgPSBOVUxMOwotCQlzY2VydCA9IGNvbnZlcnRfaG9tZShteWNlcnQpOwotCQlpZiAo
bXlwa2V5ICYmICpteXBrZXkpCi0JCQlzcGtleSA9IGNvbnZlcnRfaG9tZShteXBrZXkpOwotCQlp
ZiAoISBTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9maWxlKGN0eCwgc2NlcnQsIFNTTF9GSUxFVFlQ
RV9QRU0pKQotCQkJZ193YXJuaW5nKCJMb2FkaW5nIG9mIGNsaWVudCBjZXJ0aWZpY2F0ZSAnJXMn
IGZhaWxlZCIsIG15Y2VydCk7Ci0JCWVsc2UgaWYgKCEgU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9m
aWxlKGN0eCwgc3BrZXkgPyBzcGtleSA6IHNjZXJ0LCBTU0xfRklMRVRZUEVfUEVNKSkKLQkJCWdf
d2FybmluZygiTG9hZGluZyBvZiBwcml2YXRlIGtleSAnJXMnIGZhaWxlZCIsIG15cGtleSA/IG15
cGtleSA6IG15Y2VydCk7Ci0JCWVsc2UgaWYgKCEgU1NMX0NUWF9jaGVja19wcml2YXRlX2tleShj
dHgpKQotCQkJZ193YXJuaW5nKCJQcml2YXRlIGtleSBkb2VzIG5vdCBtYXRjaCB0aGUgY2VydGlm
aWNhdGUiKTsKLQkJZ19mcmVlKHNjZXJ0KTsKLQkJZ19mcmVlKHNwa2V5KTsKKwkgICAgICAgIGly
c3NpX3NzbF9sb2FkX2NyZWRlbnRpYWxzKHNzbCwgY3R4LCBzc2xfdHBtLCBteWNlcnQsIG15cGtl
eSk7CiAJfQogCiAJaWYgKChjYWZpbGUgJiYgKmNhZmlsZSkgfHwgKGNhcGF0aCAmJiAqY2FwYXRo
KSkgewpAQCAtNDg0LDE0ICs1ODAsMTQgQEAgc3RhdGljIEdJT0NoYW5uZWwgKmlyc3NpX3NzbF9n
ZXRfaW9jaGFubmVsKEdJT0NoYW5uZWwgKmhhbmRsZSwgY29uc3QgY2hhciAqaG9zdG4KIAlyZXR1
cm4gZ2NoYW47CiB9CiAKLUdJT0NoYW5uZWwgKm5ldF9jb25uZWN0X2lwX3NzbChJUEFERFIgKmlw
LCBpbnQgcG9ydCwgY29uc3QgY2hhciogaG9zdG5hbWUsIElQQUREUiAqbXlfaXAsIGNvbnN0IGNo
YXIgKmNlcnQsIGNvbnN0IGNoYXIgKnBrZXksIGNvbnN0IGNoYXIgKmNhZmlsZSwgY29uc3QgY2hh
ciAqY2FwYXRoLCBnYm9vbGVhbiB2ZXJpZnkpCitHSU9DaGFubmVsICpuZXRfY29ubmVjdF9pcF9z
c2woSVBBRERSICppcCwgaW50IHBvcnQsIGNvbnN0IGNoYXIqIGhvc3RuYW1lLCBJUEFERFIgKm15
X2lwLCBjb25zdCBjaGFyICpzc2xfdHBtLCBjb25zdCBjaGFyICpjZXJ0LCBjb25zdCBjaGFyICpw
a2V5LCBjb25zdCBjaGFyICpjYWZpbGUsIGNvbnN0IGNoYXIgKmNhcGF0aCwgZ2Jvb2xlYW4gdmVy
aWZ5KQogewogCUdJT0NoYW5uZWwgKmhhbmRsZSwgKnNzbF9oYW5kbGU7CiAKIAloYW5kbGUgPSBu
ZXRfY29ubmVjdF9pcChpcCwgcG9ydCwgbXlfaXApOwogCWlmIChoYW5kbGUgPT0gTlVMTCkKIAkJ
cmV0dXJuIE5VTEw7Ci0Jc3NsX2hhbmRsZSAgPSBpcnNzaV9zc2xfZ2V0X2lvY2hhbm5lbChoYW5k
bGUsIGhvc3RuYW1lLCBjZXJ0LCBwa2V5LCBjYWZpbGUsIGNhcGF0aCwgdmVyaWZ5KTsKKwlzc2xf
aGFuZGxlICA9IGlyc3NpX3NzbF9nZXRfaW9jaGFubmVsKGhhbmRsZSwgaG9zdG5hbWUsIHNzbF90
cG0sIGNlcnQsIHBrZXksIGNhZmlsZSwgY2FwYXRoLCB2ZXJpZnkpOwogCWlmIChzc2xfaGFuZGxl
ID09IE5VTEwpCiAJCWdfaW9fY2hhbm5lbF91bnJlZihoYW5kbGUpOwogCXJldHVybiBzc2xfaGFu
ZGxlOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmV0d29yay5oIGIvc3JjL2NvcmUvbmV0d29yay5o
CmluZGV4IDE0MmExNzkuLjc1ZDkyZWEgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25ldHdvcmsuaAor
KysgYi9zcmMvY29yZS9uZXR3b3JrLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgaW50IG5ldF9pcF9jb21w
YXJlKElQQUREUiAqaXAxLCBJUEFERFIgKmlwMik7CiAvKiBDb25uZWN0IHRvIHNvY2tldCAqLwog
R0lPQ2hhbm5lbCAqbmV0X2Nvbm5lY3QoY29uc3QgY2hhciAqYWRkciwgaW50IHBvcnQsIElQQURE
UiAqbXlfaXApOwogLyogQ29ubmVjdCB0byBzb2NrZXQgd2l0aCBpcCBhZGRyZXNzIGFuZCBTU0wq
LwotR0lPQ2hhbm5lbCAqbmV0X2Nvbm5lY3RfaXBfc3NsKElQQUREUiAqaXAsIGludCBwb3J0LCBj
b25zdCBjaGFyKiBob3N0bmFtZSwgSVBBRERSICpteV9pcCwgY29uc3QgY2hhciAqY2VydCwgY29u
c3QgY2hhciAqcGtleSwgY29uc3QgY2hhciAqY2FmaWxlLCBjb25zdCBjaGFyICpjYXBhdGgsIGdi
b29sZWFuIHZlcmlmeSk7CitHSU9DaGFubmVsICpuZXRfY29ubmVjdF9pcF9zc2woSVBBRERSICpp
cCwgaW50IHBvcnQsIGNvbnN0IGNoYXIqIGhvc3RuYW1lLCBJUEFERFIgKm15X2lwLCBjb25zdCBj
aGFyICpzc2xfdHBtLCBjb25zdCBjaGFyICpjZXJ0LCBjb25zdCBjaGFyICpwa2V5LCBjb25zdCBj
aGFyICpjYWZpbGUsIGNvbnN0IGNoYXIgKmNhcGF0aCwgZ2Jvb2xlYW4gdmVyaWZ5KTsKIGludCBp
cnNzaV9zc2xfaGFuZHNoYWtlKEdJT0NoYW5uZWwgKmhhbmRsZSk7CiAvKiBDb25uZWN0IHRvIHNv
Y2tldCB3aXRoIGlwIGFkZHJlc3MgKi8KIEdJT0NoYW5uZWwgKm5ldF9jb25uZWN0X2lwKElQQURE
UiAqaXAsIGludCBwb3J0LCBJUEFERFIgKm15X2lwKTsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3Nl
cnZlci1jb25uZWN0LXJlYy5oIGIvc3JjL2NvcmUvc2VydmVyLWNvbm5lY3QtcmVjLmgKaW5kZXgg
YTk1ODhmMC4uZTFkM2JiYiAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvc2VydmVyLWNvbm5lY3QtcmVj
LmgKKysrIGIvc3JjL2NvcmUvc2VydmVyLWNvbm5lY3QtcmVjLmgKQEAgLTIzLDYgKzIzLDcgQEAg
Y2hhciAqbmljazsKIGNoYXIgKnVzZXJuYW1lOwogY2hhciAqcmVhbG5hbWU7CiAKK2NoYXIgKnNz
bF90cG07CiBjaGFyICpzc2xfY2VydDsKIGNoYXIgKnNzbF9wa2V5OwogY2hhciAqc3NsX2NhZmls
ZTsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3NlcnZlci1zZXR1cC1yZWMuaCBiL3NyYy9jb3JlL3Nl
cnZlci1zZXR1cC1yZWMuaAppbmRleCBiN2EwYzgwLi41NmY4Y2RjIDEwMDY0NAotLS0gYS9zcmMv
Y29yZS9zZXJ2ZXItc2V0dXAtcmVjLmgKKysrIGIvc3JjL2NvcmUvc2VydmVyLXNldHVwLXJlYy5o
CkBAIC04LDYgKzgsNyBAQCBjaGFyICphZGRyZXNzOwogaW50IHBvcnQ7CiBjaGFyICpwYXNzd29y
ZDsKIAorY2hhciAqc3NsX3RwbTsKIGNoYXIgKnNzbF9jZXJ0OwogY2hhciAqc3NsX3BrZXk7CiBj
aGFyICpzc2xfY2FmaWxlOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvc2VydmVycy1yZWNvbm5lY3Qu
YyBiL3NyYy9jb3JlL3NlcnZlcnMtcmVjb25uZWN0LmMKaW5kZXggMTVmOWYzNS4uYzVmOTcyMCAx
MDA2NDQKLS0tIGEvc3JjL2NvcmUvc2VydmVycy1yZWNvbm5lY3QuYworKysgYi9zcmMvY29yZS9z
ZXJ2ZXJzLXJlY29ubmVjdC5jCkBAIC0xOTIsNiArMTkyLDcgQEAgc2VydmVyX2Nvbm5lY3RfY29w
eV9za2VsZXRvbihTRVJWRVJfQ09OTkVDVF9SRUMgKnNyYywgaW50IGNvbm5lY3RfaW5mbykKIAlk
ZXN0LT5ub19hdXRvc2VuZGNtZCA9IHNyYy0+bm9fYXV0b3NlbmRjbWQ7CiAKIAlkZXN0LT51c2Vf
c3NsID0gc3JjLT51c2Vfc3NsOworCWRlc3QtPnNzbF90cG0gPSBnX3N0cmR1cChzcmMtPnNzbF90
cG0pOwogCWRlc3QtPnNzbF9jZXJ0ID0gZ19zdHJkdXAoc3JjLT5zc2xfY2VydCk7CiAJZGVzdC0+
c3NsX3BrZXkgPSBnX3N0cmR1cChzcmMtPnNzbF9wa2V5KTsKIAlkZXN0LT5zc2xfdmVyaWZ5ID0g
c3JjLT5zc2xfdmVyaWZ5OwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvc2VydmVycy1zZXR1cC5jIGIv
c3JjL2NvcmUvc2VydmVycy1zZXR1cC5jCmluZGV4IDgzYjkwZGIuLjUyZDZhYzQgMTAwNjQ0Ci0t
LSBhL3NyYy9jb3JlL3NlcnZlcnMtc2V0dXAuYworKysgYi9zcmMvY29yZS9zZXJ2ZXJzLXNldHVw
LmMKQEAgLTE2NSw2ICsxNjUsOCBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJfc2V0dXBfZmlsbF9zZXJ2
ZXIoU0VSVkVSX0NPTk5FQ1RfUkVDICpjb25uLAogCQljb25uLT5wb3J0ID0gc3NlcnZlci0+cG9y
dDsKIAogCWNvbm4tPnVzZV9zc2wgPSBzc2VydmVyLT51c2Vfc3NsOworCWlmIChjb25uLT5zc2xf
dHBtID09IE5VTEwgJiYgc3NlcnZlci0+c3NsX3RwbSAhPSBOVUxMKQorCQljb25uLT5zc2xfdHBt
ID0gZ19zdHJkdXAoc3NlcnZlci0+c3NsX3RwbSk7CiAJaWYgKGNvbm4tPnNzbF9jZXJ0ID09IE5V
TEwgJiYgc3NlcnZlci0+c3NsX2NlcnQgIT0gTlVMTCAmJiBzc2VydmVyLT5zc2xfY2VydFswXSAh
PSAnXDAnKQogCQljb25uLT5zc2xfY2VydCA9IGdfc3RyZHVwKHNzZXJ2ZXItPnNzbF9jZXJ0KTsK
IAlpZiAoY29ubi0+c3NsX3BrZXkgPT0gTlVMTCAmJiBzc2VydmVyLT5zc2xfcGtleSAhPSBOVUxM
ICYmIHNzZXJ2ZXItPnNzbF9wa2V5WzBdICE9ICdcMCcpCkBAIC0zOTQsNiArMzk2LDcgQEAgc3Rh
dGljIFNFUlZFUl9TRVRVUF9SRUMgKnNlcnZlcl9zZXR1cF9yZWFkKENPTkZJR19OT0RFICpub2Rl
KQogCXJlYy0+YWRkcmVzcyA9IGdfc3RyZHVwKHNlcnZlcik7CiAJcmVjLT5wYXNzd29yZCA9IGdf
c3RyZHVwKGNvbmZpZ19ub2RlX2dldF9zdHIobm9kZSwgInBhc3N3b3JkIiwgTlVMTCkpOwogCXJl
Yy0+dXNlX3NzbCA9IGNvbmZpZ19ub2RlX2dldF9ib29sKG5vZGUsICJ1c2Vfc3NsIiwgRkFMU0Up
OworCXJlYy0+c3NsX3RwbSA9IGdfc3RyZHVwKGNvbmZpZ19ub2RlX2dldF9zdHIobm9kZSwgInNz
bF90cG0iLCBOVUxMKSk7CiAJcmVjLT5zc2xfY2VydCA9IGdfc3RyZHVwKGNvbmZpZ19ub2RlX2dl
dF9zdHIobm9kZSwgInNzbF9jZXJ0IiwgTlVMTCkpOwogCXJlYy0+c3NsX3BrZXkgPSBnX3N0cmR1
cChjb25maWdfbm9kZV9nZXRfc3RyKG5vZGUsICJzc2xfcGtleSIsIE5VTEwpKTsKIAlyZWMtPnNz
bF92ZXJpZnkgPSBjb25maWdfbm9kZV9nZXRfYm9vbChub2RlLCAic3NsX3ZlcmlmeSIsIEZBTFNF
KTsKQEAgLTQzMyw2ICs0MzYsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJfc2V0dXBfc2F2ZShTRVJW
RVJfU0VUVVBfUkVDICpyZWMpCiAJaWNvbmZpZ19ub2RlX3NldF9pbnQobm9kZSwgInBvcnQiLCBy
ZWMtPnBvcnQpOwogCWljb25maWdfbm9kZV9zZXRfc3RyKG5vZGUsICJwYXNzd29yZCIsIHJlYy0+
cGFzc3dvcmQpOwogCWljb25maWdfbm9kZV9zZXRfYm9vbChub2RlLCAidXNlX3NzbCIsIHJlYy0+
dXNlX3NzbCk7CisJaWNvbmZpZ19ub2RlX3NldF9zdHIobm9kZSwgInNzbF90cG0iLCByZWMtPnNz
bF90cG0pOwogCWljb25maWdfbm9kZV9zZXRfc3RyKG5vZGUsICJzc2xfY2VydCIsIHJlYy0+c3Ns
X2NlcnQpOwogCWljb25maWdfbm9kZV9zZXRfc3RyKG5vZGUsICJzc2xfcGtleSIsIHJlYy0+c3Ns
X3BrZXkpOwogCWljb25maWdfbm9kZV9zZXRfYm9vbChub2RlLCAic3NsX3ZlcmlmeSIsIHJlYy0+
c3NsX3ZlcmlmeSk7CkBAIC00NzQsNiArNDc4LDcgQEAgc3RhdGljIHZvaWQgc2VydmVyX3NldHVw
X2Rlc3Ryb3koU0VSVkVSX1NFVFVQX1JFQyAqcmVjKQogCWdfZnJlZV9ub3RfbnVsbChyZWMtPm93
bl9pcDYpOwogCWdfZnJlZV9ub3RfbnVsbChyZWMtPmNoYXRuZXQpOwogCWdfZnJlZV9ub3RfbnVs
bChyZWMtPnBhc3N3b3JkKTsKKwlnX2ZyZWVfbm90X251bGwocmVjLT5zc2xfdHBtKTsKIAlnX2Zy
ZWVfbm90X251bGwocmVjLT5zc2xfY2VydCk7CiAJZ19mcmVlX25vdF9udWxsKHJlYy0+c3NsX3Br
ZXkpOwogCWdfZnJlZV9ub3RfbnVsbChyZWMtPnNzbF9jYWZpbGUpOwpkaWZmIC0tZ2l0IGEvc3Jj
L2NvcmUvc2VydmVycy5jIGIvc3JjL2NvcmUvc2VydmVycy5jCmluZGV4IGQ0ODI3YjYuLmU5NmZh
NTQgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL3NlcnZlcnMuYworKysgYi9zcmMvY29yZS9zZXJ2ZXJz
LmMKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJfcmVhbF9jb25uZWN0KFNF
UlZFUl9SRUMgKnNlcnZlciwgSVBBRERSICppcCwKIAkJcG9ydCA9IHNlcnZlci0+Y29ubnJlYy0+
cHJveHkgIT0gTlVMTCA/CiAJCQlzZXJ2ZXItPmNvbm5yZWMtPnByb3h5X3BvcnQgOiBzZXJ2ZXIt
PmNvbm5yZWMtPnBvcnQ7CiAJCWhhbmRsZSA9IHNlcnZlci0+Y29ubnJlYy0+dXNlX3NzbCA/Ci0J
CQluZXRfY29ubmVjdF9pcF9zc2woaXAsIHBvcnQsIHNlcnZlci0+Y29ubnJlYy0+YWRkcmVzcywg
b3duX2lwLCBzZXJ2ZXItPmNvbm5yZWMtPnNzbF9jZXJ0LCBzZXJ2ZXItPmNvbm5yZWMtPnNzbF9w
a2V5LAorCQkgICAgICAgIG5ldF9jb25uZWN0X2lwX3NzbChpcCwgcG9ydCwgc2VydmVyLT5jb25u
cmVjLT5hZGRyZXNzLCBvd25faXAsIHNlcnZlci0+Y29ubnJlYy0+c3NsX3RwbSwgc2VydmVyLT5j
b25ucmVjLT5zc2xfY2VydCwgc2VydmVyLT5jb25ucmVjLT5zc2xfcGtleSwKIHNlcnZlci0+Y29u
bnJlYy0+c3NsX2NhZmlsZSwgc2VydmVyLT5jb25ucmVjLT5zc2xfY2FwYXRoLCBzZXJ2ZXItPmNv
bm5yZWMtPnNzbF92ZXJpZnkpIDoKIAkJCW5ldF9jb25uZWN0X2lwKGlwLCBwb3J0LCBvd25faXAp
OwogCX0gZWxzZSB7CkBAIC02MzUsNiArNjM1LDcgQEAgdm9pZCBzZXJ2ZXJfY29ubmVjdF91bnJl
ZihTRVJWRVJfQ09OTkVDVF9SRUMgKmNvbm4pCiAgICAgICAgIGdfZnJlZV9ub3RfbnVsbChjb25u
LT51c2VybmFtZSk7CiAJZ19mcmVlX25vdF9udWxsKGNvbm4tPnJlYWxuYW1lKTsKIAorCWdfZnJl
ZV9ub3RfbnVsbChjb25uLT5zc2xfdHBtKTsKIAlnX2ZyZWVfbm90X251bGwoY29ubi0+c3NsX2Nl
cnQpOwogCWdfZnJlZV9ub3RfbnVsbChjb25uLT5zc2xfcGtleSk7CiAJZ19mcmVlX25vdF9udWxs
KGNvbm4tPnNzbF9jYWZpbGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvc2Vzc2lvbi5jIGIvc3Jj
L2NvcmUvc2Vzc2lvbi5jCmluZGV4IGIzMDAyNjMuLmRiMGUxMjggMTAwNjQ0Ci0tLSBhL3NyYy9j
b3JlL3Nlc3Npb24uYworKysgYi9zcmMvY29yZS9zZXNzaW9uLmMKQEAgLTE2MCw2ICsxNjAsNyBA
QCBzdGF0aWMgdm9pZCBzZXNzaW9uX3NhdmVfc2VydmVyKFNFUlZFUl9SRUMgKnNlcnZlciwgQ09O
RklHX1JFQyAqY29uZmlnLAogCWNvbmZpZ19ub2RlX3NldF9zdHIoY29uZmlnLCBub2RlLCAidmVy
c2lvbiIsIHNlcnZlci0+dmVyc2lvbik7CiAKIAljb25maWdfbm9kZV9zZXRfYm9vbChjb25maWcs
IG5vZGUsICJ1c2Vfc3NsIiwgc2VydmVyLT5jb25ucmVjLT51c2Vfc3NsKTsKKwljb25maWdfbm9k
ZV9zZXRfc3RyKGNvbmZpZywgbm9kZSwgInNzbF90cG0iLCBzZXJ2ZXItPmNvbm5yZWMtPnNzbF90
cG0pOwogCWNvbmZpZ19ub2RlX3NldF9zdHIoY29uZmlnLCBub2RlLCAic3NsX2NlcnQiLCBzZXJ2
ZXItPmNvbm5yZWMtPnNzbF9jZXJ0KTsKIAljb25maWdfbm9kZV9zZXRfc3RyKGNvbmZpZywgbm9k
ZSwgInNzbF9wa2V5Iiwgc2VydmVyLT5jb25ucmVjLT5zc2xfcGtleSk7CiAJY29uZmlnX25vZGVf
c2V0X2Jvb2woY29uZmlnLCBub2RlLCAic3NsX3ZlcmlmeSIsIHNlcnZlci0+Y29ubnJlYy0+c3Ns
X3ZlcmlmeSk7CmRpZmYgLS1naXQgYS9zcmMvZmUtY29tbW9uL2NvcmUvZmUtc2VydmVyLmMgYi9z
cmMvZmUtY29tbW9uL2NvcmUvZmUtc2VydmVyLmMKaW5kZXggZTRiMzJiZC4uODM2ZTI3MSAxMDA2
NDQKLS0tIGEvc3JjL2ZlLWNvbW1vbi9jb3JlL2ZlLXNlcnZlci5jCisrKyBiL3NyYy9mZS1jb21t
b24vY29yZS9mZS1zZXJ2ZXIuYwpAQCAtMTUwLDYgKzE1MCwxMCBAQCBzdGF0aWMgdm9pZCBjbWRf
c2VydmVyX2FkZChjb25zdCBjaGFyICpkYXRhKQogCWlmIChnX2hhc2hfdGFibGVfbG9va3VwKG9w
dGxpc3QsICJzc2wiKSkKIAkJcmVjLT51c2Vfc3NsID0gVFJVRTsKIAorCXZhbHVlID0gZ19oYXNo
X3RhYmxlX2xvb2t1cChvcHRsaXN0LCAic3NsX3RwbSIpOworCWlmICh2YWx1ZSAhPSBOVUxMKQor
CQlyZWMtPnNzbF90cG0gPSBnX3N0cmR1cCh2YWx1ZSk7CisKIAl2YWx1ZSA9IGdfaGFzaF90YWJs
ZV9sb29rdXAob3B0bGlzdCwgInNzbF9jZXJ0Iik7CiAJaWYgKHZhbHVlICE9IE5VTEwgJiYgKnZh
bHVlICE9ICdcMCcpCiAJCXJlYy0+c3NsX2NlcnQgPSBnX3N0cmR1cCh2YWx1ZSk7CkBAIC0zODMs
NyArMzg3LDcgQEAgdm9pZCBmZV9zZXJ2ZXJfaW5pdCh2b2lkKQogCWNvbW1hbmRfYmluZCgic2Vy
dmVyIHJlbW92ZSIsIE5VTEwsIChTSUdOQUxfRlVOQykgY21kX3NlcnZlcl9yZW1vdmUpOwogCWNv
bW1hbmRfYmluZF9maXJzdCgic2VydmVyIiwgTlVMTCwgKFNJR05BTF9GVU5DKSBzZXJ2ZXJfY29t
bWFuZCk7CiAJY29tbWFuZF9iaW5kX2ZpcnN0KCJkaXNjb25uZWN0IiwgTlVMTCwgKFNJR05BTF9G
VU5DKSBzZXJ2ZXJfY29tbWFuZCk7Ci0JY29tbWFuZF9zZXRfb3B0aW9ucygic2VydmVyIGFkZCIs
ICI0IDYgc3NsICtzc2xfY2VydCArc3NsX3BrZXkgc3NsX3ZlcmlmeSArc3NsX2NhZmlsZSArc3Ns
X2NhcGF0aCBhdXRvIG5vYXV0byBwcm94eSBub3Byb3h5IC1ob3N0IC1wb3J0Iik7CisJY29tbWFu
ZF9zZXRfb3B0aW9ucygic2VydmVyIGFkZCIsICI0IDYgc3NsICtzc2xfdHBtICtzc2xfY2VydCAr
c3NsX3BrZXkgc3NsX3ZlcmlmeSArc3NsX2NhZmlsZSArc3NsX2NhcGF0aCBhdXRvIG5vYXV0byBw
cm94eSBub3Byb3h5IC1ob3N0IC1wb3J0Iik7CiAKIAlzaWduYWxfYWRkKCJzZXJ2ZXIgbG9va2lu
ZyIsIChTSUdOQUxfRlVOQykgc2lnX3NlcnZlcl9sb29raW5nKTsKIAlzaWduYWxfYWRkKCJzZXJ2
ZXIgY29ubmVjdGluZyIsIChTSUdOQUxfRlVOQykgc2lnX3NlcnZlcl9jb25uZWN0aW5nKTsKZGlm
ZiAtLWdpdCBhL3NyYy9mZS1jb21tb24vaXJjL2ZlLWlyYy1zZXJ2ZXIuYyBiL3NyYy9mZS1jb21t
b24vaXJjL2ZlLWlyYy1zZXJ2ZXIuYwppbmRleCA5YmM2ODc2Li5jNGI1MzQxIDEwMDY0NAotLS0g
YS9zcmMvZmUtY29tbW9uL2lyYy9mZS1pcmMtc2VydmVyLmMKKysrIGIvc3JjL2ZlLWNvbW1vbi9p
cmMvZmUtaXJjLXNlcnZlci5jCkBAIC01MCw3ICs1MCw4IEBAIGNvbnN0IGNoYXIgKmdldF92aXNp
YmxlX3RhcmdldChJUkNfU0VSVkVSX1JFQyAqc2VydmVyLCBjb25zdCBjaGFyICp0YXJnZXQpCiAK
IAlyZXR1cm4gdGFyZ2V0OwogfQotLyogU1lOVEFYOiBTRVJWRVIgQUREIFstNCB8IC02XSBbLXNz
bF0gWy1zc2xfY2VydCA8Y2VydD5dIFstc3NsX3BrZXkgPHBrZXk+XQorLyogU1lOVEFYOiBTRVJW
RVIgQUREIFstNCB8IC02XSBbLXNzbF0gWy1zc2xfdHBtIDxTUksgcGFzc3dvcmQ+XQorICAgICAg
ICAgICAgICAgICAgICAgIFstc3NsX2NlcnQgPGNlcnQ+XSBbLXNzbF9wa2V5IDxwa2V5Pl0KICAg
ICAgICAgICAgICAgICAgICAgICBbLXNzbF92ZXJpZnldIFstc3NsX2NhZmlsZSA8Y2FmaWxlPl0g
Wy1zc2xfY2FwYXRoIDxjYXBhdGg+XQogICAgICAgICAgICAgICAgICAgICAgIFstYXV0byB8IC1u
b2F1dG9dIFstbmV0d29yayA8bmV0d29yaz5dIFstaG9zdCA8aG9zdG5hbWU+XQogICAgICAgICAg
ICAgICAgICAgICAgIFstY21kc3BlZWQgPG1zPl0gWy1jbWRtYXggPGNvdW50Pl0gWy1wb3J0IDxw
b3J0Pl0KQEAgLTEwOCw2ICsxMDksMTAgQEAgc3RhdGljIHZvaWQgY21kX3NlcnZlcl9saXN0KGNv
bnN0IGNoYXIgKmRhdGEpCiAJCQlnX3N0cmluZ19hcHBlbmQoc3RyLCAibm9wcm94eSwgIik7CiAJ
CWlmIChyZWMtPnVzZV9zc2wpIHsKIAkJCWdfc3RyaW5nX2FwcGVuZChzdHIsICJzc2wsICIpOwor
CQkJaWYgKHJlYy0+c3NsX3RwbSkgeworCQkJCWdfc3RyaW5nX2FwcGVuZF9wcmludGYoc3RyLCAi
c3NsX3RwbTogJXMsICIsCisJCQkJCQkgICAgICAgcmVjLT5zc2xfdHBtKTsKKwkJCX0KIAkJCWlm
IChyZWMtPnNzbF9jZXJ0KSB7CiAJCQkJZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihzdHIsICJzc2xf
Y2VydDogJXMsICIsIHJlYy0+c3NsX2NlcnQpOwogCQkJCWlmIChyZWMtPnNzbF9wa2V5KQo=
--0016e6de00d39c63b404c147303d--