Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Jun 2003 10:21:22 -0700 (PDT)
From:      Maksim Yevmenkin <m_evmenkin@yahoo.com>
To:        mobile@freebsd.org, current@freebsd.org
Subject:   [PATCH] hcsecd(8) Bluetooth link keys/PIN codes management daemon
Message-ID:  <20030606172122.65380.qmail@web40308.mail.yahoo.com>

next in thread | raw e-mail | index | archive | help
--0-1215438428-1054920082=:65292
Content-Type: text/plain; charset=us-ascii
Content-Id: 
Content-Disposition: inline

Dear Hackers,

please find attached patch for the hcsecd(8) Bluetooth link keys/PIN
codes management daemon. this patch is against the latest release

http://www.geocities.com/m_evmenkin/ngbt-fbsd-20030604.tar.gz

hcsecd(8) is now able to cache link keys that were generated from the
PIN codes. to preserve link keys between restarts hcsecd(8) will dump
links keys on disk and read them upon next start.

this functionality is required to implement link keys database for
'paired' devices. in particular one can now 'pair' cell phone and PC 
(with PIN code) and both sides will store the link key. in the future
the cell the phone can accept incoming connection from the PC without
being put into 'discoverable' mode. ('discoverable' mode is when the
cell phone answers inquiry).

note that hcsecd(8) must be running all the time, otherwise cell phone
will not be able to receive link key and will 'forget' PC on next
connection attempt. if this happens 'paring' procedure must be repeated.

i would like to thank Alex <alex@greenlight.ru> for reporting this
problem and helping with testing.

thanks,
max

__________________________________
Do you Yahoo!?
Yahoo! Calendar - Free online calendar with sync to Outlook(TM).
http://calendar.yahoo.com
--0-1215438428-1054920082=:65292
Content-Type: application/octet-stream; name="hcsecd.patch"
Content-Transfer-Encoding: base64
Content-Description: hcsecd.patch
Content-Disposition: attachment; filename="hcsecd.patch"

