Message-ID: <55223.109.81.184.65.1397695567.squirrel@...1899...> Date: Thu, 17 Apr 2014 02:46:07 +0200 (CEST) From: "Daniel Kubec" MIME-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20140417024607_87143" Subject: [Openvpn-devel] [PATCH] Channel Binding Key based on Keying Material Exporters [RFC 5705] Reply-To: niel@...1898... List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: openvpn-devel@lists.sourceforge.net ------=_20140417024607_87143 Content-Type: text/plain; charset="ISO-8859-2" Content-Transfer-Encoding: quoted-printable Channel Binding Key based on TLS Keying Material Exporters [RFC 5705 ] allow additional keying material to be derived from existing TLS channel. This exported keying material can then be used for a variety of purposes. TLS allows client and server to establish keying material for use in the upper layers between the TLS end-points. Channel Bindings is straitforward and well-defined mechanism how to authenticate other layers. Following two attributes were added primary for the possible plugins extensions. Attributes tls_channel_id: Identifies TLS Sessions across (re)negotiation tls_binding_key: Secret crypto derivate based on Keying Material Exporters Configuration TLS Binding Key is generated when *.ovpn contains following for each TLS negotiation. example.ovpn: { # Channel Binding based on TLS Keying Material Exporter [RFC 5705] # # Note that exporter labels have the potential to collide with existing PRF # labels. In order to prevent this, labels SHOULD begin with "EXPORTER". # This is not a MUST because there are existing uses that have labels which do # not begin with this prefix. keying-material-exporter-label "EXPORTER_OPENVPN" # Export len bytes of keying material (min. 20) keying-material-exporter-length 20 } Changes This patch stays on top of crypto layer and that's reason why it will work for both crypto backends (openssl/polarssl). TLS_FINAL Plugin was called in key_method_2_read() before server_random was generated for the TLS server end-point and that's the reason why it's called at 2 places now. key_method_2_read() for server and key_method_2_write() for client. Use Cases: 1) Authentication of upper layers (like Kerberos etc) 2) Authentication of VPN's TLS channel using QRCODE and device such as smartphones. (Instead of user/pass dialog TLS VPN client could show for example QRCODE based on keying material derivate) 3) Authentication of Binding Key in confidental side-channel can be also us= ed and avoid/detect MITM (MITM provides his public key and that's reason why authentication of binding key will fail)= ------=_20140417024607_87143 Content-Type: application/octet-stream; name="openvpn-binding-key.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="openvpn-binding-key.patch" ZGlmZiAtLWdpdCBhL3NyYy9vcGVudnBuL2luaXQuYyBiL3NyYy9vcGVudnBuL2luaXQuYwppbmRl eCBjMjkwN2NkLi44YjU3NDE5IDEwMDY0NAotLS0gYS9zcmMvb3BlbnZwbi9pbml0LmMKKysrIGIv c3JjL29wZW52cG4vaW5pdC5jCkBAIC0yMzA3LDYgKzIzMDcsMTYgQEAgZG9faW5pdF9jcnlwdG9f dGxzIChzdHJ1Y3QgY29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgaW50IGZsYWdzKQogICAgICBs ZW5ndGggcHJlZml4ICovCiAgIHNvY2tldF9hZGp1c3RfZnJhbWVfcGFyYW1ldGVycyAoJnRvLmZy YW1lLCBvcHRpb25zLT5jZS5wcm90byk7CiAKKyAgLyogQ2hlY2tpbmcgZm9yIHJlcXVpcmVkIHBh cmFtZXRlcnMgZm9yIENoYW5uZWwgQmluZGluZ3MgKi8KKyAgdG8uYmluZGluZ19rZXlfc2l6ZSA9 IG9wdGlvbnMtPmtleWluZ19tYXRlcmlhbF9leHBvcnRlcl9sZW5ndGg7CisKKyAgdG8ua21lX2xh YmVsID0gKHVpbnQ4X3QqKW9wdGlvbnMtPmtleWluZ19tYXRlcmlhbF9leHBvcnRlcl9sYWJlbDsK KyAgdG8ua21lX2xhYmVsX3NpemUgPSB0by5rbWVfbGFiZWwgPyBzdHJsZW4odG8ua21lX2xhYmVs KSA6IDA7CisKKyAgdG8uYmluZGluZ19rZXlfc2l6ZSA9IG9wdGlvbnMtPmtleWluZ19tYXRlcmlh bF9leHBvcnRlcl9sZW5ndGg7CisgIHRvLmJpbmRpbmdfa2V5X2dlbiA9ICh0by5rbWVfbGFiZWxf c2l6ZSAmJiB0by5iaW5kaW5nX2tleV9zaXplID49IDIwKSA/CisgICAgICAgICAgICAgICAgICAg ICAgICB0cnVlIDogZmFsc2U7CisKICAgLyoKICAgICogSW5pdGlhbGl6ZSBPcGVuVlBOJ3MgbWFz dGVyIFRMUy1tb2RlIG9iamVjdC4KICAgICovCkBAIC0yMzE1LDYgKzIzMjUsNyBAQCBkb19pbml0 X2NyeXB0b190bHMgKHN0cnVjdCBjb250ZXh0ICpjLCBjb25zdCB1bnNpZ25lZCBpbnQgZmxhZ3Mp CiAKICAgaWYgKGZsYWdzICYgQ0ZfSU5JVF9UTFNfQVVUSF9TVEFOREFMT05FKQogICAgIGMtPmMy LnRsc19hdXRoX3N0YW5kYWxvbmUgPSB0bHNfYXV0aF9zdGFuZGFsb25lX2luaXQgKCZ0bywgJmMt PmMyLmdjKTsKKwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL29wZW52cG4vb3B0 aW9ucy5jIGIvc3JjL29wZW52cG4vb3B0aW9ucy5jCmluZGV4IDE4Y2IzNTQuLjUzMjNjZDcgMTAw NjQ0Ci0tLSBhL3NyYy9vcGVudnBuL29wdGlvbnMuYworKysgYi9zcmMvb3BlbnZwbi9vcHRpb25z LmMKQEAgLTY5NjYsNiArNjk2NiwyNCBAQCBhZGRfb3B0aW9uIChzdHJ1Y3Qgb3B0aW9ucyAqb3B0 aW9ucywKICAgICAgIG9wdGlvbnMtPnBlcnNpc3RfbW9kZSA9IDE7CiAgICAgfQogI2VuZGlmCisg IGVsc2UgaWYgKHN0cmVxIChwWzBdLCAia2V5aW5nLW1hdGVyaWFsLWV4cG9ydGVyLWxhYmVsIikg JiYgcFsxXSkKKyAgICB7CisgICAgICBpZiAoc3RybmNtcChwWzFdLCAiRVhQT1JURVIiLCA4KSkK KyAgICAgICAgeworICAgICAgICAgIG1zZyAobXNnbGV2ZWwsICJrZXlpbmcgbWF0ZXJpYWwgZXhw b3J0ZXIgbGFiZWxzIFNIT1VMRCBiZWdpbiB3aXRoIFwiRVhQT1JURVJcIiIpOworICAgICAgICAg IGdvdG8gZXJyOworICAgICAgICB9CisgICAgICBWRVJJRllfUEVSTUlTU0lPTiAoT1BUX1BfR0VO RVJBTCk7CisKKyAgICAgIG9wdGlvbnMtPmtleWluZ19tYXRlcmlhbF9leHBvcnRlcl9sYWJlbCA9 IHBbMV07CisgICAgfQorICBlbHNlIGlmIChzdHJlcSAocFswXSwgImtleWluZy1tYXRlcmlhbC1l eHBvcnRlci1sZW5ndGgiKSkKKyAgICB7CisgICAgICBpbnQgbGVuID0gcG9zaXRpdmVfYXRvaSAo cFsxXSk7CisgICAgICBWRVJJRllfUEVSTUlTU0lPTiAoT1BUX1BfR0VORVJBTCk7CisKKyAgICAg IG9wdGlvbnMtPmtleWluZ19tYXRlcmlhbF9leHBvcnRlcl9sZW5ndGggPSBsZW47CisgICAgfQog ICBlbHNlCiAgICAgewogICAgICAgaW50IGk7CmRpZmYgLS1naXQgYS9zcmMvb3BlbnZwbi9vcHRp b25zLmggYi9zcmMvb3BlbnZwbi9vcHRpb25zLmgKaW5kZXggZWMxZDA5MS4uZjU2MDlmOSAxMDA2 NDQKLS0tIGEvc3JjL29wZW52cG4vb3B0aW9ucy5oCisrKyBiL3NyYy9vcGVudnBuL29wdGlvbnMu aApAQCAtMzAsMjYgKzMwLDI4IEBACiAjaWZuZGVmIE9QVElPTlNfSAogI2RlZmluZSBPUFRJT05T X0gKIAorLyoKKyAqIE1heGltdW0gbnVtYmVyIG9mIHBhcmFtZXRlcnMgYXNzb2NpYXRlZCB3aXRo IGFuIG9wdGlvbiwKKyAqIGluY2x1ZGluZyB0aGUgb3B0aW9uIG5hbWUgaXRzZWxmLgorICovCisK KyNkZWZpbmUgTUFYX1BBUk1TIDE2CisKICNpbmNsdWRlICJiYXNpYy5oIgogI2luY2x1ZGUgImNv bW1vbi5oIgogI2luY2x1ZGUgIm10dS5oIgogI2luY2x1ZGUgInJvdXRlLmgiCiAjaW5jbHVkZSAi dHVuLmgiCiAjaW5jbHVkZSAic29ja2V0LmgiCisjaW5jbHVkZSAiY29tcC5oIgorI2luY2x1ZGUg InNzbF9jb21tb24uaCIKICNpbmNsdWRlICJwbHVnaW4uaCIKICNpbmNsdWRlICJtYW5hZ2UuaCIK ICNpbmNsdWRlICJwcm94eS5oIgotI2luY2x1ZGUgImNvbXAuaCIKICNpbmNsdWRlICJwdXNobGlz dC5oIgogI2luY2x1ZGUgImNsaW5hdC5oIgogCiAvKgotICogTWF4aW11bSBudW1iZXIgb2YgcGFy YW1ldGVycyBhc3NvY2lhdGVkIHdpdGggYW4gb3B0aW9uLAotICogaW5jbHVkaW5nIHRoZSBvcHRp b24gbmFtZSBpdHNlbGYuCi0gKi8KLSNkZWZpbmUgTUFYX1BBUk1TIDE2Ci0KLS8qCiAgKiBNYXgg c2l6ZSBvZiBvcHRpb25zIGxpbmUgYW5kIHBhcmFtZXRlci4KICAqLwogI2RlZmluZSBPUFRJT05f UEFSTV9TSVpFIDI1NgpAQCAtNjAwLDYgKzYwMiwxMCBAQCBzdHJ1Y3Qgb3B0aW9ucwogICBib29s IHNob3dfbmV0X3VwOwogICBpbnQgcm91dGVfbWV0aG9kOwogI2VuZGlmCisKKyAgLyogS2V5aW5n IE1hdGVyaWFsIEV4cG9ydGVycyBbUkZDIDU3MDVdICovCisgIGNvbnN0IGNoYXIgKmtleWluZ19t YXRlcmlhbF9leHBvcnRlcl9sYWJlbDsKKyAgaW50IGtleWluZ19tYXRlcmlhbF9leHBvcnRlcl9s ZW5ndGg7CiB9OwogCiAjZGVmaW5lIHN0cmVxKHgsIHkpICghc3RyY21wKCh4KSwgKHkpKSkKZGlm ZiAtLWdpdCBhL3NyYy9vcGVudnBuL3NzbC5jIGIvc3JjL29wZW52cG4vc3NsLmMKaW5kZXggZDRh Y2MwZi4uZjA5MzAxMSAxMDA2NDQKLS0tIGEvc3JjL29wZW52cG4vc3NsLmMKKysrIGIvc3JjL29w ZW52cG4vc3NsLmMKQEAgLTEsMTMgKzEsMTQgQEAKIC8qCiAgKiAgT3BlblZQTiAtLSBBbiBhcHBs aWNhdGlvbiB0byBzZWN1cmVseSB0dW5uZWwgSVAgbmV0d29ya3MKICAqICAgICAgICAgICAgIG92 ZXIgYSBzaW5nbGUgVENQL1VEUCBwb3J0LCB3aXRoIHN1cHBvcnQgZm9yIFNTTC9UTFMtYmFzZWQK LSAqICAgICAgICAgICAgIHNlc3Npb24gYXV0aGVudGljYXRpb24gYW5kIGtleSBleGNoYW5nZSwK KyAqICAgICAgICAgICAgIHNlc3Npb24gYXV0aGVudGljYXRpb24sIGtleSBleGNoYW5nZSBhbmQg Y2hhbm5lbCBiaW5kaW5ncywKICAqICAgICAgICAgICAgIHBhY2tldCBlbmNyeXB0aW9uLCBwYWNr ZXQgYXV0aGVudGljYXRpb24sIGFuZAogICogICAgICAgICAgICAgcGFja2V0IGNvbXByZXNzaW9u LgogICoKICAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAxMCBPcGVuVlBOIFRlY2hub2xvZ2llcywg SW5jLiA8c2FsZXNAb3BlbnZwbi5uZXQ+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIEZveCBDcnlw dG8gQi5WLiA8b3BlbnZwbkBmb3gtaXQuY29tPgogICogIENvcHlyaWdodCAoQykgMjAwOC0yMDEz IERhdmlkIFNvbW1lcnNldGggPGRhem9AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICogIENvcHly aWdodCAoQykgMjAxNCBEYW5pZWwgS3ViZWMgPG5pZWxAcnRmbS5jej4KICAqCiAgKiAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKICAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMgpAQCAtMTQ1NCw2ICsxNDU1LDY3IEBAIHRsczFfUFJGKHVpbnQ4X3Qg KmxhYmVsLAogICBnY19mcmVlICgmZ2MpOwogfQogCisvKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor ICogVXNlIHRoZSB0bHMxX2tleWluZ19tYXRlcmlhbF9leHBvcnRlciBmb3IgZ2VuZXJhdGluZyBj aGFubmVsIEJpbmRpbmcgS2V5CisgKiBiYXNlZCBvbiBLZXlpbmcgTWF0ZXJpYWwgRXhwb3J0ZXJz IFJGQ1s1NzA1XQorICoKKyAqIExhYmVscyBoZXJlIGhhdmUgdGhlIHNhbWUgZGVmaW5pdGlvbiBh cyBpbiBUTFMsIGkuZS4sIGFuIEFTQ0lJIHN0cmluZworICogd2l0aCBubyB0ZXJtaW5hdGluZyBO VUxMLiAgTGFiZWwgdmFsdWVzIGJlZ2lubmluZyB3aXRoICJFWFBFUklNRU5UQUwiCisgKiBNQVkg YmUgdXNlZCBmb3IgcHJpdmF0ZSB1c2Ugd2l0aG91dCByZWdpc3RyYXRpb24uICBBbGwgb3RoZXIg bGFiZWwKKyAqIHZhbHVlcyBNVVNUIGJlIHJlZ2lzdGVyZWQgdmlhIFNwZWNpZmljYXRpb24gUmVx dWlyZWQgYXMgZGVzY3JpYmVkIGJ5CisgKiBSRkMgNTIyNiBbUkZDNTIyNl0uICBOb3RlIHRoYXQg ZXhwb3J0ZXIgbGFiZWxzIGhhdmUgdGhlIHBvdGVudGlhbCB0bworICogY29sbGlkZSB3aXRoIGV4 aXN0aW5nIFBSRiBsYWJlbHMuICBJbiBvcmRlciB0byBwcmV2ZW50IHRoaXMsIGxhYmVscworICog U0hPVUxEIGJlZ2luIHdpdGggIkVYUE9SVEVSIi4gIFRoaXMgaXMgbm90IGEgTVVTVCBiZWNhdXNl IHRoZXJlIGFyZQorICogZXhpc3RpbmcgdXNlcyB0aGF0IGhhdmUgbGFiZWxzIHdoaWNoIGRvIG5v dCBiZWdpbiB3aXRoIHRoaXMgcHJlZml4LgorICoKKyAqIFRoZSBvdXRwdXQgaXMgYSBwc2V1ZG9y YW5kb20gYml0IHN0cmluZyBvZiBsZW5ndGggYnl0ZXMgZ2VuZXJhdGVkCisgKiBmcm9tIHRoZSBt YXN0ZXJfc2VjcmV0LiAgKFRoaXMgY29uc3RydWN0aW9uIGFsbG93cyBmb3IKKyAqIGludGVyb3Bl cmFiaWxpdHkgd2l0aCBvbGRlciBleHBvcnRlci10eXBlIGNvbnN0cnVjdGlvbnMgd2hpY2ggZG8g bm90CisgKiB1c2UgY29udGV4dCB2YWx1ZXMsIGUuZy4sIFtSRkM1MjgxXSkuCisgKgorICogSWYg bm8gY29udGV4dCBpcyBwcm92aWRlZCwgaXQgdGhlbiBjb21wdXRlczoKKyAqIAorICoJUFJGKFNl Y3VyaXR5UGFyYW1ldGVycy5tYXN0ZXJfc2VjcmV0LCBsYWJlbCwKKyAqCSAgICBTZWN1cml0eVBh cmFtZXRlcnMuY2xpZW50X3JhbmRvbSArCisgKgkgICAgU2VjdXJpdHlQYXJhbWV0ZXJzLnNlcnZl cl9yYW5kb20pW2xlbmd0aF0KKyAqCisgKiBJZiBjb250ZXh0IGlzIHByb3ZpZGVkLCBpdCBjb21w dXRlczoKKyAqCisgKglQUkYoU2VjdXJpdHlQYXJhbWV0ZXJzLm1hc3Rlcl9zZWNyZXQsIGxhYmVs LAorICoJICAgIFNlY3VyaXR5UGFyYW1ldGVycy5jbGllbnRfcmFuZG9tICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgKgkgICAgU2VjdXJpdHlQYXJhbWV0ZXJzLnNlcnZlcl9yYW5k b20gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAqCSAgICBjb250ZXh0X3ZhbHVl X2xlbmd0aCArIGNvbnRleHRfdmFsdWUpW2xlbmd0aF0gCisgKi8KKworc3RhdGljIHZvaWQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKK3RsczFfa2V5aW5nX21hdGVyaWFsX2V4cG9ydGVyKHVpbnQ4X3QgKm1hc3Rlciwg aW50IG1hc3Rlcl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICps YWJlbCwgaW50IGxhYmVsX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVpbnQ4X3QgKmNsaWVudF9yYW5kb20sIGludCBjbGllbnRfcmFuZG9tX2xlbiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNlcnZlcl9yYW5kb20sIGludCBz ZXJ2ZXJfcmFuZG9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp bnQ4X3QgKmNvbnRleHRfdmFsdWUsIGludCBjb250ZXh0X3ZhbHVlX2xlbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dCwgaW50IG91dF9sZW4pCit7CisgIHN0cnVj dCBidWZmZXIgc2VlZCA9IGFsbG9jX2J1ZiAobWFzdGVyX2xlbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArIGxhYmVsX2xlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArIGNsaWVudF9yYW5kb21fbGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsg c2VydmVyX3JhbmRvbV9sZW4pOworCisgIEFTU0VSVCAoYnVmX3dyaXRlICgmc2VlZCwgbGFiZWws IGxhYmVsX2xlbikpOworICBBU1NFUlQgKGJ1Zl93cml0ZSAoJnNlZWQsIGNsaWVudF9yYW5kb20s IGNsaWVudF9yYW5kb21fbGVuKSk7CisgIEFTU0VSVCAoYnVmX3dyaXRlICgmc2VlZCwgc2VydmVy X3JhbmRvbSwgc2VydmVyX3JhbmRvbV9sZW4pKTsKKworICBpZiAoY29udGV4dF92YWx1ZSkKKyAg ICBBU1NFUlQgKGJ1Zl93cml0ZSAoJnNlZWQsIGNvbnRleHRfdmFsdWUsIGNvbnRleHRfdmFsdWVf bGVuKSk7CisKKyAgLyogY29tcHV0ZSBQUkYgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHRsczFfUFJGIChCUFRSKCZzZWVk KSwgQkxFTigmc2VlZCksIG1hc3RlciwgbWFzdGVyX2xlbiwgb3V0LCBvdXRfbGVuKTsgICAgICAg IAorCisgIGJ1Zl9jbGVhciAoJnNlZWQpOworICBmcmVlX2J1ZiAoJnNlZWQpOworCisgIFZBTEdS SU5EX01BS0VfUkVBREFCTEUgKCh2b2lkICopb3V0LCBvdXRfbGVuKTsKK30KKwogc3RhdGljIHZv aWQKIG9wZW52cG5fUFJGIChjb25zdCB1aW50OF90ICpzZWNyZXQsCiAJICAgICBpbnQgc2VjcmV0 X2xlbiwKQEAgLTE0OTIsNDUgKzE1NTQsMTE3IEBAIG9wZW52cG5fUFJGIChjb25zdCB1aW50OF90 ICpzZWNyZXQsCiAgIFZBTEdSSU5EX01BS0VfUkVBREFCTEUgKCh2b2lkICopb3V0cHV0LCBvdXRw dXRfbGVuKTsKIH0KIAorLyoKKyAqIEdlbmVyYXRlZCBCaW5kaW5nIEtleSBiYXNlZCBvbiBLZXlp bmcgTWF0ZXJpYWwgRXhwb3J0ZXJzIFtSRkMgNTcwNV0KKyAqLworc3RhdGljIGJvb2wKK2dlbmVy YXRlX2tleV9iaW5kaW5nKHVpbnQ4X3QgKm1hc3RlciwKKyAgICAgICAgICAgICAgICAgICAgIGlu dCBtYXN0ZXJfbGVuLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGtleV9jdHhfYmkgKmtl eSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBrZXlfdHlwZSAqa2V5X3R5cGUs CisgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qga2V5X3NvdXJjZTIgKmtleV9zcmMs CisgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpsYWJlbCwgaW50IGxhYmVsX2xlbiwKKyAg ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJpbmRpbmdfa2V5LCBpbnQgYmluZGluZ19rZXlf bGVuKQoreworICBjb25zdCBjaGFyICpjb250ZXh0X3ZhbHVlID0gS0VZX0VYUEFOU0lPTl9JRCAi IGJpbmRpbmcga2V5IjsKKyAgc3RydWN0IGdjX2FyZW5hIGdjID0gZ2NfbmV3ICgpOworCisgIHRs czFfa2V5aW5nX21hdGVyaWFsX2V4cG9ydGVyKG1hc3RlciwgbWFzdGVyX2xlbiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwsIGxhYmVsX2xlbiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAga2V5X3NyYy0+Y2xpZW50LnJhbmRvbTIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZihrZXlfc3JjLT5jbGllbnQucmFuZG9tMiksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9zcmMtPnNlcnZlci5yYW5kb20yLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2V5X3NyYy0+c2VydmVyLnJhbmRv bTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0X3ZhbHVlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oY29udGV4dF92YWx1ZSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRpbmdfa2V5LCBiaW5kaW5nX2tleV9sZW4p OworCisgIGRtc2cgKERfU0hPV19LRVlfU09VUkNFLCAidGxzX2JpbmRpbmdfa2V5OiAlcyIsCisg ICAgICAgIGZvcm1hdF9oZXggKGJpbmRpbmdfa2V5LCBiaW5kaW5nX2tleV9sZW4sIDAsICZnYykp OworICBnY19mcmVlICgmZ2MpOworICByZXR1cm4gdHJ1ZTsKK30KKworLyogQ2hhbm5lbCBJRCBp ZGVudGlmaWVzIFRMUyBTZXNzaW9uIGFjcm9zcyBuZWdvdGlhdGlvbnMgKi8KK3N0YXRpYyB2b2lk CitnZW5lcmF0ZV9jaGFubmVsX2lkKHVpbnQ4X3QgKm1hc3RlciwKKyAgICAgICAgICAgICAgICAg ICAgaW50IG1hc3Rlcl9sZW4sCisgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrZXlfY3R4X2Jp ICprZXksCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBrZXlfdHlwZSAqa2V5X3R5 cGUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBrZXlfc291cmNlMiAqa2V5X3Ny YywKKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqaWQsCisgICAgICAgICAgICAgICAgICAg IGludCBpZF9sZW4pCit7CisgIHN0cnVjdCBnY19hcmVuYSBnYyA9IGdjX25ldyAoKTsKKworICBv cGVudnBuX1BSRiAobWFzdGVyLAorICAgICAgICAgICAgICAgbWFzdGVyX2xlbiwKKyAgICAgICAg ICAgICAgIEtFWV9FWFBBTlNJT05fSUQgIiBjaGFubmVsIGlkIiwKKyAgICAgICAgICAgICAgIGtl eV9zcmMtPmNsaWVudC5yYW5kb20yLAorICAgICAgICAgICAgICAgc2l6ZW9mKGtleV9zcmMtPmNs aWVudC5yYW5kb20yKSwKKyAgICAgICAgICAgICAgIGtleV9zcmMtPnNlcnZlci5yYW5kb20yLAor ICAgICAgICAgICAgICAgc2l6ZW9mKGtleV9zcmMtPnNlcnZlci5yYW5kb20yKSwKKyAgICAgICAg ICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgaWQsCisg ICAgICAgICAgICAgICBpZF9sZW4pOworCisgIGRtc2cgKERfU0hPV19LRVlfU09VUkNFLCAidGxz X2NoYW5uZWxfaWQ6ICVzIiwKKyAgICAgICAgZm9ybWF0X2hleCAoaWQsIGlkX2xlbiwgMCwgJmdj KSk7CisKKyAgZ2NfZnJlZSAoJmdjKTsKK30KKworc3RhdGljIHZvaWQKK2dlbmVyYXRlX21hc3Rl cl9zZWNyZXQoc3RydWN0IGtleV9jdHhfYmkgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGtleV90eXBlICprZXlfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGtleV9zb3VyY2UyICprZXlfc3JjLAorICAgICAgICAgICAgICAgICAgICAg ICB1aW50OF90ICptYXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBt YXN0ZXJfc2l6ZSkKK3sKKyAgLyogY29tcHV0ZSBtYXN0ZXIgc2VjcmV0ICovCisgIG9wZW52cG5f UFJGIChrZXlfc3JjLT5jbGllbnQucHJlX21hc3RlciwKKyAgICAgICAgICAgICAgIHNpemVvZihr ZXlfc3JjLT5jbGllbnQucHJlX21hc3RlciksCisgICAgICAgICAgICAgICBLRVlfRVhQQU5TSU9O X0lEICIgbWFzdGVyIHNlY3JldCIsCisgICAgICAgICAgICAgICBrZXlfc3JjLT5jbGllbnQucmFu ZG9tMSwKKyAgICAgICAgICAgICAgIHNpemVvZihrZXlfc3JjLT5jbGllbnQucmFuZG9tMSksCisg ICAgICAgICAgICAgICBrZXlfc3JjLT5zZXJ2ZXIucmFuZG9tMSwKKyAgICAgICAgICAgICAgIHNp emVvZihrZXlfc3JjLT5zZXJ2ZXIucmFuZG9tMSksCisgICAgICAgICAgICAgICBOVUxMLAorICAg ICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgIG1hc3RlciwKKyAgICAgICAgICAgICAg IG1hc3Rlcl9zaXplKTsKKworICBrZXlfc291cmNlMl9wcmludCAoa2V5X3NyYyk7CisKK30KKwog LyogCiAgKiBVc2luZyBzb3VyY2UgZW50cm9weSBmcm9tIGxvY2FsIGFuZCByZW1vdGUgaG9zdHMs IG1peCBpbnRvCiAgKiBtYXN0ZXIga2V5LgogICovCiBzdGF0aWMgYm9vbAotZ2VuZXJhdGVfa2V5 X2V4cGFuc2lvbiAoc3RydWN0IGtleV9jdHhfYmkgKmtleSwKK2dlbmVyYXRlX2tleV9leHBhbnNp b24gKHVpbnQ4X3QgKm1hc3RlciwKKwkJCWludCBtYXN0ZXJfbGVuLAorCQkJc3RydWN0IGtleV9j dHhfYmkgKmtleSwKIAkJCWNvbnN0IHN0cnVjdCBrZXlfdHlwZSAqa2V5X3R5cGUsCiAJCQljb25z dCBzdHJ1Y3Qga2V5X3NvdXJjZTIgKmtleV9zcmMsCiAJCQljb25zdCBzdHJ1Y3Qgc2Vzc2lvbl9p ZCAqY2xpZW50X3NpZCwKIAkJCWNvbnN0IHN0cnVjdCBzZXNzaW9uX2lkICpzZXJ2ZXJfc2lkLAog CQkJYm9vbCBzZXJ2ZXIpCiB7Ci0gIHVpbnQ4X3QgbWFzdGVyWzQ4XTsKICAgc3RydWN0IGtleTIg a2V5MjsKICAgYm9vbCByZXQgPSBmYWxzZTsKICAgaW50IGk7CiAKLSAgQ0xFQVIgKG1hc3Rlcik7 CiAgIENMRUFSIChrZXkyKTsKIAogICAvKiBkZWJ1Z2dpbmcgcHJpbnQgb2Ygc291cmNlIGtleSBt YXRlcmlhbCAqLwogICBrZXlfc291cmNlMl9wcmludCAoa2V5X3NyYyk7CiAKLSAgLyogY29tcHV0 ZSBtYXN0ZXIgc2VjcmV0ICovCi0gIG9wZW52cG5fUFJGIChrZXlfc3JjLT5jbGllbnQucHJlX21h c3RlciwKLQkgICAgICAgc2l6ZW9mKGtleV9zcmMtPmNsaWVudC5wcmVfbWFzdGVyKSwKLQkgICAg ICAgS0VZX0VYUEFOU0lPTl9JRCAiIG1hc3RlciBzZWNyZXQiLAotCSAgICAgICBrZXlfc3JjLT5j bGllbnQucmFuZG9tMSwKLQkgICAgICAgc2l6ZW9mKGtleV9zcmMtPmNsaWVudC5yYW5kb20xKSwK LQkgICAgICAga2V5X3NyYy0+c2VydmVyLnJhbmRvbTEsCi0JICAgICAgIHNpemVvZihrZXlfc3Jj LT5zZXJ2ZXIucmFuZG9tMSksCi0JICAgICAgIE5VTEwsCi0JICAgICAgIE5VTEwsCi0JICAgICAg IG1hc3RlciwKLQkgICAgICAgc2l6ZW9mKG1hc3RlcikpOwotICAKICAgLyogY29tcHV0ZSBrZXkg ZXhwYW5zaW9uICovCiAgIG9wZW52cG5fUFJGIChtYXN0ZXIsCi0JICAgICAgIHNpemVvZihtYXN0 ZXIpLAorCSAgICAgICBtYXN0ZXJfbGVuLAogCSAgICAgICBLRVlfRVhQQU5TSU9OX0lEICIga2V5 IGV4cGFuc2lvbiIsCiAJICAgICAgIGtleV9zcmMtPmNsaWVudC5yYW5kb20yLAogCSAgICAgICBz aXplb2Yoa2V5X3NyYy0+Y2xpZW50LnJhbmRvbTIpLApAQCAtMTg2OSw2ICsyMDAzLDEwIEBAIHN0 YXRpYyBib29sCiBrZXlfbWV0aG9kXzJfd3JpdGUgKHN0cnVjdCBidWZmZXIgKmJ1Ziwgc3RydWN0 IHRsc19zZXNzaW9uICpzZXNzaW9uKQogewogICBzdHJ1Y3Qga2V5X3N0YXRlICprcyA9ICZzZXNz aW9uLT5rZXlbS1NfUFJJTUFSWV07IAkgICAvKiBwcmltYXJ5IGtleSAqLworICBzdHJ1Y3QgZ2Nf YXJlbmEgZ2MgPSBnY19uZXcgKCk7CisgIHVpbnQ4X3QgbWFzdGVyX3NlY3JldFs0OF07ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBDTEVBUihtYXN0ZXJf c2VjcmV0KTsKIAogICBBU1NFUlQgKHNlc3Npb24tPm9wdC0+a2V5X21ldGhvZCA9PSAyKTsKICAg QVNTRVJUIChidWZfaW5pdCAoYnVmLCAwKSk7CkBAIC0xOTE5LDMwICsyMDU3LDk2IEBAIGtleV9t ZXRob2RfMl93cml0ZSAoc3RydWN0IGJ1ZmZlciAqYnVmLCBzdHJ1Y3QgdGxzX3Nlc3Npb24gKnNl c3Npb24pCiAgIC8qCiAgICAqIGdlbmVyYXRlIHR1bm5lbCBrZXlzIGlmIHNlcnZlcgogICAgKi8K LSAgaWYgKHNlc3Npb24tPm9wdC0+c2VydmVyKQorICAKKyAgaWYgKCFzZXNzaW9uLT5vcHQtPnNl cnZlcikKKyAgICBnb3RvIGRvbmU7CisKKyAgc2Vzc2lvbi0+bmVnb3RpYXRpb25zKys7CisKKyAg aWYgKGtzLT5hdXRoZW50aWNhdGVkKQogICAgIHsKLSAgICAgIGlmIChrcy0+YXV0aGVudGljYXRl ZCkKLQl7Ci0JICBpZiAoIWdlbmVyYXRlX2tleV9leHBhbnNpb24gKCZrcy0+a2V5LAotCQkJCSAg ICAgICAmc2Vzc2lvbi0+b3B0LT5rZXlfdHlwZSwKLQkJCQkgICAgICAga3MtPmtleV9zcmMsCi0J CQkJICAgICAgICZrcy0+c2Vzc2lvbl9pZF9yZW1vdGUsCi0JCQkJICAgICAgICZzZXNzaW9uLT5z ZXNzaW9uX2lkLAotCQkJCSAgICAgICB0cnVlKSkKLQkgICAgewotCSAgICAgIG1zZyAoRF9UTFNf RVJST1JTLCAiVExTIEVycm9yOiBzZXJ2ZXIgZ2VuZXJhdGVfa2V5X2V4cGFuc2lvbiBmYWlsZWQi KTsKLQkgICAgICBnb3RvIGVycm9yOwotCSAgICB9Ci0JfQotCQkgICAgICAKLSAgICAgIENMRUFS ICgqa3MtPmtleV9zcmMpOworICAgICAgIGdlbmVyYXRlX21hc3Rlcl9zZWNyZXQoJmtzLT5rZXks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2Vzc2lvbi0+b3B0LT5rZXlfdHlwZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtzLT5rZXlfc3JjLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbWFzdGVyX3NlY3JldCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZihtYXN0ZXJfc2VjcmV0KSk7CisKKyAgICAgICAvKgorICAgICAgICAqIEdl bmVyYXRlIGNoYW5uZWwgaWQgaWRlbnRpZmllcyBUTFMgU2Vzc2lvbiBhY3Jvc3MgKHJlKW5lZ290 aWF0aW9ucyQKKyAgICAgICAgKi8KKyAgICAgICBpZiAoc2Vzc2lvbi0+bmVnb3RpYXRpb25zID09 IDEpCisgICAgICAgICAgIGdlbmVyYXRlX2NoYW5uZWxfaWQobWFzdGVyX3NlY3JldCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWFzdGVyX3NlY3JldCksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmtzLT5rZXksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnNlc3Npb24tPm9wdC0+a2V5X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAga3MtPmtleV9zcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vz c2lvbi0+Y2hhbm5lbF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yo c2Vzc2lvbi0+Y2hhbm5lbF9pZCkpOworCiAgICAgfQogCisgIC8qCisgICAqIENhbGwgT1BFTlZQ Tl9QTFVHSU5fVExTX0ZJTkFMIHBsdWdpbiBpZiBkZWZpbmVkLCBmb3IgZmluYWwKKyAgICogdmV0 byBvcHBvcnR1bml0eSBvdmVyIGF1dGhlbnRpY2F0aW9uIGRlY2lzaW9uLgorICAgKi8KKyAgaWYg KGtzLT5hdXRoZW50aWNhdGVkICYmIHBsdWdpbl9kZWZpbmVkIChzZXNzaW9uLT5vcHQtPnBsdWdp bnMsIE9QRU5WUE5fUExVR0lOX1RMU19GSU5BTCkpCisgICAgeworICAgICAgc2V0ZW52X3N0cihz ZXNzaW9uLT5vcHQtPmVzLCAidGxzX2NoYW5uZWxfaWQiLAorICAgICAgICAgICAgICAgICBmb3Jt YXRfaGV4IChzZXNzaW9uLT5jaGFubmVsX2lkLCBzaXplb2Yoc2Vzc2lvbi0+Y2hhbm5lbF9pZCks IDAsICZnYykpOworCisgICAgICAvKiBDaGFubmVsIEJpbmRpbmcgS2V5IGJhc2VkIG9uIEtleWlu ZyBNYXRlcmlhbCBEZXJpdmF0ZSBbUkZDIDU3MDVdICovCisgICAgICBpZiAoc2Vzc2lvbi0+b3B0 LT5iaW5kaW5nX2tleV9nZW4pCisgICAgICAgIHsKKyAgICAgICAgICBjaGFyICpiaW5kaW5nX2tl eSA9IGdjX21hbGxvYyAoc2Vzc2lvbi0+b3B0LT5iaW5kaW5nX2tleV9zaXplLCBmYWxzZSwgJmdj KTsKKworICAgICAgICAgIGlmICghZ2VuZXJhdGVfa2V5X2JpbmRpbmcgKG1hc3Rlcl9zZWNyZXQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1hc3Rlcl9zZWNy ZXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrcy0+a2V5LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZXNzaW9uLT5vcHQtPmtleV90eXBl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtzLT5rZXlfc3JjLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPm9wdC0+a21lX2xhYmVs LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPm9wdC0+a21l X2xhYmVsX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGlu Z19rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+b3B0 LT5iaW5kaW5nX2tleV9zaXplKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbXNnIChE X1RMU19FUlJPUlMsICJUTFMgRXJyb3I6IGdlbmVyYXRlX2tleV9iaW5kaW5nIGZhaWxlZCIpOwor ICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBzZXRlbnZfc3RyKHNlc3Npb24tPm9wdC0+ ZXMsICJ0bHNfYmluZGluZ19rZXkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9o ZXggKGJpbmRpbmdfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl c3Npb24tPm9wdC0+YmluZGluZ19rZXlfc2l6ZSwgMCwgJmdjKSk7CisgICAgICAgICAgICB9Cisg ICAgfQorCisgICAgaWYgKHBsdWdpbl9jYWxsIChzZXNzaW9uLT5vcHQtPnBsdWdpbnMsIE9QRU5W UE5fUExVR0lOX1RMU19GSU5BTCwgTlVMTCwgTlVMTCwgc2Vzc2lvbi0+b3B0LT5lcykgIT0gT1BF TlZQTl9QTFVHSU5fRlVOQ19TVUNDRVNTKQorCWtzLT5hdXRoZW50aWNhdGVkID0gZmFsc2U7Cisg IH0KKworICBpZiAoIWdlbmVyYXRlX2tleV9leHBhbnNpb24gKG1hc3Rlcl9zZWNyZXQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1hc3Rlcl9zZWNyZXQpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZrcy0+a2V5LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZzZXNzaW9uLT5vcHQtPmtleV90eXBlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGtzLT5rZXlfc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZr cy0+c2Vzc2lvbl9pZF9yZW1vdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNl c3Npb24tPnNlc3Npb25faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkp CisgIHsKKyAgICBtc2cgKERfVExTX0VSUk9SUywgIlRMUyBFcnJvcjogc2VydmVyIGdlbmVyYXRl X2tleV9leHBhbnNpb24gZmFpbGVkIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIENMRUFS ICgqa3MtPmtleV9zcmMpOworCitkb25lOgorICBnY19mcmVlICgmZ2MpOwogICByZXR1cm4gdHJ1 ZTsKIAogIGVycm9yOgogICBtc2cgKERfVExTX0VSUk9SUywgIlRMUyBFcnJvcjogS2V5IE1ldGhv ZCAjMiB3cml0ZSBmYWlsZWQiKTsKICAgQ0xFQVIgKCprcy0+a2V5X3NyYyk7CisgIGdjX2ZyZWUg KCZnYyk7CiAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjAxNyw2ICsyMjIxLDkgQEAga2V5X21l dGhvZF8yX3JlYWQgKHN0cnVjdCBidWZmZXIgKmJ1Ziwgc3RydWN0IHRsc19tdWx0aSAqbXVsdGks IHN0cnVjdCB0bHNfc2Vzc2kKICAgc3RydWN0IGdjX2FyZW5hIGdjID0gZ2NfbmV3ICgpOwogICBj aGFyICpvcHRpb25zOwogICBzdHJ1Y3QgdXNlcl9wYXNzICp1cDsKKyAgdWludDhfdCBtYXN0ZXJf c2VjcmV0WzQ4XTsgICAvKiBtYXN0ZXIgc2VjcmV0ICovCisKKyAgQ0xFQVIobWFzdGVyX3NlY3Jl dCk7CiAKICAgLyogYWxsb2NhdGUgdGVtcG9yYXJ5IG9iamVjdHMgKi8KICAgQUxMT0NfQVJSQVlf Q0xFQVJfR0MgKG9wdGlvbnMsIGNoYXIsIFRMU19PUFRJT05TX0xFTiwgJmdjKTsKQEAgLTIxMjAs MzkgKzIzMjcsOTcgQEAga2V5X21ldGhvZF8yX3JlYWQgKHN0cnVjdCBidWZmZXIgKmJ1Ziwgc3Ry dWN0IHRsc19tdWx0aSAqbXVsdGksIHN0cnVjdCB0bHNfc2Vzc2kKIAogICBidWZfY2xlYXIgKGJ1 Zik7CiAKKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAqIEdlbmVyYXRlIGtleXMgaWYgY2xp ZW50IGJlY2F1c2Ugc2VydmVyX3JhbmRvbSBpcyBub3QgcmVhZHkgaGVyZSBmb3IgdGhlCisgICAq IHNlcnZlciBlbmQtcG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAqLworICBpZiAoc2Vzc2lvbi0+b3B0LT5zZXJ2ZXIpCisgICAgZ290byBkb25lOwor CisgIHNlc3Npb24tPm5lZ290aWF0aW9ucysrOworCisgIC8qIAorICAgKiBHZW5lcmF0ZSBtYXN0 ZXIgc2VjcmV0IGhlcmUgYmVjYXVzZSBpdCBpcyB1c2VkIGluCisgICAqIGdlbmVyYXRlX2JpbmRp bmdfa2V5KCksIGdlbmVyYXRlX2NoYW5uZWxfaWQoKSBhbmQgZ2VuZXJhdGVfa2V5X2V4cGFuc2lv bigpCisgICAqLworICBnZW5lcmF0ZV9tYXN0ZXJfc2VjcmV0KCZrcy0+a2V5LAorICAgICAgICAg ICAgICAgICAgICAgICAgICZzZXNzaW9uLT5vcHQtPmtleV90eXBlLAorICAgICAgICAgICAgICAg ICAgICAgICAgIGtzLT5rZXlfc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl9z ZWNyZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1hc3Rlcl9zZWNyZXQpKTsK KyAgLyoKKyAgICogR2VuZXJhdGUgY2hhbm5lbCBpZCBpZGVudGlmaWVzIFRMUyBTZXNzaW9uIGFj cm9zcyAocmUpbmVnb3RpYXRpb25zCisgICAqLworICBpZiAoc2Vzc2lvbi0+bmVnb3RpYXRpb25z ID09IDEpCisgICAgZ2VuZXJhdGVfY2hhbm5lbF9pZChtYXN0ZXJfc2VjcmV0LAorICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKG1hc3Rlcl9zZWNyZXQpLAorICAgICAgICAgICAgICAgICAg ICAgICAgJmtzLT5rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAmc2Vzc2lvbi0+b3B0LT5r ZXlfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGtzLT5rZXlfc3JjLAorICAgICAgICAg ICAgICAgICAgICAgICAgc2Vzc2lvbi0+Y2hhbm5lbF9pZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVvZihzZXNzaW9uLT5jaGFubmVsX2lkKSk7CiAgIC8qCiAgICAqIENhbGwgT1BFTlZQ Tl9QTFVHSU5fVExTX0ZJTkFMIHBsdWdpbiBpZiBkZWZpbmVkLCBmb3IgZmluYWwKICAgICogdmV0 byBvcHBvcnR1bml0eSBvdmVyIGF1dGhlbnRpY2F0aW9uIGRlY2lzaW9uLgogICAgKi8KICAgaWYg KGtzLT5hdXRoZW50aWNhdGVkICYmIHBsdWdpbl9kZWZpbmVkIChzZXNzaW9uLT5vcHQtPnBsdWdp bnMsIE9QRU5WUE5fUExVR0lOX1RMU19GSU5BTCkpCiAgICAgeworICAgICAgc2V0ZW52X3N0cihz ZXNzaW9uLT5vcHQtPmVzLCAidGxzX2NoYW5uZWxfaWQiLAorICAgICAgICAgICAgICAgICBmb3Jt YXRfaGV4IChzZXNzaW9uLT5jaGFubmVsX2lkLCBzaXplb2Yoc2Vzc2lvbi0+Y2hhbm5lbF9pZCks IDAsICZnYykpOworCisgICAgICAvKiBDaGFubmVsIEJpbmRpbmcgS2V5IGJhc2VkIG9uIEtleWlu ZyBNYXRlcmlhbCBEZXJpdmF0ZSBbUkZDIDU3MDVdICovCisgICAgICBpZiAoc2Vzc2lvbi0+b3B0 LT5iaW5kaW5nX2tleV9nZW4pIAorICAgICAgICB7CisgICAgICAgICAgY2hhciAqYmluZGluZ19r ZXkgPSBnY19tYWxsb2MgKHNlc3Npb24tPm9wdC0+YmluZGluZ19rZXlfc2l6ZSwgZmFsc2UsICZn Yyk7CisKKyAgICAgICAgICBpZiAoIWdlbmVyYXRlX2tleV9iaW5kaW5nIChtYXN0ZXJfc2VjcmV0 LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWFzdGVyX3Nl Y3JldCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtzLT5rZXksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlc3Npb24tPm9wdC0+a2V5X3R5 cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3MtPmtleV9zcmMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+b3B0LT5rbWVfbGFi ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+b3B0LT5r bWVfbGFiZWxfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5k aW5nX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5v cHQtPmJpbmRpbmdfa2V5X3NpemUpKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIG1zZyAoRF9U TFNfRVJST1JTLCAiVExTIEVycm9yOiBnZW5lcmF0ZV9rZXlfYmluZGluZyBmYWlsZWQiKTsKKyAg ICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAg ICAgICB7CisgICAgICAgICAgICBzZXRlbnZfc3RyKHNlc3Npb24tPm9wdC0+ZXMsICJ0bHNfYmlu ZGluZ19rZXkiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2hleCAoYmluZGluZ19r ZXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5vcHQtPmJp bmRpbmdfa2V5X3NpemUsIDAsICZnYykpOworICAgICAgICAgIH0KKyAgICAgIH0KKwogICAgICAg aWYgKHBsdWdpbl9jYWxsIChzZXNzaW9uLT5vcHQtPnBsdWdpbnMsIE9QRU5WUE5fUExVR0lOX1RM U19GSU5BTCwgTlVMTCwgTlVMTCwgc2Vzc2lvbi0+b3B0LT5lcykgIT0gT1BFTlZQTl9QTFVHSU5f RlVOQ19TVUNDRVNTKQogCWtzLT5hdXRoZW50aWNhdGVkID0gZmFsc2U7CiAgICAgfQogCiAgIC8q Ci0gICAqIEdlbmVyYXRlIHR1bm5lbCBrZXlzIGlmIGNsaWVudAorICAgKiBHZW5lcmF0ZSB0dW5u ZWwga2V5cyAKICAgICovCi0gIGlmICghc2Vzc2lvbi0+b3B0LT5zZXJ2ZXIpCi0gICAgewotICAg ICAgaWYgKCFnZW5lcmF0ZV9rZXlfZXhwYW5zaW9uICgma3MtPmtleSwKLQkJCQkgICAmc2Vzc2lv bi0+b3B0LT5rZXlfdHlwZSwKLQkJCQkgICBrcy0+a2V5X3NyYywKLQkJCQkgICAmc2Vzc2lvbi0+ c2Vzc2lvbl9pZCwKLQkJCQkgICAma3MtPnNlc3Npb25faWRfcmVtb3RlLAotCQkJCSAgIGZhbHNl KSkKLQl7Ci0JICBtc2cgKERfVExTX0VSUk9SUywgIlRMUyBFcnJvcjogY2xpZW50IGdlbmVyYXRl X2tleV9leHBhbnNpb24gZmFpbGVkIik7Ci0JICBnb3RvIGVycm9yOwotCX0KLQkJICAgICAgCi0g ICAgICBDTEVBUiAoKmtzLT5rZXlfc3JjKTsKKyAgaWYgKCFnZW5lcmF0ZV9rZXlfZXhwYW5zaW9u IChtYXN0ZXJfc2VjcmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiht YXN0ZXJfc2VjcmV0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma3MtPmtleSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2Vzc2lvbi0+b3B0LT5rZXlfdHlwZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrcy0+a2V5X3NyYywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmc2Vzc2lvbi0+c2Vzc2lvbl9pZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAma3MtPnNlc3Npb25faWRfcmVtb3RlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZhbHNlKSkKKyAgICB7CisgICAgICBtc2cgKERfVExTX0VSUk9SUywg IlRMUyBFcnJvcjogY2xpZW50IGdlbmVyYXRlX2tleV9leHBhbnNpb24gZmFpbGVkIik7CisgICAg ICBnb3RvIGVycm9yOwogICAgIH0KKwkJICAgICAgCisgIENMRUFSICgqa3MtPmtleV9zcmMpOwog Citkb25lOgogICBnY19mcmVlICgmZ2MpOwogICByZXR1cm4gdHJ1ZTsKIAotIGVycm9yOgorZXJy b3I6CiAgIENMRUFSICgqa3MtPmtleV9zcmMpOwogICBidWZfY2xlYXIgKGJ1Zik7CiAgIGdjX2Zy ZWUgKCZnYyk7CmRpZmYgLS1naXQgYS9zcmMvb3BlbnZwbi9zc2xfY29tbW9uLmggYi9zcmMvb3Bl bnZwbi9zc2xfY29tbW9uLmgKaW5kZXggMDRiYTc4OS4uOWFmNjhiYyAxMDA2NDQKLS0tIGEvc3Jj L29wZW52cG4vc3NsX2NvbW1vbi5oCisrKyBiL3NyYy9vcGVudnBuL3NzbF9jb21tb24uaApAQCAt MzE0LDYgKzMxNCwxMiBAQCBzdHJ1Y3QgdGxzX29wdGlvbnMKIAogICAvKiAtLWdyZW1saW4gYml0 cyAqLwogICBpbnQgZ3JlbWxpbjsKKworICAvKiBLZXlpbmcgTWF0ZXJpYWwgRXhwb3J0ZXIgW1JG QyA1NzA1XSBwYXJhbWV0ZXJzICovCisgIHVpbnQ4X3QgKmttZV9sYWJlbDsKKyAgaW50IGttZV9s YWJlbF9zaXplOworICBib29sIGJpbmRpbmdfa2V5X2dlbjsgLyogdHJ1ZSB3aGVuIGJpbmRpbmcg a2V5IHNob3VsZCBiZSBnZW5lcmF0ZWQgKi8KKyAgaW50IGJpbmRpbmdfa2V5X3NpemU7CiB9Owog CiAvKiogQGFkZHRvZ3JvdXAgY29udHJvbF9wcm9jZXNzb3IKQEAgLTM1OSw2ICszNjUsMTIgQEAg c3RydWN0IHRsc19zZXNzaW9uCiAgIHN0cnVjdCBjcnlwdG9fb3B0aW9ucyB0bHNfYXV0aDsKICAg c3RydWN0IHBhY2tldF9pZCB0bHNfYXV0aF9waWQ7CiAKKyAgLyogbnVtYmVyIG9mIG5lZ290aWF0 aW9ucyBmb3IgdGhpcyBzZXNzaW9uICovCisgIHVuc2lnbmVkIGludCBuZWdvdGlhdGlvbnM7CisK KyAgLyogY2hhbm5lbF9pZCBpZGVudGlmaWVzIFRMUyBzZXNzaW9uIGFjcm9zcyAocmUpbmVnb3Rp YXRpb25zICovCisgIHVpbnQ4X3QgY2hhbm5lbF9pZFszMl07ICAgICAgICAgICAgICAgICAKKwog ICBpbnQgaW5pdGlhbF9vcGNvZGU7CQkvKiBvdXIgaW5pdGlhbCBQXyBvcGNvZGUgKi8KICAgc3Ry dWN0IHNlc3Npb25faWQgc2Vzc2lvbl9pZDsJLyogb3VyIHJhbmRvbSBzZXNzaW9uIElEICovCiAg IGludCBrZXlfaWQ7CQkJLyogaW5jcmVtZW50cyB3aXRoIGVhY2ggc29mdCByZXNldCAoZm9yIGtl eSByZW5lZ290aWF0aW9uKSAqLwo= ------=_20140417024607_87143--