From owner-freebsd-mobile@FreeBSD.ORG Thu Jun 19 09:32:09 2003 Return-Path: Delivered-To: freebsd-mobile@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C63A637B401 for ; Thu, 19 Jun 2003 09:32:09 -0700 (PDT) Received: from web40302.mail.yahoo.com (web40302.mail.yahoo.com [66.218.78.81]) by mx1.FreeBSD.org (Postfix) with SMTP id 2FF9843FCB for ; Thu, 19 Jun 2003 09:32:09 -0700 (PDT) (envelope-from m_evmenkin@yahoo.com) Message-ID: <20030619163209.55279.qmail@web40302.mail.yahoo.com> Received: from [165.193.27.35] by web40302.mail.yahoo.com via HTTP; Thu, 19 Jun 2003 09:32:09 PDT Date: Thu, 19 Jun 2003 09:32:09 -0700 (PDT) From: Maksim Yevmenkin To: Kirill Bezzubets In-Reply-To: <20030619090359.GA1313@solaris.ru> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-1256208941-1056040329=:55076" cc: freebsd-mobile@freebsd.org Subject: PATCH: hcsecd(8) (was: GPRS + Bluetooth on FreeBSD) X-BeenThere: freebsd-mobile@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Mobile computing with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jun 2003 16:32:10 -0000 --0-1256208941-1056040329=:55076 Content-Type: text/plain; charset=us-ascii Content-Id: Content-Disposition: inline Hello Kirill, [ GPRS comments skipped ] thanks for the information. > By the way, thanks for your BT stack. It's great, although it would be > very useful if hcsecd could save its state. It will eliminate need to > do pairing every time I reboot my notebook (or do I do something wrong?). > I use the latest stack with patch from Jun, 6th. hmmm... i did send a patch, didn't i ? anyway, below is the copy of my e-mail and hcsecd(8) patch (see attached). please try it and let me know if it works for you. thanks, max ======================================================================= 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 for reporting this problem and helping with testing. thanks, max __________________________________ Do you Yahoo!? SBC Yahoo! DSL - Now only $29.95 per month! http://sbc.yahoo.com --0-1256208941-1056040329=:55076 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-1256208941-1056040329=:55076--