SW5kZXg6IGhjc2VjZC44Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC91c3IvbG9jYWwvY3ZzL3Vzci5zYmluL2JsdWV0b290aC9oY3NlY2Qv
aGNzZWNkLjgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC11IC1y
MS41IGhjc2VjZC44Ci0tLSBoY3NlY2QuOAkyNiBNYXkgMjAwMyAyMjo0OToy
MiAtMDAwMAkxLjUKKysrIGhjc2VjZC44CTYgSnVuIDIwMDMgMDA6Mzc6MTAg
LTAwMDAKQEAgLTM4LDIyICszOCwyOCBAQAogLlNoIERFU0NSSVBUSU9OCiBU
aGUKIC5ObQotZGFlbW9uIGNvbnRyb2xzIGxpbmsga2V5cyBhbmQgUElOIGNv
ZGUgZm9yIEJsdWV0b290aCBkZXZpY2VzLgorZGFlbW9uIGNvbnRyb2xzIGxp
bmsga2V5cyBhbmQgUElOIGNvZGVzIGZvciBCbHVldG9vdGggZGV2aWNlcy4K
IEl0IG9wZW5zIHJhdyBIQ0kgc29ja2V0IGFuZCBsaXN0ZW5zIGZvciB0aGUK
LS5EdiBMaW5rX0tleV9SZXF1ZXN0Ci1hbmQKKy5EdiBMaW5rX0tleV9SZXF1
ZXN0ICwKIC5EdiBQSU5fQ29kZV9SZXF1ZXN0CithbmQKKy5EdiBMaW5rX0tl
eV9Ob3RpZmljYXRpb24KIEhDSSBldmVudHMuCi1PbmNlIGFwcHJvcHJpYXRl
IEhDSSBldmVudCBoYXMgYmVlbiByZWNlaXZlZCwgdGhlIGRhZW1vbiB3aWxs
CisuUHAKK09uY2UgCisuRHYgTGlua19LZXlfUmVxdWVzdAorb3IKKy5EdiBQ
SU5fQ29kZV9SZXF1ZXN0CitIQ0kgZXZlbnQgaXMgcmVjZWl2ZWQsIHRoZSBk
YWVtb24gd2lsbAogc2NhbiBjb25maWd1cmF0aW9uIGZpbGUgZm9yIG1hdGNo
aW5nIGVudHJ5LgotVGhlIHJlbW92ZSBkZXZpY2UgQkRfQUREUiBpcyB1c2Vk
IGFzIGEga2V5LgorVGhlIHJlbW90ZSBkZXZpY2UgQkRfQUREUiBpcyB1c2Vk
IGFzIGEga2V5LgogSWYgbm8gbWF0Y2hpbmcgZW50cnkgd2FzIGZvdW5kLCB0
aGUgZGVmYXVsdCBlbnRyeSB3aWxsIGJlIHVzZWQuCi1JZiBubyBkZWZhdWx0
IGVudHJ5IHdhcyBmb3VuZCB0aGVuIGl0IGlzIGFzc3VtZWQgdGhhdCBubyBs
aW5rIGtleSBhbmQgbm8gUElOIGNvZGUKLWV4aXN0LgorSWYgbm8gZGVmYXVs
dCBlbnRyeSB3YXMgZm91bmQgdGhlbiBpdCBpcyBhc3N1bWVkIHRoYXQgbm8g
bGluayBrZXkgYW5kIG5vIAorUElOIGNvZGUgZXhpc3RzLgogRm9yIGFueSBn
aXZlbiBlbnRyeSwgbGluayBrZXkgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIFBJ
TiBjb2RlLgogSWYgbGluayBrZXkgd2FzIG5vdCBzcGVjaWZpZWQsIGl0IG1l
YW5zIGRldmljZSBtdXN0IGdlbmVyYXRlIGxpbmsga2V5IGZyb20KIFBJTiBj
b2RlLgotSWYgZW50cnkgd2FzIGZvdW5kIGFuZCBoYXMgdGhlIGxpbmsga2V5
IChvciBQSU4gY29kZSkgdGhlbiB0aGUKK0lmIGVudHJ5IHdhcyBmb3VuZCBh
bmQgdGhlIGxpbmsga2V5IChvciBQSU4gY29kZSkgZXhpc3RzIHRoZW4gdGhl
CiAuRHYgTGlua19LZXlfUmVxdWVzdF9SZXBseQogKG9yCiAuRHYgUElOX0Nv
ZGVfUmVxdWVzdF9SZXBseSApCkBAIC02NiwxMiArNzIsMjggQEAKIC5QcAog
VGhlCiAuTm0KLWRhZW1vbiBjdXJyZW50bHkgZG9lcyBub3QgaGFuZGxlIEhD
SQorZGFlbW9uIGFsc28gaGFuZGxlcyBIQ0kKIC5EdiBMaW5rX0tleV9Ob3Rp
ZmljYXRpb24KLWV2ZW50IGFuZCBkb2VzIG5vdCBjYWNoZSBsaW5rIGtleXMg
Y3JlYXRlZCBmcm9tIHRoZSBQSU4gY29kZXMuCi1JdCBtZWFucyB0aGF0IHRo
ZSBsaW5rIGtleSBvbmx5IGV4aXN0cyB3aGlsZSBjb25uZWN0aW9uIGlzIG9w
ZW5lZC4KLUFmdGVyIHRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIHRlcm1pbmF0
ZWQsIHRoZSB1c2VyIHdpbGwgaGF2ZSB0byBlbnRlciBQSU4gY29kZQotYWdh
aW4uCitldmVudCBhbmQgY2FjaGVzIGxpbmsga2V5cyBjcmVhdGVkIGZyb20g
dGhlIFBJTiBjb2RlcyBpbiB0aGUgbWVtb3J5LgorVG8gcHJlc2VydmUgbGlu
ayBrZXlzIGJldHdlZW4gcmVzdGFydHMgdGhlCisuTm0KK2RhZW1vbiBkdW1w
cyBsaW5rIGtleXMgZm9yIGFsbCBlbnRyaWVzIGluIHRoZQorLlBhIC92YXIv
cnVuL2hjc2VjZC5rZXlzCitsaW5rIGtleXMgZmlsZS4KK0lmIGV4aXN0cywg
dGhlIGxpbmsga2V5cyBmaWxlIGdldHMgcHJvY2Vzc2VkIGJ5CisuTm0KK2Rh
ZW1vbiBhZnRlciBpdCBwcm9jZXNzZXMgaXRzIG1haW4gY29uZmlndXJhdGlv
biBmaWxlLgorVGhlIGxpbmsga2V5cyBmaWxlIGdldHMgd3JpdHRlbiBldmVy
eSB0aW1lCisuTm0KK2RhZW1vbiBpcyBncmFjZWZ1bGx5IHNodXRkb3duLgor
SXQgaXMgcG9zc2libGUgdG8gZm9yY2UKKy5ObQorZGFlbW9uIHRvIHJlLXJl
YWQgaXRzIG1haW4gY29uZmlndXJhdGlvbiBmaWxlIGFuZCBkdW1wIGxpbmsg
a2V5cyBmaWxlIGJ5IHNlbmRpbmcKKy5EdiBIVVAKK3NpZ25hbCB0byB0aGUK
Ky5ObQorcHJvY2Vzcy4KK1VzZXIgaXMgbm90IGV4cGVjdGVkIHRvIG1vZGlm
eSBsaW5rIGtleXMgZmlsZSBieSBoYW5kLgogLlBwCiBUaGUgY29tbWFuZCBs
aW5lIG9wdGlvbnMgYXJlIGFzIGZvbGxvd3M6CiAuQmwgLXRhZyAtd2lkdGgg
aW5kZW50CkBAIC05NCwxMiArMTE2LDEyIEBACiAuQmwgLXRhZyAtd2lkdGgg
Ii5QYSAvZXRjL2JsdWV0b290aC9oY3NlY2QuY29uZiIgLWNvbXBhY3QKIC5J
dCBQYSAvZXRjL2JsdWV0b290aC9oY3NlY2QuY29uZgogLkl0IFBhIC92YXIv
cnVuL2hjc2VjZC5waWQKKy5JdCBQYSAvdmFyL3J1bi9oY3NlY2Qua2V5cwog
LkVsCiAuU2ggU0VFIEFMU08KLS5YciBuZXRncmFwaCAzICwKLS5YciBuZXRn
cmFwaCA0ICwKIC5YciBuZ19idHNvY2tldCA0ICwKIC5YciBuZ19oY2kgNCAs
CisuWHIgaGNzZWNkLmNvbmYgNSAsCiAuWHIgaGNjb250cm9sIDggLAogLlhy
IGhjc2VyaWFsZCA4CiAuU2ggQVVUSE9SUwpJbmRleDogaGNzZWNkLmMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3Vzci9sb2NhbC9jdnMv
dXNyLnNiaW4vYmx1ZXRvb3RoL2hjc2VjZC9oY3NlY2QuYyx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS40CmRpZmYgLXUgLXIxLjQgaGNzZWNkLmMKLS0tIGhj
c2VjZC5jCTIxIE1heSAyMDAzIDIyOjQwOjMxIC0wMDAwCTEuNAorKysgaGNz
ZWNkLmMJNSBKdW4gMjAwMyAyMDo1Njo0NyAtMDAwMApAQCAtNDMsMTAgKzQz
LDYgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlICJoY3NlY2Qu
aCIKIAotI2RlZmluZQlIQ1NFQ0RfQlVGRkVSX1NJWkUJNTEyCi0jZGVmaW5l
CUhDU0VDRF9JREVOVAkJImhjc2VjZCIKLSNkZWZpbmUJSENTRUNEX1BJREZJ
TEUJCSIvdmFyL3J1bi8iIEhDU0VDRF9JREVOVCAiLnBpZCIKLQogc3RhdGlj
IGludAlkb25lID0gMDsKIAogc3RhdGljIGludCBwcm9jZXNzX3Bpbl9jb2Rl
X3JlcXVlc3RfZXZlbnQKQEAgLTU3LDYgKzUzLDEwIEBACiAJKGludCBzb2Nr
LCBzdHJ1Y3Qgc29ja2FkZHJfaGNpICphZGRyLCBiZGFkZHJfcCBiZGFkZHIs
IGNoYXIgY29uc3QgKnBpbik7CiBzdGF0aWMgaW50IHNlbmRfbGlua19rZXlf
cmVwbHkKIAkoaW50IHNvY2ssIHN0cnVjdCBzb2NrYWRkcl9oY2kgKmFkZHIs
IGJkYWRkcl9wIGJkYWRkciwgdV9pbnQ4X3QgKmtleSk7CitzdGF0aWMgaW50
IHByb2Nlc3NfbGlua19rZXlfbm90aWZpY2F0aW9uX2V2ZW50CisJKGludCBz
b2NrLCBzdHJ1Y3Qgc29ja2FkZHJfaGNpICphZGRyLCBuZ19oY2lfbGlua19r
ZXlfbm90aWZpY2F0aW9uX2VwICplcCk7CitzdGF0aWMgdm9pZCBzaWdodXAK
KwkoaW50IHMpOwogc3RhdGljIHZvaWQgc2lnaW50CiAJKGludCBzKTsKIHN0
YXRpYyB2b2lkIHVzYWdlCkBAIC0xMTAsNyArMTEwLDcgQEAKIAkJZXJyKDEs
ICJDb3VsZCBub3Qgc2lnYWN0aW9uKFNJR0lOVCkiKTsKIAogCW1lbXNldCgm
c2EsIDAsIHNpemVvZihzYSkpOwotCXNhLnNhX2hhbmRsZXIgPSByZWFkX2Nv
bmZpZ19maWxlOworCXNhLnNhX2hhbmRsZXIgPSBzaWdodXA7CiAJaWYgKHNp
Z2FjdGlvbihTSUdIVVAsICZzYSwgTlVMTCkgPCAwKQogCQllcnIoMSwgIkNv
dWxkIG5vdCBzaWdhY3Rpb24oU0lHSFVQKSIpOwogCkBAIC0xMjIsNiArMTIy
LDcgQEAKIAltZW1zZXQoJmZpbHRlciwgMCwgc2l6ZW9mKGZpbHRlcikpOwog
CWJpdF9zZXQoZmlsdGVyLmV2ZW50X21hc2ssIE5HX0hDSV9FVkVOVF9QSU5f
Q09ERV9SRVEgLSAxKTsKIAliaXRfc2V0KGZpbHRlci5ldmVudF9tYXNrLCBO
R19IQ0lfRVZFTlRfTElOS19LRVlfUkVRIC0gMSk7CisJYml0X3NldChmaWx0
ZXIuZXZlbnRfbWFzaywgTkdfSENJX0VWRU5UX0xJTktfS0VZX05PVElGSUNB
VElPTiAtIDEpOwogCiAJaWYgKHNldHNvY2tvcHQoc29jaywgU09MX0hDSV9S
QVcsIFNPX0hDSV9SQVdfRklMVEVSLAogCQkJKHZvaWQgKiBjb25zdCkgJmZp
bHRlciwgc2l6ZW9mKGZpbHRlcikpIDwgMCkKQEAgLTEzMyw3ICsxMzQsOCBA
QAogCiAJb3BlbmxvZyhIQ1NFQ0RfSURFTlQsIExPR19OREVMQVl8TE9HX1BF
UlJPUnxMT0dfUElELCBMT0dfREFFTU9OKTsKIAotCXJlYWRfY29uZmlnX2Zp
bGUoMCk7CisJcmVhZF9jb25maWdfZmlsZSgpOworCXJlYWRfa2V5c19maWxl
KCk7CiAKIAlpZiAoZGV0YWNoKSB7CiAJCUZJTEUJKnBpZCA9IE5VTEw7CkBA
IC0xNzksNiArMTgxLDExIEBACiAJCQkJCQkJKGJkYWRkcl9wKShldmVudCAr
IDEpKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgTkdfSENJX0VWRU5UX0xJTktf
S0VZX05PVElGSUNBVElPTjoKKwkJCXByb2Nlc3NfbGlua19rZXlfbm90aWZp
Y2F0aW9uX2V2ZW50KHNvY2ssICZhZGRyLAorCQkJCShuZ19oY2lfbGlua19r
ZXlfbm90aWZpY2F0aW9uX2VwICopKGV2ZW50ICsgMSkpOworCQkJYnJlYWs7
CisKIAkJZGVmYXVsdDoKIAkJCXN5c2xvZyhMT0dfRVJSLCAiUmVjZWl2ZWQg
dW5leHBlY3RlZCBIQ0kgZXZlbnQsICIgXAogCQkJCQkiZXZlbnQ9JSN4Iiwg
ZXZlbnQtPmV2ZW50KTsKQEAgLTE5MSw2ICsxOTgsNyBAQAogCQkJc3lzbG9n
KExPR19FUlIsICJDb3VsZCBub3QgcmVtb3ZlIFBJRCBmaWxlICVzLiAlcyAo
JWQpIiwKIAkJCQkJSENTRUNEX1BJREZJTEUsIHN0cmVycm9yKGVycm5vKSwg
ZXJybm8pOwogCisJZHVtcF9rZXlzX2ZpbGUoKTsKIAljbGVhbl9jb25maWco
KTsKIAljbG9zZWxvZygpOwogCWNsb3NlKHNvY2spOwpAQCAtMjA2LDI3ICsy
MTQsMjEgQEAKIAlsaW5rX2tleV9wCWtleSA9IE5VTEw7CiAKIAlzeXNsb2co
TE9HX0RFQlVHLCAiR290IFBJTl9Db2RlX1JlcXVlc3QgZXZlbnQgZnJvbSAn
JXMnLCAiIFwKLQkJCSJyZW1vdGUgYmRhZGRyICV4OiV4OiV4OiV4OiV4OiV4
IiwgYWRkci0+aGNpX25vZGUsCi0JCQliZGFkZHItPmJbNV0sIGJkYWRkci0+
Yls0XSwgYmRhZGRyLT5iWzNdLAotCQkJYmRhZGRyLT5iWzJdLCBiZGFkZHIt
PmJbMV0sIGJkYWRkci0+YlswXSk7CisJCQkicmVtb3RlIGJkYWRkciAlcyIs
IGFkZHItPmhjaV9ub2RlLAorCQkJYnRfbnRvYShiZGFkZHIsIE5VTEwpKTsK
IAogCWlmICgoa2V5ID0gZ2V0X2tleShiZGFkZHIsIDApKSAhPSBOVUxMKSB7
CiAJCXN5c2xvZyhMT0dfREVCVUcsICJGb3VuZCBtYXRjaGluZyBlbnRyeSwg
IiBcCi0JCQkJInJlbW90ZSBiZGFkZHIgJXg6JXg6JXg6JXg6JXg6JXgsIG5h
bWUgJyVzJywgIiBcCi0JCQkJIlBJTiBjb2RlICVzIiwKLQkJCQlrZXktPmJk
YWRkci5iWzVdLCBrZXktPmJkYWRkci5iWzRdLAotCQkJCWtleS0+YmRhZGRy
LmJbM10sIGtleS0+YmRhZGRyLmJbMl0sCi0JCQkJa2V5LT5iZGFkZHIuYlsx
XSwga2V5LT5iZGFkZHIuYlswXSwKKwkJCQkicmVtb3RlIGJkYWRkciAlcywg
bmFtZSAnJXMnLCBQSU4gY29kZSAlcyIsCisJCQkJYnRfbnRvYSgma2V5LT5i
ZGFkZHIsIE5VTEwpLAogCQkJCShrZXktPm5hbWUgIT0gTlVMTCk/IGtleS0+
bmFtZSA6ICJObyBuYW1lIiwKIAkJCQkoa2V5LT5waW4gIT0gTlVMTCk/ICJl
eGlzdHMiIDogImRvZXNuJ3QgZXhpc3QiKTsKIAogCQlyZXR1cm4gKHNlbmRf
cGluX2NvZGVfcmVwbHkoc29jaywgYWRkciwgYmRhZGRyLCBrZXktPnBpbikp
OwogCX0KIAotCXN5c2xvZyhMT0dfREVCVUcsICJDb3VsZCBub3QgUElOIGNv
ZGUgZm9yIHJlbW90ZSBiZGFkZHIgIiBcCi0JCQkiJXg6JXg6JXg6JXg6JXg6
JXgiLAotCQkJYmRhZGRyLT5iWzVdLCBiZGFkZHItPmJbNF0sIGJkYWRkci0+
YlszXSwKLQkJCWJkYWRkci0+YlsyXSwgYmRhZGRyLT5iWzFdLCBiZGFkZHIt
PmJbMF0pOworCXN5c2xvZyhMT0dfREVCVUcsICJDb3VsZCBub3QgUElOIGNv
ZGUgZm9yIHJlbW90ZSBiZGFkZHIgJXMiLAorCQkJYnRfbnRvYShiZGFkZHIs
IE5VTEwpKTsKIAogCXJldHVybiAoc2VuZF9waW5fY29kZV9yZXBseShzb2Nr
LCBhZGRyLCBiZGFkZHIsIE5VTEwpKTsKIH0KQEAgLTIzOSwyNyArMjQxLDIx
IEBACiAJbGlua19rZXlfcAlrZXkgPSBOVUxMOwogCiAJc3lzbG9nKExPR19E
RUJVRywgIkdvdCBMaW5rX0tleV9SZXF1ZXN0IGV2ZW50IGZyb20gJyVzJywg
IiBcCi0JCQkicmVtb3RlIGJkYWRkciAleDoleDoleDoleDoleDoleCIsIGFk
ZHItPmhjaV9ub2RlLAotCQkJYmRhZGRyLT5iWzVdLCBiZGFkZHItPmJbNF0s
IGJkYWRkci0+YlszXSwKLQkJCWJkYWRkci0+YlsyXSwgYmRhZGRyLT5iWzFd
LCBiZGFkZHItPmJbMF0pOworCQkJInJlbW90ZSBiZGFkZHIgJXMiLCBhZGRy
LT5oY2lfbm9kZSwKKwkJCWJ0X250b2EoYmRhZGRyLCBOVUxMKSk7CiAKIAlp
ZiAoKGtleSA9IGdldF9rZXkoYmRhZGRyLCAwKSkgIT0gTlVMTCkgewogCQlz
eXNsb2coTE9HX0RFQlVHLCAiRm91bmQgbWF0Y2hpbmcgZW50cnksICIgXAot
CQkJCSJyZW1vdGUgYmRhZGRyICV4OiV4OiV4OiV4OiV4OiV4LCBuYW1lICcl
cycsICIgXAotCQkJCSJsaW5rIGtleSAlcyIsCi0JCQkJa2V5LT5iZGFkZHIu
Yls1XSwga2V5LT5iZGFkZHIuYls0XSwKLQkJCQlrZXktPmJkYWRkci5iWzNd
LCBrZXktPmJkYWRkci5iWzJdLAotCQkJCWtleS0+YmRhZGRyLmJbMV0sIGtl
eS0+YmRhZGRyLmJbMF0sCisJCQkJInJlbW90ZSBiZGFkZHIgJXMsIG5hbWUg
JyVzJywgbGluayBrZXkgJXMiLAorCQkJCWJ0X250b2EoJmtleS0+YmRhZGRy
LCBOVUxMKSwKIAkJCQkoa2V5LT5uYW1lICE9IE5VTEwpPyBrZXktPm5hbWUg
OiAiTm8gbmFtZSIsCiAJCQkJKGtleS0+a2V5ICE9IE5VTEwpPyAiZXhpc3Rz
IiA6ICJkb2Vzbid0IGV4aXN0Iik7CiAKIAkJcmV0dXJuIChzZW5kX2xpbmtf
a2V5X3JlcGx5KHNvY2ssIGFkZHIsIGJkYWRkciwga2V5LT5rZXkpKTsKIAl9
CiAKLQlzeXNsb2coTE9HX0RFQlVHLCAiQ291bGQgbm90IGZpbmQgbGluayBr
ZXkgZm9yIHJlbW90ZSBiZGFkZHIgIiBcCi0JCQkiJXg6JXg6JXg6JXg6JXg6
JXgiLAotCQkJYmRhZGRyLT5iWzVdLCBiZGFkZHItPmJbNF0sIGJkYWRkci0+
YlszXSwKLQkJCWJkYWRkci0+YlsyXSwgYmRhZGRyLT5iWzFdLCBiZGFkZHIt
PmJbMF0pOworCXN5c2xvZyhMT0dfREVCVUcsICJDb3VsZCBub3QgZmluZCBs
aW5rIGtleSBmb3IgcmVtb3RlIGJkYWRkciAlcyIsCisJCQlidF9udG9hKGJk
YWRkciwgTlVMTCkpOwogCiAJcmV0dXJuIChzZW5kX2xpbmtfa2V5X3JlcGx5
KHNvY2ssIGFkZHIsIGJkYWRkciwgTlVMTCkpOwogfQpAQCAtMjkwLDEwICsy
ODYsOCBAQAogCQljcC0+cGluX3NpemUgPSBzdHJsZW4oY3AtPnBpbik7CiAK
IAkJc3lzbG9nKExPR19ERUJVRywgIlNlbmRpbmcgUElOX0NvZGVfUmVwbHkg
dG8gJyVzJyAiIFwKLQkJCQkiZm9yIHJlbW90ZSBiZGFkZHIgJXg6JXg6JXg6
JXg6JXg6JXgiLAotCQkJCWFkZHItPmhjaV9ub2RlLAotCQkJCWJkYWRkci0+
Yls1XSwgYmRhZGRyLT5iWzRdLCBiZGFkZHItPmJbM10sIAotCQkJCWJkYWRk
ci0+YlsyXSwgYmRhZGRyLT5iWzFdLCBiZGFkZHItPmJbMF0pOworCQkJCSJm
b3IgcmVtb3RlIGJkYWRkciAlcyIsCisJCQkJYWRkci0+aGNpX25vZGUsIGJ0
X250b2EoYmRhZGRyLCBOVUxMKSk7CiAJfSBlbHNlIHsKIAkJbmdfaGNpX3Bp
bl9jb2RlX25lZ19yZXBfY3AJKmNwID0gTlVMTDsKIApAQCAtMzA1LDEwICsy
OTksOCBAQAogCQltZW1jcHkoJmNwLT5iZGFkZHIsIGJkYWRkciwgc2l6ZW9m
KGNwLT5iZGFkZHIpKTsKIAogCQlzeXNsb2coTE9HX0RFQlVHLCAiU2VuZGlu
ZyBQSU5fQ29kZV9OZWdhdGl2ZV9SZXBseSB0byAnJXMnICIgXAotCQkJCSJm
b3IgcmVtb3RlIGJkYWRkciAleDoleDoleDoleDoleDoleCIsCi0JCQkJYWRk
ci0+aGNpX25vZGUsCi0JCQkJYmRhZGRyLT5iWzVdLCBiZGFkZHItPmJbNF0s
IGJkYWRkci0+YlszXSwgCi0JCQkJYmRhZGRyLT5iWzJdLCBiZGFkZHItPmJb
MV0sIGJkYWRkci0+YlswXSk7CisJCQkJImZvciByZW1vdGUgYmRhZGRyICVz
IiwKKwkJCQlhZGRyLT5oY2lfbm9kZSwgYnRfbnRvYShiZGFkZHIsIE5VTEwp
KTsKIAl9CiAKIGFnYWluOgpAQCAtMzE4LDEwICszMTAsOCBAQAogCQkJZ290
byBhZ2FpbjsKIAogCQlzeXNsb2coTE9HX0VSUiwgIkNvdWxkIG5vdCBzZW5k
IFBJTiBjb2RlIHJlcGx5IHRvICclcycgIiBcCi0JCQkJImZvciByZW1vdGUg
YmRhZGRyICV4OiV4OiV4OiV4OiV4OiV4LiAlcyAoJWQpIiwKLQkJCQlhZGRy
LT5oY2lfbm9kZSwKLQkJCQliZGFkZHItPmJbNV0sIGJkYWRkci0+Yls0XSwg
YmRhZGRyLT5iWzNdLCAKLQkJCQliZGFkZHItPmJbMl0sIGJkYWRkci0+Ylsx
XSwgYmRhZGRyLT5iWzBdLAorCQkJCSJmb3IgcmVtb3RlIGJkYWRkciAlcy4g
JXMgKCVkKSIsCisJCQkJYWRkci0+aGNpX25vZGUsIGJ0X250b2EoYmRhZGRy
LCBOVUxMKSwKIAkJCQlzdHJlcnJvcihlcnJubyksIGVycm5vKTsKIAkJcmV0
dXJuICgtMSk7CiAJfQpAQCAtMzU0LDEwICszNDQsOCBAQAogCQltZW1jcHko
JmNwLT5rZXksIGtleSwgc2l6ZW9mKGNwLT5rZXkpKTsKIAogCQlzeXNsb2co
TE9HX0RFQlVHLCAiU2VuZGluZyBMaW5rX0tleV9SZXBseSB0byAnJXMnICIg
XAotCQkJCSJmb3IgcmVtb3RlIGJkYWRkciAleDoleDoleDoleDoleDoleCIs
Ci0JCQkJYWRkci0+aGNpX25vZGUsCi0JCQkJYmRhZGRyLT5iWzVdLCBiZGFk
ZHItPmJbNF0sIGJkYWRkci0+YlszXSwgCi0JCQkJYmRhZGRyLT5iWzJdLCBi
ZGFkZHItPmJbMV0sIGJkYWRkci0+YlswXSk7CisJCQkJImZvciByZW1vdGUg
YmRhZGRyICVzIiwKKwkJCQlhZGRyLT5oY2lfbm9kZSwgYnRfbnRvYShiZGFk
ZHIsIE5VTEwpKTsKIAl9IGVsc2UgewogCQluZ19oY2lfbGlua19rZXlfbmVn
X3JlcF9jcAkqY3AgPSBOVUxMOwogCkBAIC0zNjksMTAgKzM1Nyw4IEBACiAJ
CW1lbWNweSgmY3AtPmJkYWRkciwgYmRhZGRyLCBzaXplb2YoY3AtPmJkYWRk
cikpOwogCiAJCXN5c2xvZyhMT0dfREVCVUcsICJTZW5kaW5nIExpbmtfS2V5
X05lZ2F0aXZlX1JlcGx5IHRvICclcycgIiBcCi0JCQkJImZvciByZW1vdGUg
YmRhZGRyICV4OiV4OiV4OiV4OiV4OiV4IiwKLQkJCQlhZGRyLT5oY2lfbm9k
ZSwKLQkJCQliZGFkZHItPmJbNV0sIGJkYWRkci0+Yls0XSwgYmRhZGRyLT5i
WzNdLCAKLQkJCQliZGFkZHItPmJbMl0sIGJkYWRkci0+YlsxXSwgYmRhZGRy
LT5iWzBdKTsKKwkJCQkiZm9yIHJlbW90ZSBiZGFkZHIgJXMiLAorCQkJCWFk
ZHItPmhjaV9ub2RlLCBidF9udG9hKGJkYWRkciwgTlVMTCkpOwogCX0KIAog
YWdhaW46CkBAIC0zODIsMTAgKzM2OCw4IEBACiAJCQlnb3RvIGFnYWluOwog
CiAJCXN5c2xvZyhMT0dfRVJSLCAiQ291bGQgbm90IHNlbmQgbGluayBrZXkg
cmVwbHkgdG8gJyVzJyAiIFwKLQkJCQkiZm9yIHJlbW90ZSBiZGFkZHIgJXg6
JXg6JXg6JXg6JXg6JXguICVzICglZCkiLAotCQkJCWFkZHItPmhjaV9ub2Rl
LAotCQkJCWJkYWRkci0+Yls1XSwgYmRhZGRyLT5iWzRdLCBiZGFkZHItPmJb
M10sIAotCQkJCWJkYWRkci0+YlsyXSwgYmRhZGRyLT5iWzFdLCBiZGFkZHIt
PmJbMF0sCisJCQkJImZvciByZW1vdGUgYmRhZGRyICVzLiAlcyAoJWQpIiwK
KwkJCQlhZGRyLT5oY2lfbm9kZSwgYnRfbnRvYShiZGFkZHIsIE5VTEwpLAog
CQkJCXN0cmVycm9yKGVycm5vKSwgZXJybm8pOwogCQlyZXR1cm4gKC0xKTsK
IAl9CkBAIC0zOTMsNyArMzc3LDUzIEBACiAJcmV0dXJuICgwKTsKIH0KIAot
LyogU2lnbmFsIGhhbmRsZXIgKi8KKy8qIFByb2Nlc3MgTGlua19LZXlfTm90
aWZpY2F0aW9uIGV2ZW50ICovCitzdGF0aWMgaW50Citwcm9jZXNzX2xpbmtf
a2V5X25vdGlmaWNhdGlvbl9ldmVudChpbnQgc29jaywgc3RydWN0IHNvY2th
ZGRyX2hjaSAqYWRkciwKKwkJbmdfaGNpX2xpbmtfa2V5X25vdGlmaWNhdGlv
bl9lcCAqZXApCit7CisJbGlua19rZXlfcAlrZXkgPSBOVUxMOworCisJc3lz
bG9nKExPR19ERUJVRywgIkdvdCBMaW5rX0tleV9Ob3RpZmljYXRpb24gZXZl
bnQgZnJvbSAnJXMnLCAiIFwKKwkJCSJyZW1vdGUgYmRhZGRyICVzIiwgYWRk
ci0+aGNpX25vZGUsCisJCQlidF9udG9hKCZlcC0+YmRhZGRyLCBOVUxMKSk7
CisKKwlpZiAoKGtleSA9IGdldF9rZXkoJmVwLT5iZGFkZHIsIDEpKSA9PSBO
VUxMKSB7CisJCXN5c2xvZyhMT0dfRVJSLCAiQ291bGQgbm90IGZpbmQgZW50
cnkgZm9yIHJlbW90ZSBiZGFkZHIgJXMiLAorCQkJCWJ0X250b2EoJmVwLT5i
ZGFkZHIsIE5VTEwpKTsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJc3lzbG9n
KExPR19ERUJVRywgIlVwZGF0aW5nIGxpbmsga2V5IGZvciB0aGUgZW50cnks
ICIgXAorCQkJInJlbW90ZSBiZGFkZHIgJXMsIG5hbWUgJyVzJywgbGluayBr
ZXkgJXMiLAorCQkJYnRfbnRvYSgma2V5LT5iZGFkZHIsIE5VTEwpLAorCQkJ
KGtleS0+bmFtZSAhPSBOVUxMKT8ga2V5LT5uYW1lIDogIk5vIG5hbWUiLAor
CQkJKGtleS0+a2V5ICE9IE5VTEwpPyAiZXhpc3RzIiA6ICJkb2Vzbid0IGV4
aXN0Iik7CisKKwlpZiAoa2V5LT5rZXkgPT0gTlVMTCkgeworCQlrZXktPmtl
eSA9ICh1X2ludDhfdCAqKSBtYWxsb2MoTkdfSENJX0tFWV9TSVpFKTsKKwkJ
aWYgKGtleS0+a2V5ID09IE5VTEwpIHsKKwkJCXN5c2xvZyhMT0dfRVJSLCAi
Q291bGQgbm90IGFsbG9jYXRlIGxpbmsga2V5Iik7CisJCQlleGl0KDEpOwor
CQl9CisJfQorCisJbWVtY3B5KGtleS0+a2V5LCAmZXAtPmtleSwgTkdfSENJ
X0tFWV9TSVpFKTsKKworCXJldHVybiAoMCk7Cit9CisKKy8qIFNpZ25hbCBo
YW5kbGVycyAqLworc3RhdGljIHZvaWQKK3NpZ2h1cChpbnQgcykKK3sKKwlz
eXNsb2coTE9HX0RFQlVHLCAiR290IFNJR0hVUCAoJWQpIiwgcyk7CisKKwlk
dW1wX2tleXNfZmlsZSgpOworCXJlYWRfY29uZmlnX2ZpbGUoKTsKKwlyZWFk
X2tleXNfZmlsZSgpOworfQorCiBzdGF0aWMgdm9pZAogc2lnaW50KGludCBz
KQogewpJbmRleDogaGNzZWNkLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL3Vzci9sb2NhbC9jdnMvdXNyLnNiaW4vYmx1ZXRvb3RoL2hj
c2VjZC9oY3NlY2QuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYg
LXUgLXIxLjEgaGNzZWNkLmgKLS0tIGhjc2VjZC5oCTI0IE5vdiAyMDAyIDIw
OjIyOjM5IC0wMDAwCTEuMQorKysgaGNzZWNkLmgJNSBKdW4gMjAwMyAyMDo1
Mjo1MCAtMDAwMApAQCAtMzIsNiArMzIsMTEgQEAKICNpZm5kZWYgX0hDU0VD
RF9IXwogI2RlZmluZSBfSENTRUNEX0hfIDEKIAorI2RlZmluZSBIQ1NFQ0Rf
QlVGRkVSX1NJWkUJNTEyCisjZGVmaW5lIEhDU0VDRF9JREVOVAkJImhjc2Vj
ZCIKKyNkZWZpbmUgSENTRUNEX1BJREZJTEUJCSIvdmFyL3J1bi8iIEhDU0VD
RF9JREVOVCAiLnBpZCIKKyNkZWZpbmUgSENTRUNEX0tFWVNGSUxFCQkiL3Zh
ci9ydW4vIiBIQ1NFQ0RfSURFTlQgIi5rZXlzIgorCiBzdHJ1Y3QgbGlua19r
ZXkKIHsKIAliZGFkZHJfdAkJIGJkYWRkcjsgLyogcmVtb3RlIGRldmljZSBC
REFERFIgKi8KQEAgLTQ5LDkgKzU0LDEyIEBACiB2b2lkCQlkdW1wX2NvbmZp
Zwkodm9pZCk7CiAjZW5kaWYKIAotdm9pZAkJcmVhZF9jb25maWdfZmlsZShp
bnQgcyk7Cit2b2lkCQlyZWFkX2NvbmZpZ19maWxlKHZvaWQpOwogdm9pZAkJ
Y2xlYW5fY29uZmlnCSh2b2lkKTsKIGxpbmtfa2V5X3AJZ2V0X2tleQkJKGJk
YWRkcl9wIGJkYWRkciwgaW50IGV4YWN0X21hdGNoKTsKKworaW50CQlyZWFk
X2tleXNfZmlsZSAgKHZvaWQpOworaW50CQlkdW1wX2tleXNfZmlsZSAgKHZv
aWQpOwogCiAjZW5kaWYgLyogbmRlZiBfSENTRUNEX0hfICovCiAKSW5kZXg6
IHBhcnNlci55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC91
c3IvbG9jYWwvY3ZzL3Vzci5zYmluL2JsdWV0b290aC9oY3NlY2QvcGFyc2Vy
LnksdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC11IC1yMS40IHBh
cnNlci55Ci0tLSBwYXJzZXIueQkyNiBNYXkgMjAwMyAyMzowMzozOSAtMDAw
MAkxLjQKKysrIHBhcnNlci55CTYgSnVuIDIwMDMgMDA6Mjg6MTYgLTAwMDAK
QEAgLTMwLDkgKzMwLDExIEBACiAgKiAkRnJlZUJTRCQKICAqLwogCisjaW5j
bHVkZSA8c3lzL2ZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+CiAj
aW5jbHVkZSA8Ymx1ZXRvb3RoLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KKyNp
bmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1
ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtODEsMTMg
KzgzLDggQEAKIAkJCXsKIAkJCWlmIChnZXRfa2V5KCZrZXktPmJkYWRkciwg
MSkgIT0gTlVMTCkgewogCQkJCXN5c2xvZyhMT0dfRVJSLCAiSWdub3Jpbmcg
ZHVwbGljYXRlZCBlbnRyeSAiIFwKLQkJCQkJCSJmb3IgYmRhZGRyICV4OiV4
OiV4OiV4OiV4OiV4IiwKLQkJCQkJCWtleS0+YmRhZGRyLmJbNV0sCi0JCQkJ
CQlrZXktPmJkYWRkci5iWzRdLAotCQkJCQkJa2V5LT5iZGFkZHIuYlszXSwK
LQkJCQkJCWtleS0+YmRhZGRyLmJbMl0sCi0JCQkJCQlrZXktPmJkYWRkci5i
WzFdLAotCQkJCQkJa2V5LT5iZGFkZHIuYlswXSk7CisJCQkJCQkiZm9yIGJk
YWRkciAlcyIsCisJCQkJCQlidF9udG9hKCZrZXktPmJkYWRkciwgTlVMTCkp
OwogCQkJCWZyZWVfa2V5KGtleSk7CiAJCQl9IGVsc2UgCiAJCQkJTElTVF9J
TlNFUlRfSEVBRCgmbGlua19rZXlzLCBrZXksIG5leHQpOwpAQCAtMTk0LDcg
KzE5MSw3IEBACiAKIC8qIFJlLXJlYWQgY29uZmlnIGZpbGUgKi8KIHZvaWQK
LXJlYWRfY29uZmlnX2ZpbGUoaW50IHMpCityZWFkX2NvbmZpZ19maWxlKHZv
aWQpCiB7CiAJZXh0ZXJuIEZJTEUJKnl5aW47CiAKQEAgLTI4NSw2ICsyODIs
MTE0IEBACiAJfQogfQogI2VuZGlmCisKKy8qIFJlYWQga2V5cyBmaWxlICov
CitpbnQKK3JlYWRfa2V5c19maWxlKHZvaWQpCit7CisJRklMRQkJKmYgPSBO
VUxMOworCWxpbmtfa2V5X3QJKmtleSA9IE5VTEw7CisJY2hhcgkJIGJ1ZltI
Q1NFQ0RfQlVGRkVSX1NJWkVdLCAqcCA9IE5VTEwsICpjcCA9IE5VTEw7CisJ
YmRhZGRyX3QJIGJkYWRkcjsKKwlpbnQJCSBpLCBsZW47CisKKwlpZiAoKGYg
PSBmb3BlbihIQ1NFQ0RfS0VZU0ZJTEUsICJyIikpID09IE5VTEwpIHsKKwkJ
aWYgKGVycm5vID09IEVOT0VOVCkKKwkJCXJldHVybiAoMCk7CisKKwkJc3lz
bG9nKExPR19FUlIsICJDb3VsZCBub3Qgb3BlbiBrZXlzIGZpbGUgJXMuICVz
ICglZClcbiIsCisJCQkJSENTRUNEX0tFWVNGSUxFLCBzdHJlcnJvcihlcnJu
byksIGVycm5vKTsKKworCQlyZXR1cm4gKC0xKTsKKwl9CisKKwl3aGlsZSAo
KHAgPSBmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSkgIT0gTlVMTCkgewor
CQlpZiAoKnAgPT0gJyMnKQorCQkJY29udGludWU7CisJCWlmICgoY3AgPSBz
dHJwYnJrKHAsICIgIikpID09IE5VTEwpCisJCQljb250aW51ZTsKKworCQkq
Y3ArKyA9ICdcMCc7CisKKwkJaWYgKCFidF9hdG9uKHAsICZiZGFkZHIpKQor
CQkJY29udGludWU7CisKKwkJaWYgKChrZXkgPSBnZXRfa2V5KCZiZGFkZHIs
IDEpKSA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJaWYgKGtleS0+a2V5
ID09IE5VTEwpIHsKKwkJCWtleS0+a2V5ID0gKHVfaW50OF90ICopIG1hbGxv
YyhOR19IQ0lfS0VZX1NJWkUpOworCQkJaWYgKGtleS0+a2V5ID09IE5VTEwp
IHsKKwkJCQlzeXNsb2coTE9HX0VSUiwgIkNvdWxkIG5vdCBhbGxvY2F0ZSBs
aW5rIGtleSIpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCX0KKworCQltZW1z
ZXQoa2V5LT5rZXksIDAsIE5HX0hDSV9LRVlfU0laRSk7CisKKwkJbGVuID0g
c3RybGVuKGNwKSAvIDI7CisJCWlmIChsZW4gPiBOR19IQ0lfS0VZX1NJWkUp
CisJCQlsZW4gPSBOR19IQ0lfS0VZX1NJWkU7CisKKwkJZm9yIChpID0gMDsg
aSA8IGxlbjsgaSArKykKKwkJCWtleS0+a2V5W2ldID0gaGV4YTJpbnQ4KGNw
ICsgMippKTsKKworCQlzeXNsb2coTE9HX0RFQlVHLCAiUmVzdG9yZWQgbGlu
ayBrZXkgZm9yIHRoZSBlbnRyeSwgIiBcCisJCQkJInJlbW90ZSBiZGFkZHIg
JXMsIG5hbWUgJyVzJyIsCisJCQkJYnRfbnRvYSgma2V5LT5iZGFkZHIsIE5V
TEwpLAorCQkJCShrZXktPm5hbWUgIT0gTlVMTCk/IGtleS0+bmFtZSA6ICJO
byBuYW1lIik7CisJfQorCisJZmNsb3NlKGYpOworCisJcmV0dXJuICgwKTsK
K30KKworLyogRHVtcCBrZXlzIGZpbGUgKi8KK2ludAorZHVtcF9rZXlzX2Zp
bGUodm9pZCkKK3sKKwlsaW5rX2tleV9wCWtleSA9IE5VTEw7CisJY2hhcgkJ
dG1wW1BBVEhfTUFYXSwgYnVmW0hDU0VDRF9CVUZGRVJfU0laRV07CisJaW50
CQlmOworCisJc25wcmludGYodG1wLCBzaXplb2YodG1wKSwgIiVzLnRtcCIs
IEhDU0VDRF9LRVlTRklMRSk7CisJaWYgKChmID0gb3Blbih0bXAsIE9fUkRX
UnxPX0NSRUFUfE9fVFJVTkN8T19FWENMLCAwNjAwKSkgPCAwKSB7CisJCXN5
c2xvZyhMT0dfRVJSLCAiQ291bGQgbm90IGNyZWF0ZSB0ZW1wIGtleXMgZmls
ZSAlcy4gJXMgKCVkKVxuIiwKKwkJCQl0bXAsIHN0cmVycm9yKGVycm5vKSwg
ZXJybm8pOworCQlyZXR1cm4gKC0xKTsKKwl9CisKKwlMSVNUX0ZPUkVBQ0go
a2V5LCAmbGlua19rZXlzLCBuZXh0KSB7CisJCWlmIChrZXktPmtleSA9PSBO
VUxMKQorCQkJY29udGludWU7CisKKwkJc25wcmludGYoYnVmLCBzaXplb2Yo
YnVmKSwKKyIlcyAlMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUw
MnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4XG4iLAorCQkJYnRfbnRv
YSgma2V5LT5iZGFkZHIsIE5VTEwpLAorCQkJa2V5LT5rZXlbMF0sICBrZXkt
PmtleVsxXSwgIGtleS0+a2V5WzJdLCAga2V5LT5rZXlbM10sCisJCQlrZXkt
PmtleVs0XSwgIGtleS0+a2V5WzVdLCAga2V5LT5rZXlbNl0sICBrZXktPmtl
eVs3XSwKKwkJCWtleS0+a2V5WzhdLCAga2V5LT5rZXlbOV0sICBrZXktPmtl
eVsxMF0sIGtleS0+a2V5WzExXSwKKwkJCWtleS0+a2V5WzEyXSwga2V5LT5r
ZXlbMTNdLCBrZXktPmtleVsxNF0sIGtleS0+a2V5WzE1XSk7CisKKwkJaWYg
KHdyaXRlKGYsIGJ1Ziwgc3RybGVuKGJ1ZikpIDwgMCkgeworCQkJc3lzbG9n
KExPR19FUlIsICJDb3VsZCBub3Qgd3JpdGUgdGVtcCBrZXlzIGZpbGUuICIg
XAorCQkJCQkiJXMgKCVkKVxuIiwgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7
CisJCQlicmVhazsKKwkJfQorCX0KKworCWNsb3NlKGYpOworCisJaWYgKHJl
bmFtZSh0bXAsIEhDU0VDRF9LRVlTRklMRSkgPCAwKSB7CisJCXN5c2xvZyhM
T0dfRVJSLCAiQ291bGQgbm90IHJlbmFtZSglcywgJXMpLiAlcyAoJWQpXG4i
LAorCQkJCXRtcCwgSENTRUNEX0tFWVNGSUxFLCBzdHJlcnJvcihlcnJubyks
IGVycm5vKTsKKwkJdW5saW5rKHRtcCk7CisJCXJldHVybiAoLTEpOworCX0K
KworCXJldHVybiAoMCk7Cit9CiAKIC8qIEZyZWUga2V5IGVudHJ5ICovCiBz
dGF0aWMgdm9pZAo=

--0-1215438428-1054920082=:65292--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030606172122.65380.qmail>