From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 4D28121959CB2 for ; Sun, 11 Nov 2018 09:28:08 -0800 (PST) Received: from pps.filterd (m0098414.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id wABHO9si029123 for ; Sun, 11 Nov 2018 12:28:07 -0500 Received: from e06smtp05.uk.ibm.com (e06smtp05.uk.ibm.com [195.75.94.101]) by mx0b-001b2d01.pphosted.com with ESMTP id 2npdbnp277-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Sun, 11 Nov 2018 12:28:06 -0500 Received: from localhost by e06smtp05.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Sun, 11 Nov 2018 17:28:04 -0000 Subject: Re: [PATCH 02/11] libnvdimm/security: change clear text nvdimm keys to encrypted keys From: Mimi Zohar Date: Sun, 11 Nov 2018 12:27:48 -0500 In-Reply-To: <154180163666.70506.8805433934495072699.stgit@djiang5-desk3.ch.intel.com> References: <154180093865.70506.6858789591063128903.stgit@djiang5-desk3.ch.intel.com> <154180163666.70506.8805433934495072699.stgit@djiang5-desk3.ch.intel.com> Mime-Version: 1.0 Message-Id: <1541957268.3734.53.camel@linux.ibm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: Dave Jiang , dan.j.williams@intel.com, zohar@linux.vnet.ibm.com Cc: linux-nvdimm@lists.01.org List-ID: T24gRnJpLCAyMDE4LTExLTA5IGF0IDE1OjEzIC0wNzAwLCBEYXZlIEppYW5nIHdyb3RlOgo+IElu IG9yZGVyIHRvIG1ha2UgbnZkaW1tIG1vcmUgc2VjdXJlLCBlbmNyeXB0ZWQga2V5cyB3aWxsIGJl IHVzZWQgaW5zdGVhZCBvZgo+IGNsZWFyIHRleHQga2V5cy4gQSBtYXN0ZXIga2V5IHdpbGwgYmUg Y3JlYXRlZCB0byBzZWFsIGVuY3J5cHRlZCBudmRpbW0KPiBrZXlzLiBUaGUgbWFzdGVyIGtleSBj YW4gYmUgYSB0cnVzdGVkIGtleSBnZW5lcmF0ZWQgZnJvbSBUUE0gMi4wIG9yIGEgbGVzcwo+IHNl Y3VyZSB1c2VyIGtleS4KClRydXN0ZWQga2V5cyBhbHNvIHdvcmsgZm9yIFRQTSAxLjIuIMKgQXJl IHlvdSBpbnRlbnRpb25hbGx5IGxpbWl0aW5nCnRoZSBtYXN0ZXIga2V5IHRvIFRQTSAyLjA/CgpU cmFkaXRpb25hbGx5IHRoZXJlIGlzIGEgc2luZ2xlIG1hc3RlciBrZXkgZm9yIHRoZSBzeXN0ZW0s IHdoaWNoIHdvdWxkCmJlIHNlYWxlZCB0byBhIHNldCBvZiBib290IHRpbWUgUENSIHZhbHVlcy4g wqBBZnRlciBkZWNyeXB0aW5nIGFsbCBvZgp0aGUgZW5jcnlwdGVkIGtleXMsIHRoZSBtYXN0ZXIg a2V5IHdvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUga2V5cmluZwphbmQgYSBQQ1IgZXh0ZW5kZWQu IMKgRXh0ZW5kaW5nIGEgUENSIHdvdWxkIHByZXZlbnQgdGhlIG1hc3RlciBrZXkgZnJvbQpiZWlu ZyB1bnNlYWxlZCBhZ2FpbiBhbmQgdXNlZCB0byBkZWNyeXB0IGVuY3J5cHRlZCBrZXlzLCB3aXRo b3V0CnJlYm9vdGluZyB0aGUgc3lzdGVtLiDCoE5vcm1hbGx5IHRoaXMgd291bGQgYmUgZG9uZSBi ZWZvcmUgcGl2b3RpbmcKcm9vdC4KCklmIHlvdSdyZSBub3QgcmVmZXJyaW5nIHRvIHRoZSBzeXN0 ZW0gbWFzdGVyIGtleSBhbmQgYXJlIGludGVudGlvbmFsbHkKbGltaXRpbmcgdXNhZ2UgdG8gVFBN IDIuMCwgbW9yZSBkZXRhaWxzIG9uIHRoZSBtYXN0ZXIga2V5IHNlY3VyaXR5CnJlcXVpcmVtZW50 cyBzaG91bGQgYmUgaW5jbHVkZWQuCgpVc2luZyB0cnVzdGVkIGtleXMgdGhhdCBhcmUgZW5jcnlw dGVkL2RlY3J5cHRlZCB1c2luZyBhIHVzZXIga2V5CnNob3VsZCByZWFsbHkgYmUgbGltaXRlZCB0 byB0ZXN0aW5nIGVudmlyb25tZW50cy4KCj4gCj4gSW4gdGhlIHByb2Nlc3Mgb2YgdGhpcyBjb252 ZXJzaW9uLCB0aGUga2VybmVsIGNhY2hlZCBrZXkgd2lsbCBiZSByZW1vdmVkCj4gaW4gb3JkZXIg dG8gc2ltcGxpZnkgdGhlIHZlcmlmaWNhdGlvbiBwcm9jZXNzLiBUaGUgaGFyZHdhcmUgd2lsbCBi ZSB1c2VkIHRvCj4gdmVyaWZ5IHRoZSBkZWNyeXB0ZWQgdXNlciBwYXlsb2FkIGRpcmVjdGx5LgoK TWFraW5nIHRoaXMgc29ydCBvZiBjaGFuZ2UgaW1wbGllcyB0aGVyZSBpcyBubyBjb25jZXJuIGlu IGJyZWFraW5nCmV4aXN0aW5nIHVzZXJzcGFjZS4gwqBFaXRoZXIgdGhlIGNvZGUgaGFzbid0IHll dCBiZWVuIHVwc3RyZWFtZWQgb3IKdGhlcmUgYXJlIG5vdCBhbnkgdXNlcnMuIElmIHRoZSBjb2Rl IGhhc24ndCBiZWVuIHVwc3RyZWFtZWQsIGl0IHdvdWxkCm1ha2UgbW9yZSBzZW5zZSB0byBzcXVh c2ggdGhlIGdpdCBoaXN0b3J5OgoKLSBtYWtpbmcgY29kZSByZXZpZXcgZWFzaWVyCi0gbWFraW5n IHRoZSBnaXQgaGlzdG9yeSBiaXNlY3Qgc2FmZQoKTWltaQoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBE YXZlIEppYW5nIDxkYXZlLmppYW5nQGludGVsLmNvbT4KPiAtLS0KPiAgRG9jdW1lbnRhdGlvbi9u dmRpbW0vc2VjdXJpdHkudHh0IHwgICAyOSArKy0KPiAgZHJpdmVycy9udmRpbW0vZGltbS5jICAg ICAgICAgICAgIHwgICAgMyAKPiAgZHJpdmVycy9udmRpbW0vZGltbV9kZXZzLmMgICAgICAgIHwg ICAgMiAKPiAgZHJpdmVycy9udmRpbW0vbmQtY29yZS5oICAgICAgICAgIHwgICAgMyAKPiAgZHJp dmVycy9udmRpbW0vbmQuaCAgICAgICAgICAgICAgIHwgICAgNSAtCj4gIGRyaXZlcnMvbnZkaW1t L3NlY3VyaXR5LmMgICAgICAgICB8ICAzMTYgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+ICA2IGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCAyNTAgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbnZkaW1tL3NlY3VyaXR5LnR4 dCBiL0RvY3VtZW50YXRpb24vbnZkaW1tL3NlY3VyaXR5LnR4dAo+IGluZGV4IDUwY2JiNmNiOTZh MS4uMTEyNDBjZTQ4NzU1IDEwMDY0NAo+IC0tLSBhL0RvY3VtZW50YXRpb24vbnZkaW1tL3NlY3Vy aXR5LnR4dAo+ICsrKyBiL0RvY3VtZW50YXRpb24vbnZkaW1tL3NlY3VyaXR5LnR4dAo+IEBAIC0z OSwzNCArMzksMzkgQEAgVGhlIERJTU0gaWQgd291bGQgYmUgcHJvdmlkZWQgYWxvbmcgd2l0aCB0 aGUga2V5IHBheWxvYWQgKHBhc3NwaHJhc2UpIHRvCj4gIHRoZSBrZXJuZWwuCj4gCj4gIFRoZSBz ZWN1cml0eSBrZXlzIGFyZSBtYW5hZ2VkIG9uIHRoZSBiYXNpcyBvZiBhIHNpbmdsZSBrZXkgcGVy IERJTU0uIFRoZQo+IC1rZXkgInBhc3NwaHJhc2UiIGlzIGV4cGVjdGVkIHRvIGJlIDMyYnl0ZXMg bG9uZyBvciBwYWRkZWQgdG8gMzJieXRlcy4gVGhpcyBpcwo+ICtrZXkgInBhc3NwaHJhc2UiIGlz IGV4cGVjdGVkIHRvIGJlIDMyYnl0ZXMgbG9uZy4gVGhpcyBpcwo+ICBzaW1pbGFyIHRvIHRoZSBB VEEgc2VjdXJpdHkgc3BlY2lmaWNhdGlvbiBbMl0uIEEga2V5IGlzIGluaXRpYWxseSBhY3F1aXJl ZAo+ICB2aWEgdGhlIHJlcXVlc3Rfa2V5KCkga2VybmVsIEFQSSBjYWxsIGFuZCByZXRyaWV2ZWQg ZnJvbSB1c2Vyc3BhY2UuIEl0IGlzIHVwIHRvCj4gIHRoZSB1c2VyIHRvIHByb3ZpZGUgYW4gdXBj YWxsIGFwcGxpY2F0aW9uIHRvIHJldHJpZXZlIHRoZSBrZXkgaW4gd2hhdGV2ZXIKPiAgZmFzaGlv biBtZWV0cyB0aGVpciBzZWN1cml0eSByZXF1aXJlbWVudHMuCj4gCj4gLUEgbnZkaW1tIHVzZXIg bG9nb24ga2V5IGhhcyB0aGUgZGVzY3JpcHRpb24gZm9ybWF0IG9mOgo+ICtBIG52ZGltbSBlbmNy eXB0ZWQga2V5IGhhcyB0aGUgZGVzY3JpcHRpb24gZm9ybWF0IG9mOgo+ICBudmRpbW06PGJ1cy1w cm92aWRlci1zcGVjaWZpYy11bmlxdWUtaWQ+Cj4gCj4gK1NlZSBEb2N1bWVudGF0aW9uL3NlY3Vy aXR5L2tleXMvdHJ1c3RlZC1lbmNyeXB0ZWQucnN0IGZvciBkZXRhaWxzIG9uIGVuY3J5cHRlZAo+ ICtrZXlzLiBUaGUgZW5jcnlwdGVkIGtleSBmb3IgdGhlIERJTU0gaXMgZ2VuZXJhdGVkIGZyb20g YSBtYXN0ZXIga2V5IHRoYXQgaXMKPiArZWl0aGVyIGEgdHJ1c3RlZCBrZXkgY3JlYXRlZCB2aWEg VFBNMiBvciBhIGxlc3Mgc2VjdXJlIHVzZXIga2V5LiBUaGUgcGF5bG9hZAo+ICtmb3IgdGhlIG52 ZGltbSBlbmNyeXB0ZWQga2V5IGlzIHJhbmRvbWx5IGdlbmVyYXRlZCBieSB0aGUga2VybmVsIGFu ZCBpcyBub3QKPiArdmlzaWJsZSB0byB0aGUgdXNlci4gVGhlIHVzZXIgaXMgcmVzcG9uc2libGUg Zm9yIHJldGFpbmluZyB0aGUgZW5jcnlwdGVkIGtleQo+ICtibG9iIGdlbmVyYXRlZCBmcm9tIHRo ZSBlbmNyeXB0ZWQga2V5IHRvIGJlIGxvYWRlZCBhdCB0aGUgbmV4dCBib290IHNlc3Npb24uCj4g Kwo+ICA0LiBVbmxvY2tpbmcKPiAgLS0tLS0tLS0tLS0tCj4gIFdoZW4gdGhlIERJTU1zIGFyZSBi ZWluZyBlbnVtZXJhdGVkIGJ5IHRoZSBrZXJuZWwsIHRoZSBrZXJuZWwgd2lsbCBhdHRlbXB0IHRv Cj4gLXJldHJpZXZlIHRoZSBrZXkgZnJvbSBpdHMga2V5cmluZy4gSWYgdGhhdCBmYWlscywgaXQg d2lsbCBhdHRlbXB0IHRvCj4gIGFjcXVpcmUgdGhlIGtleSBmcm9tIHRoZSB1c2Vyc3BhY2UgdXBj YWxsIGZ1bmN0aW9uLiBUaGlzIGlzIHRoZSBvbmx5IHRpbWUKPiAgYSBsb2NrZWQgRElNTSBjYW4g YmUgdW5sb2NrZWQuIE9uY2UgdW5sb2NrZWQsIHRoZSBESU1NIHdpbGwgcmVtYWluIHVubG9ja2Vk Cj4gIHVudGlsIHJlYm9vdC4KPiAKPiAgNS4gVXBkYXRlCj4gIC0tLS0tLS0tLQo+IC1XaGVuIGRv aW5nIGFuIHVwZGF0ZSwgaXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGUgbmV3IGtleSB3aXRoIHRoZSA2 NGJpdCBwYXlsb2FkIG9mCj4gLWZvcm1hdCBkZXNjcmliZWQgYWJvdmUgaXMgYWRkZWQgdmlhIHRo ZSBrZXl1dGlscyBBUEkgb3IgdXRpbGl0eS4gVGhlIHVwZGF0ZQo+IC1jb21tYW5kIHdyaXR0ZW4g dG8gdGhlIHN5c2ZzIGF0dHJpYnV0ZSB3aWxsIGJlIHdpdGggdGhlIGZvcm1hdDoKPiArV2hlbiBk b2luZyBhbiB1cGRhdGUsIGl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIG5ldyBrZXkgaXMgYWRkZWQg dmlhIHRoZQo+ICtrZXl1dGlscyBBUEkgb3IgdXRpbGl0eS4gVGhlIHVwZGF0ZSBjb21tYW5kIHdy aXR0ZW4gdG8gdGhlIHN5c2ZzIGF0dHJpYnV0ZQo+ICt3aWxsIGJlIHdpdGggdGhlIGZvcm1hdDoK PiAgdXBkYXRlIDxvbGQga2V5aWQ+IDxuZXcga2V5aWQ+Cj4gCj4gLUl0IGlzIGV4cGVjdGVkIHRo YXQgYSB1c2VyIGxvZ29uIGtleSBoYXMgYmVlbiBpbmplY3RlZCB2aWEga2V5dXRpbHMgdG8gcHJv dmlkZQo+IC10aGUgcGF5bG9hZCBmb3IgdGhlIHVwZGF0ZSBvcGVyYXRpb24uIFRoZSBrZXJuZWwg d2lsbCB0YWtlIHRoZSBuZXcgdXNlciBrZXksCj4gLWF0dGVtcHQgdGhlIHVwZGF0ZSBvcGVyYXRp b24gd2l0aCB0aGUgbnZkaW1tLCBhbmQgcmVwbGFjZSB0aGUgZXhpc3Rpbmcga2V5J3MKPiAtcGF5 bG9hZCB3aXRoIHRoZSBuZXcgcGFzc3BocmFzZS4KPiArSXQgaXMgZXhwZWN0ZWQgdGhhdCBhIGVu Y3J5cHRlZCBrZXkgaGFzIGJlZW4gaW5qZWN0ZWQgdmlhIGtleXV0aWxzIHRvIHByb3ZpZGUKPiAr dGhlIHBheWxvYWQgZm9yIHRoZSB1cGRhdGUgb3BlcmF0aW9uLiBUaGUga2VybmVsIHdpbGwgdGFr ZSB0aGUgbmV3IHVzZXIga2V5Cj4gK2FuZCB0aGUgb2xkIHVzZXIga2V5IHRvIGF0dGVtcHQgdGhl IHVwZGF0ZSBvcGVyYXRpb24uCj4gCj4gIElmIHRoZXJlIGlzIG5vIG9sZCBrZXkgaWQgZHVlIHRv IGEgc2VjdXJpdHkgZW5hYmxpbmcsIHRoZW4gYSAwIHNob3VsZCBiZQo+ICBwYXNzZWQgaW4uICBJ ZiBhIG52ZGltbSBoYXMgYW4gZXhpc3RpbmcgcGFzc3BocmFzZSwgdGhlbiBhbiAib2xkIiBrZXkg c2hvdWxkCj4gQEAgLTgwLDcgKzg1LDcgQEAgZnJvemVuIGJ5IGEgdXNlciB3aXRoIHJvb3QgcHJp dmVsZWdlLgo+ICA3LiBEaXNhYmxlCj4gIC0tLS0tLS0tLS0KPiAgVGhlIHNlY3VyaXR5IGRpc2Fi bGUgY29tbWFuZCBmb3JtYXQgaXM6Cj4gLWRpc2FibGUgPG9sZCBrZXlpZD4KPiArZGlzYWJsZSA8 Y3VycmVudCBrZXlpZD4KPiAKPiAgQW4gIm9sZCIga2V5IHdpdGggdGhlIHBhc3NwaHJhc2UgcGF5 bG9hZCB0aGF0IGlzIHRpZWQgdG8gdGhlIG52ZGltbSBzaG91bGQgYmUKPiAgaW5qZWN0ZWQgd2l0 aCBhIGtleSBkZXNjcmlwdGlvbiB0aGF0IGRvZXMgbm90IGhhdmUgdGhlICJudmRpbW06IiBwcmVm aXggYW5kCj4gQEAgLTg5LDcgKzk0LDcgQEAgaXRzIGtleWlkIHNob3VsZCBiZSBwYXNzZWQgaW4g dmlhIHN5c2ZzLgo+ICA4LiBTZWN1cmUgRXJhc2UKPiAgLS0tLS0tLS0tLS0tLS0tCj4gIFRoZSBj b21tYW5kIGZvcm1hdCBmb3IgZG9pbmcgYSBzZWN1cmUgZXJhc2UgaXM6Cj4gLWVyYXNlIDxvbGQg a2V5aWQ+Cj4gK2VyYXNlIDxjdXJyZW50IGtleWlkPgo+IAo+ICBBbiAib2xkIiBrZXkgd2l0aCB0 aGUgcGFzc3BocmFzZSBwYXlsb2FkIHRoYXQgaXMgdGllZCB0byB0aGUgbnZkaW1tIHNob3VsZCBi ZQo+ICBpbmplY3RlZCB3aXRoIGEga2V5IGRlc2NyaXB0aW9uIHRoYXQgZG9lcyBub3QgaGF2ZSB0 aGUgIm52ZGltbToiIHByZWZpeCBhbmQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9udmRpbW0vZGlt bS5jIGIvZHJpdmVycy9udmRpbW0vZGltbS5jCj4gaW5kZXggMjI1YTg0NzRjNDRhLi5jMzg4NmEy MmI1ZTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9udmRpbW0vZGltbS5jCj4gKysrIGIvZHJpdmVy cy9udmRpbW0vZGltbS5jCj4gQEAgLTExMiw5ICsxMTIsNiBAQCBzdGF0aWMgaW50IG52ZGltbV9w cm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIHN0YXRpYyBpbnQgbnZkaW1tX3JlbW92ZShzdHJ1 Y3QgZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCBudmRpbW1fZHJ2ZGF0YSAqbmRkID0gZGV2 X2dldF9kcnZkYXRhKGRldik7Cj4gLQlzdHJ1Y3QgbnZkaW1tICpudmRpbW0gPSB0b19udmRpbW0o ZGV2KTsKPiAtCj4gLQludmRpbW1fc2VjdXJpdHlfcmVsZWFzZShudmRpbW0pOwo+IAo+ICAJaWYg KCFuZGQpCj4gIAkJcmV0dXJuIDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1tL2RpbW1f ZGV2cy5jIGIvZHJpdmVycy9udmRpbW0vZGltbV9kZXZzLmMKPiBpbmRleCA1ZDM0MjUxYzRmM2Iu LjI2OWY0MDFhNWU2OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL252ZGltbS9kaW1tX2RldnMuYwo+ ICsrKyBiL2RyaXZlcnMvbnZkaW1tL2RpbW1fZGV2cy5jCj4gQEAgLTQ4NSw3ICs0ODUsNyBAQCBz dHJ1Y3QgbnZkaW1tICpfX252ZGltbV9jcmVhdGUoc3RydWN0IG52ZGltbV9idXMgKm52ZGltbV9i dXMsIHZvaWQgKnByb3ZpZGVyX2RhdAo+ICAJbnZkaW1tLT5udW1fZmx1c2ggPSBudW1fZmx1c2g7 Cj4gIAludmRpbW0tPmZsdXNoX3dwcSA9IGZsdXNoX3dwcTsKPiAgCWF0b21pY19zZXQoJm52ZGlt bS0+YnVzeSwgMCk7Cj4gLQltdXRleF9pbml0KCZudmRpbW0tPmtleV9tdXRleCk7Cj4gKwltdXRl eF9pbml0KCZudmRpbW0tPnNlY19tdXRleCk7Cj4gIAlkZXYgPSAmbnZkaW1tLT5kZXY7Cj4gIAlk ZXZfc2V0X25hbWUoZGV2LCAibm1lbSVkIiwgbnZkaW1tLT5pZCk7Cj4gIAlkZXYtPnBhcmVudCA9 ICZudmRpbW1fYnVzLT5kZXY7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1tL25kLWNvcmUu aCBiL2RyaXZlcnMvbnZkaW1tL25kLWNvcmUuaAo+IGluZGV4IDZlMjg3Nzk5NmE5Yi4uY2ZiODdm NzFkYjhkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbnZkaW1tL25kLWNvcmUuaAo+ICsrKyBiL2Ry aXZlcnMvbnZkaW1tL25kLWNvcmUuaAo+IEBAIC00NSw4ICs0NSw3IEBAIHN0cnVjdCBudmRpbW0g ewo+ICAJY29uc3QgY2hhciAqZGltbV9pZDsKPiAgCWNvbnN0IHN0cnVjdCBudmRpbW1fc2VjdXJp dHlfb3BzICpzZWN1cml0eV9vcHM7Cj4gIAllbnVtIG52ZGltbV9zZWN1cml0eV9zdGF0ZSBzdGF0 ZTsKPiAtCXN0cnVjdCBrZXkgKmtleTsKPiAtCXN0cnVjdCBtdXRleCBrZXlfbXV0ZXg7Cj4gKwlz dHJ1Y3QgbXV0ZXggc2VjX211dGV4Owo+ICB9Owo+IAo+ICAvKioKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9udmRpbW0vbmQuaCBiL2RyaXZlcnMvbnZkaW1tL25kLmgKPiBpbmRleCA4OTJmMTI3YmZk MzguLmY4ZDhmMGEyYTQwZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL252ZGltbS9uZC5oCj4gKysr IGIvZHJpdmVycy9udmRpbW0vbmQuaAo+IEBAIC00MjgsNyArNDI4LDYgQEAgYm9vbCBwbWVtX3No b3VsZF9tYXBfcGFnZXMoc3RydWN0IGRldmljZSAqZGV2KTsKPiAKPiAgI2lmZGVmIENPTkZJR19O VkRJTU1fU0VDVVJJVFkKPiAgaW50IG52ZGltbV9zZWN1cml0eV91bmxvY2tfZGltbShzdHJ1Y3Qg bnZkaW1tICpudmRpbW0pOwo+IC12b2lkIG52ZGltbV9zZWN1cml0eV9yZWxlYXNlKHN0cnVjdCBu dmRpbW0gKm52ZGltbSk7Cj4gIGludCBudmRpbW1fc2VjdXJpdHlfZ2V0X3N0YXRlKHN0cnVjdCBu dmRpbW0gKm52ZGltbSk7Cj4gIGludCBudmRpbW1fc2VjdXJpdHlfY2hhbmdlX2tleShzdHJ1Y3Qg bnZkaW1tICpudmRpbW0sIHVuc2lnbmVkIGludCBvbGRfa2V5aWQsCj4gIAkJdW5zaWduZWQgaW50 IG5ld19rZXlpZCk7Cj4gQEAgLTQ0MSwxMCArNDQwLDYgQEAgc3RhdGljIGlubGluZSBpbnQgbnZk aW1tX3NlY3VyaXR5X3VubG9ja19kaW1tKHN0cnVjdCBudmRpbW0gKm52ZGltbSkKPiAgCXJldHVy biAwOwo+ICB9Cj4gCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBudmRpbW1fc2VjdXJpdHlfcmVsZWFz ZShzdHJ1Y3QgbnZkaW1tICpudmRpbW0pCj4gLXsKPiAtfQo+IC0KPiAgc3RhdGljIGlubGluZSBp bnQgbnZkaW1tX3NlY3VyaXR5X2dldF9zdGF0ZShzdHJ1Y3QgbnZkaW1tICpudmRpbW0pCj4gIHsK PiAgCXJldHVybiAtRU9QTk9UU1VQUDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9udmRpbW0vc2Vj dXJpdHkuYyBiL2RyaXZlcnMvbnZkaW1tL3NlY3VyaXR5LmMKPiBpbmRleCA1YWFjYzU5MGI0YzAu LmVlNzQxMTk5ZDYyMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL252ZGltbS9zZWN1cml0eS5jCj4g KysrIGIvZHJpdmVycy9udmRpbW0vc2VjdXJpdHkuYwo+IEBAIC0xMCw0MyArMTAsMTAgQEAKPiAg I2luY2x1ZGUgPGxpbnV4L2tleS5oPgo+ICAjaW5jbHVkZSA8bGludXgva2V5LXR5cGUuaD4KPiAg I2luY2x1ZGUgPGtleXMvdXNlci10eXBlLmg+Cj4gKyNpbmNsdWRlIDxrZXlzL2VuY3J5cHRlZC10 eXBlLmg+Cj4gICNpbmNsdWRlICJuZC1jb3JlLmgiCj4gICNpbmNsdWRlICJuZC5oIgo+IAo+IC0v Kgo+IC0gKiBSZXBsYWNpbmcgdGhlIHVzZXIga2V5IHdpdGggYSBrZXJuZWwga2V5LiBUaGUgZnVu Y3Rpb24gZXhwZWN0cyB0aGF0Cj4gLSAqIHdlIGhvbGQgdGhlIHNlbSBmb3IgdGhlIGtleSBwYXNz ZWQgaW4uIFRoZSBmdW5jdGlvbiB3aWxsIHJlbGVhc2UgdGhhdAo+IC0gKiBzZW0gd2hlbiBkb25l IHByb2Nlc3MuIFdlIHdpbGwgYWxzbyBob2xkIHRoZSBzZW0gZm9yIHRoZSB2YWxpZCBuZXcga2V5 Cj4gLSAqIHJldHVybmVkLgo+IC0gKi8KPiAtc3RhdGljIHN0cnVjdCBrZXkgKm1ha2Vfa2VybmVs X2tleShzdHJ1Y3Qga2V5ICprZXkpCj4gLXsKPiAtCXN0cnVjdCBrZXkgKm5ld19rZXk7Cj4gLQlz dHJ1Y3QgdXNlcl9rZXlfcGF5bG9hZCAqcGF5bG9hZDsKPiAtCWludCByYzsKPiAtCj4gLQluZXdf a2V5ID0ga2V5X2FsbG9jKCZrZXlfdHlwZV9sb2dvbiwga2V5LT5kZXNjcmlwdGlvbiwKPiAtCQkJ R0xPQkFMX1JPT1RfVUlELCBHTE9CQUxfUk9PVF9HSUQsIGN1cnJlbnRfY3JlZCgpLAo+IC0JCQlL RVlfUE9TX0FMTCAmIH5LRVlfUE9TX1NFVEFUVFIsCj4gLQkJCUtFWV9BTExPQ19OT1RfSU5fUVVP VEEsIE5VTEwpOwo+IC0JaWYgKElTX0VSUihuZXdfa2V5KSkKPiAtCQlyZXR1cm4gTlVMTDsKPiAt Cj4gLQlwYXlsb2FkID0ga2V5LT5wYXlsb2FkLmRhdGFbMF07Cj4gLQlyYyA9IGtleV9pbnN0YW50 aWF0ZV9hbmRfbGluayhuZXdfa2V5LCBwYXlsb2FkLT5kYXRhLAo+IC0JCQlwYXlsb2FkLT5kYXRh bGVuLCBOVUxMLCBOVUxMKTsKPiAtCXVwX3JlYWQoJmtleS0+c2VtKTsKPiAtCWlmIChyYyA8IDAp IHsKPiAtCQlrZXlfcHV0KG5ld19rZXkpOwo+IC0JCXJldHVybiBOVUxMOwo+IC0JfQo+IC0KPiAt CWtleV9wdXQoa2V5KTsKPiAtCj4gLQlkb3duX3JlYWQoJm5ld19rZXktPnNlbSk7Cj4gLQlyZXR1 cm4gbmV3X2tleTsKPiAtfQo+IC0KPiAgLyoKPiAgICogUmV0cmlldmUgdXNlciBpbmplY3RlZCBr ZXkKPiAgICovCj4gQEAgLTYxLDYgKzI4LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qga2V5ICpudmRpbW1f bG9va3VwX3VzZXJfa2V5KHN0cnVjdCBkZXZpY2UgKmRldiwKPiAgCQlyZXR1cm4gTlVMTDsKPiAK PiAgCWtleSA9IGtleV9yZWZfdG9fcHRyKGtleXJlZik7Cj4gKwlpZiAoa2V5LT50eXBlICE9ICZr ZXlfdHlwZV9lbmNyeXB0ZWQpIHsKPiArCQlrZXlfcHV0KGtleSk7Cj4gKwkJcmV0dXJuIE5VTEw7 Cj4gKwl9Cj4gIAlkZXZfZGJnKGRldiwgIiVzOiBrZXkgZm91bmQ6ICUjeFxuIiwgX19mdW5jX18s IGtleV9zZXJpYWwoa2V5KSk7Cj4gCj4gIAlyZXR1cm4ga2V5Owo+IEBAIC03Niw3ICs0Nyw3IEBA IHN0YXRpYyBzdHJ1Y3Qga2V5ICpudmRpbW1fcmVxdWVzdF9rZXkoc3RydWN0IG52ZGltbSAqbnZk aW1tKQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gJm52ZGltbS0+ZGV2Owo+IAo+ICAJc3ByaW50 ZihkZXNjLCAiJXMlcyIsIE5WRElNTV9QUkVGSVgsIG52ZGltbS0+ZGltbV9pZCk7Cj4gLQlrZXkg PSByZXF1ZXN0X2tleSgma2V5X3R5cGVfbG9nb24sIGRlc2MsICIiKTsKPiArCWtleSA9IHJlcXVl c3Rfa2V5KCZrZXlfdHlwZV9lbmNyeXB0ZWQsIGRlc2MsICIiKTsKPiAgCWlmIChJU19FUlIoa2V5 KSkgewo+ICAJCWlmIChQVFJfRVJSKGtleSkgPT0gLUVOT0tFWSkKPiAgCQkJZGV2X3dhcm4oZGV2 LCAicmVxdWVzdF9rZXkoKSBmb3VuZCBubyBrZXlcbiIpOwo+IEBAIC04OCw1MiArNTksNiBAQCBz dGF0aWMgc3RydWN0IGtleSAqbnZkaW1tX3JlcXVlc3Rfa2V5KHN0cnVjdCBudmRpbW0gKm52ZGlt bSkKPiAgCXJldHVybiBrZXk7Cj4gIH0KPiAKPiAtc3RydWN0IGtleSAqbnZkaW1tX2dldF9hbmRf dmVyaWZ5X2tleShzdHJ1Y3QgbnZkaW1tICpudmRpbW0sCj4gLQkJdW5zaWduZWQgaW50IHVzZXJf a2V5X2lkKQo+IC17Cj4gLQlpbnQgcmM7Cj4gLQlzdHJ1Y3Qga2V5ICp1c2VyX2tleSwgKmtleTsK PiAtCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZudmRpbW0tPmRldjsKPiAtCXN0cnVjdCB1c2VyX2tl eV9wYXlsb2FkICp1cGF5bG9hZCwgKnBheWxvYWQ7Cj4gLQo+IC0JbG9ja2RlcF9hc3NlcnRfaGVs ZCgmbnZkaW1tLT5rZXlfbXV0ZXgpOwo+IC0Ja2V5ID0gbnZkaW1tLT5rZXk7Cj4gLQlpZiAoIWtl eSkgewo+IC0JCWRldl9kYmcoZGV2LCAiTm8gY2FjaGVkIGtlcm5lbCBrZXlcbiIpOwo+IC0JCXJl dHVybiBFUlJfUFRSKC1FQUdBSU4pOzsKPiAtCX0KPiAtCWRldl9kYmcoZGV2LCAiY2FjaGVkX2tl eTogJSN4XG4iLCBrZXlfc2VyaWFsKGtleSkpOwo+IC0KPiAtCXVzZXJfa2V5ID0gbnZkaW1tX2xv b2t1cF91c2VyX2tleShkZXYsIHVzZXJfa2V5X2lkKTsKPiAtCWlmICghdXNlcl9rZXkpIHsKPiAt CQlkZXZfZGJnKGRldiwgIk9sZCB1c2VyIGtleSBsb29rdXAgZmFpbGVkXG4iKTsKPiAtCQlyZXR1 cm4gRVJSX1BUUigtRUlOVkFMKTsKPiAtCX0KPiAtCWRldl9kYmcoZGV2LCAidXNlcl9rZXk6ICUj eFxuIiwga2V5X3NlcmlhbCh1c2VyX2tleSkpOwo+IC0KPiAtCWRvd25fcmVhZCgma2V5LT5zZW0p Owo+IC0JZG93bl9yZWFkKCZ1c2VyX2tleS0+c2VtKTsKPiAtCXBheWxvYWQgPSBrZXktPnBheWxv YWQuZGF0YVswXTsKPiAtCXVwYXlsb2FkID0gdXNlcl9rZXktPnBheWxvYWQuZGF0YVswXTsKPiAt Cj4gLQlyYyA9IG1lbWNtcChwYXlsb2FkLT5kYXRhLCB1cGF5bG9hZC0+ZGF0YSwgTlZESU1NX1BB U1NQSFJBU0VfTEVOKTsKPiAtCXVwX3JlYWQoJnVzZXJfa2V5LT5zZW0pOwo+IC0Ja2V5X3B1dCh1 c2VyX2tleSk7Cj4gLQl1cF9yZWFkKCZrZXktPnNlbSk7Cj4gLQo+IC0JaWYgKHJjICE9IDApIHsK PiAtCQlkZXZfd2FybihkZXYsICJTdXBwbGllZCBvbGQgdXNlciBrZXkgZmFpbHMgY2hlY2suXG4i KTsKPiAtCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiAtCX0KPiAtCXJldHVybiBrZXk7Cj4g LX0KPiAtCj4gLXN0YXRpYyB2b2lkIGtleV9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSkKPiAtewo+ IC0Ja2V5X2ludmFsaWRhdGUoa2V5KTsKPiAtCWtleV9wdXQoa2V5KTsKPiAtfQo+IC0KPiAgaW50 IG52ZGltbV9zZWN1cml0eV9nZXRfc3RhdGUoc3RydWN0IG52ZGltbSAqbnZkaW1tKQo+ICB7Cj4g IAlpZiAoIW52ZGltbS0+c2VjdXJpdHlfb3BzKQo+IEBAIC0xNDYsMTQgKzcxLDE1IEBAIGludCBu dmRpbW1fc2VjdXJpdHlfZXJhc2Uoc3RydWN0IG52ZGltbSAqbnZkaW1tLCB1bnNpZ25lZCBpbnQg a2V5aWQpCj4gIHsKPiAgCWludCByYyA9IDA7Cj4gIAlzdHJ1Y3Qga2V5ICprZXk7Cj4gLQlzdHJ1 Y3QgdXNlcl9rZXlfcGF5bG9hZCAqcGF5bG9hZDsKPiArCXN0cnVjdCBlbmNyeXB0ZWRfa2V5X3Bh eWxvYWQgKmVwYXlsb2FkOwo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gJm52ZGltbS0+ZGV2Owo+ ICsJdm9pZCAqZGF0YTsKPiAKPiAgCWlmICghbnZkaW1tLT5zZWN1cml0eV9vcHMpCj4gIAkJcmV0 dXJuIC1FT1BOT1RTVVBQOwo+IAo+ICAJbnZkaW1tX2J1c19sb2NrKGRldik7Cj4gLQltdXRleF9s b2NrKCZudmRpbW0tPmtleV9tdXRleCk7Cj4gKwltdXRleF9sb2NrKCZudmRpbW0tPnNlY19tdXRl eCk7Cj4gIAlpZiAoYXRvbWljX3JlYWQoJm52ZGltbS0+YnVzeSkpIHsKPiAgCQlkZXZfd2Fybihk ZXYsICJVbmFibGUgdG8gc2VjdXJlIGVyYXNlIHdoaWxlIERJTU0gYWN0aXZlLlxuIik7Cj4gIAkJ cmMgPSAtRUJVU1k7Cj4gQEAgLTE2NiwyNiArOTIsMjMgQEAgaW50IG52ZGltbV9zZWN1cml0eV9l cmFzZShzdHJ1Y3QgbnZkaW1tICpudmRpbW0sIHVuc2lnbmVkIGludCBrZXlpZCkKPiAgCQlnb3Rv IG91dDsKPiAgCX0KPiAKPiAtCS8qIGxvb2sgZm9yIGEga2V5IGZyb20gY2FjaGVkIGtleSBpZiBl eGlzdHMgKi8KPiAtCWtleSA9IG52ZGltbV9nZXRfYW5kX3ZlcmlmeV9rZXkobnZkaW1tLCBrZXlp ZCk7Cj4gLQlpZiAoSVNfRVJSKGtleSkpIHsKPiArCWtleSA9IG52ZGltbV9sb29rdXBfdXNlcl9r ZXkoZGV2LCBrZXlpZCk7Cj4gKwlpZiAoIWtleSkgewo+ICAJCWRldl9kYmcoZGV2LCAiVW5hYmxl IHRvIGdldCBhbmQgdmVyaWZ5IGtleVxuIik7Cj4gLQkJcmMgPSBQVFJfRVJSKGtleSk7Cj4gKwkJ cmMgPSAtRU5PS0VZOwo+ICAJCWdvdG8gb3V0Owo+ICAJfQo+IAo+ICAJZG93bl9yZWFkKCZrZXkt PnNlbSk7Cj4gLQlwYXlsb2FkID0ga2V5LT5wYXlsb2FkLmRhdGFbMF07Cj4gKwllcGF5bG9hZCA9 IGRlcmVmZXJlbmNlX2tleV9sb2NrZWQoa2V5KTsKPiArCWRhdGEgPSBlcGF5bG9hZC0+ZGVjcnlw dGVkX2RhdGE7Cj4gIAlyYyA9IG52ZGltbS0+c2VjdXJpdHlfb3BzLT5lcmFzZShudmRpbW0sCj4g LQkJCShjb25zdCBzdHJ1Y3QgbnZkaW1tX2tleV9kYXRhICopcGF5bG9hZC0+ZGF0YSk7Cj4gKwkJ CShjb25zdCBzdHJ1Y3QgbnZkaW1tX2tleV9kYXRhICopZGF0YSk7Cj4gIAl1cF9yZWFkKCZrZXkt PnNlbSk7Cj4gLQo+IC0JLyogcmVtb3ZlIGtleSBzaW5jZSBzZWN1cmUgZXJhc2Uga2lsbHMgdGhl IHBhc3NwaHJhc2UgKi8KPiAtCWtleV9kZXN0cm95KGtleSk7Cj4gLQludmRpbW0tPmtleSA9IE5V TEw7Cj4gKwlrZXlfcHV0KGtleSk7Cj4gCj4gICBvdXQ6Cj4gLQltdXRleF91bmxvY2soJm52ZGlt bS0+a2V5X211dGV4KTsKPiArCW11dGV4X3VubG9jaygmbnZkaW1tLT5zZWNfbXV0ZXgpOwo+ICAJ bnZkaW1tX2J1c191bmxvY2soZGV2KTsKPiAgCW52ZGltbV9zZWN1cml0eV9nZXRfc3RhdGUobnZk aW1tKTsKPiAgCXJldHVybiByYzsKPiBAQCAtMjAxLDExICsxMjQsMTUgQEAgaW50IG52ZGltbV9z ZWN1cml0eV9mcmVlemVfbG9jayhzdHJ1Y3QgbnZkaW1tICpudmRpbW0pCj4gIAlpZiAobnZkaW1t LT5zdGF0ZSA9PSBOVkRJTU1fU0VDVVJJVFlfVU5TVVBQT1JURUQpCj4gIAkJcmV0dXJuIC1FT1BO T1RTVVBQOwo+IAo+ICsJbXV0ZXhfbG9jaygmbnZkaW1tLT5zZWNfbXV0ZXgpOwo+ICAJcmMgPSBu dmRpbW0tPnNlY3VyaXR5X29wcy0+ZnJlZXplX2xvY2sobnZkaW1tKTsKPiAtCWlmIChyYyA8IDAp Cj4gKwlpZiAocmMgPCAwKSB7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZudmRpbW0tPnNlY19tdXRleCk7 Cj4gIAkJcmV0dXJuIHJjOwo+ICsJfQo+IAo+ICAJbnZkaW1tX3NlY3VyaXR5X2dldF9zdGF0ZShu dmRpbW0pOwo+ICsJbXV0ZXhfdW5sb2NrKCZudmRpbW0tPnNlY19tdXRleCk7Cj4gIAlyZXR1cm4g MDsKPiAgfQo+IAo+IEBAIC0yMTMsOCArMTQwLDkgQEAgaW50IG52ZGltbV9zZWN1cml0eV9kaXNh YmxlKHN0cnVjdCBudmRpbW0gKm52ZGltbSwgdW5zaWduZWQgaW50IGtleWlkKQo+ICB7Cj4gIAlp bnQgcmM7Cj4gIAlzdHJ1Y3Qga2V5ICprZXk7Cj4gLQlzdHJ1Y3QgdXNlcl9rZXlfcGF5bG9hZCAq cGF5bG9hZDsKPiArCXN0cnVjdCBlbmNyeXB0ZWRfa2V5X3BheWxvYWQgKmVwYXlsb2FkOwo+ICAJ c3RydWN0IGRldmljZSAqZGV2ID0gJm52ZGltbS0+ZGV2Owo+ICsJdm9pZCAqZGF0YTsKPiAKPiAg CWlmICghbnZkaW1tLT5zZWN1cml0eV9vcHMpCj4gIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwo+IEBA IC0yMjIsNTcgKzE1MCw1MiBAQCBpbnQgbnZkaW1tX3NlY3VyaXR5X2Rpc2FibGUoc3RydWN0IG52 ZGltbSAqbnZkaW1tLCB1bnNpZ25lZCBpbnQga2V5aWQpCj4gIAlpZiAobnZkaW1tLT5zdGF0ZSA9 PSBOVkRJTU1fU0VDVVJJVFlfVU5TVVBQT1JURUQpCj4gIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwo+ IAo+IC0JbXV0ZXhfbG9jaygmbnZkaW1tLT5rZXlfbXV0ZXgpOwo+ICsJbXV0ZXhfbG9jaygmbnZk aW1tLT5zZWNfbXV0ZXgpOwo+ICAJLyogbG9vayBmb3IgYSBrZXkgZnJvbSBjYWNoZWQga2V5ICov Cj4gLQlrZXkgPSBudmRpbW1fZ2V0X2FuZF92ZXJpZnlfa2V5KG52ZGltbSwga2V5aWQpOwo+IC0J aWYgKElTX0VSUihrZXkpKSB7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZudmRpbW0tPmtleV9tdXRleCk7 Cj4gLQkJcmV0dXJuIFBUUl9FUlIoa2V5KTsKPiArCWtleSA9IG52ZGltbV9sb29rdXBfdXNlcl9r ZXkoZGV2LCBrZXlpZCk7Cj4gKwlpZiAoIWtleSkgewo+ICsJCW11dGV4X3VubG9jaygmbnZkaW1t LT5zZWNfbXV0ZXgpOwo+ICsJCXJldHVybiAtRU5PS0VZOwo+ICAJfQo+IAo+ICAJZG93bl9yZWFk KCZrZXktPnNlbSk7Cj4gLQlwYXlsb2FkID0ga2V5LT5wYXlsb2FkLmRhdGFbMF07Cj4gKwllcGF5 bG9hZCA9IGRlcmVmZXJlbmNlX2tleV9sb2NrZWQoa2V5KTsKPiArCWRhdGEgPSBlcGF5bG9hZC0+ ZGVjcnlwdGVkX2RhdGE7Cj4gCj4gIAlyYyA9IG52ZGltbS0+c2VjdXJpdHlfb3BzLT5kaXNhYmxl KG52ZGltbSwKPiAtCQkJKGNvbnN0IHN0cnVjdCBudmRpbW1fa2V5X2RhdGEgKilwYXlsb2FkLT5k YXRhKTsKPiArCQkJKGNvbnN0IHN0cnVjdCBudmRpbW1fa2V5X2RhdGEgKilkYXRhKTsKPiAgCXVw X3JlYWQoJmtleS0+c2VtKTsKPiAtCWlmIChyYyA8IDApIHsKPiArCWlmIChyYyA8IDApCj4gIAkJ ZGV2X3dhcm4oZGV2LCAic2VjdXJpdHkgZGlzYWJsZSBmYWlsZWRcbiIpOwo+IC0JCWdvdG8gb3V0 Owo+IC0JfQo+IAo+IC0JLyogSWYgd2Ugc3VjY2VlZCB0aGVuIHJlbW92ZSB0aGUga2V5ICovCj4g LQlrZXlfZGVzdHJveShrZXkpOwo+IC0JbnZkaW1tLT5rZXkgPSBOVUxMOwo+IC0KPiAtIG91dDoK PiAtCW11dGV4X3VubG9jaygmbnZkaW1tLT5rZXlfbXV0ZXgpOwo+ICsJa2V5X3B1dChrZXkpOwo+ ICAJbnZkaW1tX3NlY3VyaXR5X2dldF9zdGF0ZShudmRpbW0pOwo+ICsJbXV0ZXhfdW5sb2NrKCZu dmRpbW0tPnNlY19tdXRleCk7Cj4gIAlyZXR1cm4gcmM7Cj4gIH0KPiAKPiAtc3RhdGljIGludCBu dmRpbW1fc2VsZl92ZXJpZnlfa2V5KHN0cnVjdCBudmRpbW0gKm52ZGltbSkKPiArc3RhdGljIHN0 cnVjdCBrZXkgKm52ZGltbV9zZWxmX3ZlcmlmeV9rZXkoc3RydWN0IG52ZGltbSAqbnZkaW1tKQo+ ICB7Cj4gIAlzdHJ1Y3Qga2V5ICprZXk7Cj4gLQlzdHJ1Y3QgdXNlcl9rZXlfcGF5bG9hZCAqcGF5 bG9hZDsKPiArCXN0cnVjdCBlbmNyeXB0ZWRfa2V5X3BheWxvYWQgKmVwYXlsb2FkOwo+ICAJdm9p ZCAqZGF0YTsKPiAgCWludCByYzsKPiAKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm52ZGltbS0+ a2V5X211dGV4KTsKPiAtCj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZudmRpbW0tPnNlY19tdXRl eCk7Cj4gIAlrZXkgPSBudmRpbW1fcmVxdWVzdF9rZXkobnZkaW1tKTsKPiAgCWlmICgha2V5KQo+ IC0JCXJldHVybiAtRU5PS0VZOwo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCWRvd25fcmVhZCgm a2V5LT5zZW0pOwo+ICsJZXBheWxvYWQgPSBkZXJlZmVyZW5jZV9rZXlfbG9ja2VkKGtleSk7Cj4g KwlkYXRhID0gZXBheWxvYWQtPmRlY3J5cHRlZF9kYXRhOwo+IAo+IC0JaWYgKGtleS0+ZGF0YWxl biAhPSBOVkRJTU1fUEFTU1BIUkFTRV9MRU4pIHsKPiArCWlmIChlcGF5bG9hZC0+ZGVjcnlwdGVk X2RhdGFsZW4gIT0gTlZESU1NX1BBU1NQSFJBU0VfTEVOKSB7Cj4gIAkJa2V5X3B1dChrZXkpOwo+ IC0JCXJldHVybiAtRUlOVkFMOwo+ICsJCWtleSA9IE5VTEw7Cj4gKwkJZ290byBvdXQ7Cj4gIAl9 Cj4gCj4gLQlkb3duX3JlYWQoJmtleS0+c2VtKTsKPiAtCXBheWxvYWQgPSBrZXktPnBheWxvYWQu ZGF0YVswXTsKPiAtCWRhdGEgPSBwYXlsb2FkLT5kYXRhOwo+IC0KPiAgCS8qCj4gIAkgKiBXZSBz ZW5kIHRoZSBzYW1lIGtleSB0byB0aGUgaGFyZHdhcmUgYXMgbmV3IGFuZCBvbGQga2V5IHRvCj4g IAkgKiB2ZXJpZnkgdGhhdCB0aGUga2V5IGlzIGdvb2QuCj4gQEAgLTI4MCwxOSArMjAzLDIxIEBA IHN0YXRpYyBpbnQgbnZkaW1tX3NlbGZfdmVyaWZ5X2tleShzdHJ1Y3QgbnZkaW1tICpudmRpbW0p Cj4gIAlyYyA9IG52ZGltbS0+c2VjdXJpdHlfb3BzLT5jaGFuZ2Vfa2V5KG52ZGltbSwgZGF0YSwg ZGF0YSk7Cj4gIAlpZiAocmMgPCAwKSB7Cj4gIAkJa2V5X3B1dChrZXkpOwo+IC0JCXJldHVybiBy YzsKPiArCQlrZXkgPSBOVUxMOwo+ICAJfQo+ICsKPiArb3V0Ogo+ICAJdXBfcmVhZCgma2V5LT5z ZW0pOwo+IC0JbnZkaW1tLT5rZXkgPSBrZXk7Cj4gLQlyZXR1cm4gMDsKPiArCXJldHVybiBrZXk7 Cj4gIH0KPiAKPiAgaW50IG52ZGltbV9zZWN1cml0eV91bmxvY2tfZGltbShzdHJ1Y3QgbnZkaW1t ICpudmRpbW0pCj4gIHsKPiAtCXN0cnVjdCBrZXkgKmtleTsKPiAtCWludCByYyA9IC1FTlhJTzsK PiAtCXN0cnVjdCB1c2VyX2tleV9wYXlsb2FkICpwYXlsb2FkOwo+ICsJc3RydWN0IGtleSAqa2V5 ID0gTlVMTDsKPiArCWludCByYzsKPiArCXN0cnVjdCBlbmNyeXB0ZWRfa2V5X3BheWxvYWQgKmVw YXlsb2FkOwo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gJm52ZGltbS0+ZGV2Owo+ICsJdm9pZCAq ZGF0YTsKPiAKPiAgCWlmICghbnZkaW1tLT5zZWN1cml0eV9vcHMpCj4gIAkJcmV0dXJuIDA7Cj4g QEAgLTMwMSw3ICsyMjYsNyBAQCBpbnQgbnZkaW1tX3NlY3VyaXR5X3VubG9ja19kaW1tKHN0cnVj dCBudmRpbW0gKm52ZGltbSkKPiAgCQkJbnZkaW1tLT5zdGF0ZSA9PSBOVkRJTU1fU0VDVVJJVFlf RElTQUJMRUQpCj4gIAkJcmV0dXJuIDA7Cj4gCj4gLQltdXRleF9sb2NrKCZudmRpbW0tPmtleV9t dXRleCk7Cj4gKwltdXRleF9sb2NrKCZudmRpbW0tPnNlY19tdXRleCk7Cj4gIAkvKgo+ICAJICog SWYgdGhlIHByZS1PUyBoYXMgdW5sb2NrZWQgdGhlIERJTU0sIHdlIHdpbGwgYXR0ZW1wdCB0byBz ZW5kCj4gIAkgKiB0aGUga2V5IGZyb20gcmVxdWVzdF9rZXkoKSB0byB0aGUgaGFyZHdhcmUgZm9y IHZlcmlmaWNhdGlvbi4KPiBAQCAtMzEwLDYwICsyMzUsNTAgQEAgaW50IG52ZGltbV9zZWN1cml0 eV91bmxvY2tfZGltbShzdHJ1Y3QgbnZkaW1tICpudmRpbW0pCj4gIAkgKiBvdGhlciBzZWN1cml0 eSBvcGVyYXRpb25zLgo+ICAJICovCj4gIAlpZiAobnZkaW1tLT5zdGF0ZSA9PSBOVkRJTU1fU0VD VVJJVFlfVU5MT0NLRUQpIHsKPiAtCQlyYyA9IG52ZGltbV9zZWxmX3ZlcmlmeV9rZXkobnZkaW1t KTsKPiAtCQlpZiAocmMgPCAwKSB7Cj4gKwkJa2V5ID0gbnZkaW1tX3NlbGZfdmVyaWZ5X2tleShu dmRpbW0pOwo+ICsJCWlmICgha2V5KSB7Cj4gIAkJCXJjID0gbnZkaW1tX3NlY3VyaXR5X2ZyZWV6 ZV9sb2NrKG52ZGltbSk7Cj4gLQkJCW11dGV4X3VubG9jaygmbnZkaW1tLT5rZXlfbXV0ZXgpOwo+ IC0JCQlyZXR1cm4gcmM7Cj4gKwkJCW11dGV4X3VubG9jaygmbnZkaW1tLT5zZWNfbXV0ZXgpOwo+ ICsJCQlyZXR1cm4gLUVOT0tFWTsKPiAgCQl9Cj4gIAl9Cj4gCj4gLQlrZXkgPSBudmRpbW0tPmtl eTsKPiAtCWlmICgha2V5KSB7Cj4gKwlpZiAoIWtleSkKPiAgCQlrZXkgPSBudmRpbW1fcmVxdWVz dF9rZXkobnZkaW1tKTsKPiAtCQlpZiAoa2V5ICYmIGtleS0+ZGF0YWxlbiAhPSBOVkRJTU1fUEFT U1BIUkFTRV9MRU4pIHsKPiAtCQkJa2V5X3B1dChrZXkpOwo+IC0JCQlrZXkgPSBOVUxMOwo+IC0J CQlyYyA9IC1FSU5WQUw7Cj4gLQkJfQo+IC0JfQo+ICsKPiAgCWlmICgha2V5KSB7Cj4gLQkJbXV0 ZXhfdW5sb2NrKCZudmRpbW0tPmtleV9tdXRleCk7Cj4gLQkJcmV0dXJuIHJjOwo+ICsJCW11dGV4 X3VubG9jaygmbnZkaW1tLT5zZWNfbXV0ZXgpOwo+ICsJCXJldHVybiAtRU5PS0VZOwo+ICAJfQo+ IAo+ICAJZGV2X2RiZyhkZXYsICIlczoga2V5OiAlI3hcbiIsIF9fZnVuY19fLCBrZXlfc2VyaWFs KGtleSkpOwo+ICAJZG93bl9yZWFkKCZrZXktPnNlbSk7Cj4gLQlwYXlsb2FkID0ga2V5LT5wYXls b2FkLmRhdGFbMF07Cj4gKwllcGF5bG9hZCA9IGRlcmVmZXJlbmNlX2tleV9sb2NrZWQoa2V5KTsK PiArCWRhdGEgPSBlcGF5bG9hZC0+ZGVjcnlwdGVkX2RhdGE7Cj4gKwo+ICsJaWYgKGVwYXlsb2Fk LT5kZWNyeXB0ZWRfZGF0YWxlbiAhPSBOVkRJTU1fUEFTU1BIUkFTRV9MRU4pIHsKPiArCQl1cF9y ZWFkKCZrZXktPnNlbSk7Cj4gKwkJa2V5X3B1dChrZXkpOwo+ICsJCW11dGV4X3VubG9jaygmbnZk aW1tLT5zZWNfbXV0ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiAgCXJjID0g bnZkaW1tLT5zZWN1cml0eV9vcHMtPnVubG9jayhudmRpbW0sCj4gLQkJCShjb25zdCBzdHJ1Y3Qg bnZkaW1tX2tleV9kYXRhICopcGF5bG9hZC0+ZGF0YSk7Cj4gKwkJCShjb25zdCBzdHJ1Y3QgbnZk aW1tX2tleV9kYXRhICopZGF0YSk7Cj4gIAl1cF9yZWFkKCZrZXktPnNlbSk7Cj4gCj4gIAlpZiAo cmMgPT0gMCkgewo+IC0JCWlmICghbnZkaW1tLT5rZXkpCj4gLQkJCW52ZGltbS0+a2V5ID0ga2V5 Owo+ICAJCW52ZGltbS0+c3RhdGUgPSBOVkRJTU1fU0VDVVJJVFlfVU5MT0NLRUQ7Cj4gIAkJZGV2 X2RiZyhkZXYsICJESU1NICVzIHVubG9ja2VkXG4iLCBkZXZfbmFtZShkZXYpKTsKPiAtCX0gZWxz ZSB7Cj4gLQkJa2V5X2ludmFsaWRhdGUoa2V5KTsKPiAtCQlrZXlfcHV0KGtleSk7Cj4gLQkJbnZk aW1tLT5rZXkgPSBOVUxMOwo+ICsJfSBlbHNlCj4gIAkJZGV2X3dhcm4oZGV2LCAiRmFpbGVkIHRv IHVubG9jayBkaW1tOiAlc1xuIiwgZGV2X25hbWUoZGV2KSk7Cj4gLQl9Cj4gCj4gLQltdXRleF91 bmxvY2soJm52ZGltbS0+a2V5X211dGV4KTsKPiArCWtleV9wdXQoa2V5KTsKPiAgCW52ZGltbV9z ZWN1cml0eV9nZXRfc3RhdGUobnZkaW1tKTsKPiArCW11dGV4X3VubG9jaygmbnZkaW1tLT5zZWNf bXV0ZXgpOwo+ICAJcmV0dXJuIHJjOwo+ICB9Cj4gCj4gLXZvaWQgbnZkaW1tX3NlY3VyaXR5X3Jl bGVhc2Uoc3RydWN0IG52ZGltbSAqbnZkaW1tKQo+IC17Cj4gLQltdXRleF9sb2NrKCZudmRpbW0t PmtleV9tdXRleCk7Cj4gLQlrZXlfcHV0KG52ZGltbS0+a2V5KTsKPiAtCW52ZGltbS0+a2V5ID0g TlVMTDsKPiAtCW11dGV4X3VubG9jaygmbnZkaW1tLT5rZXlfbXV0ZXgpOwo+IC19Cj4gLQo+ICBp bnQgbnZkaW1tX3NlY3VyaXR5X2NoYW5nZV9rZXkoc3RydWN0IG52ZGltbSAqbnZkaW1tLAo+ICAJ CXVuc2lnbmVkIGludCBvbGRfa2V5aWQsIHVuc2lnbmVkIGludCBuZXdfa2V5aWQpCj4gIHsKPiBA QCAtMzcxLDcgKzI4Niw3IEBAIGludCBudmRpbW1fc2VjdXJpdHlfY2hhbmdlX2tleShzdHJ1Y3Qg bnZkaW1tICpudmRpbW0sCj4gIAlzdHJ1Y3Qga2V5ICprZXksICpvbGRfa2V5Owo+ICAJdm9pZCAq b2xkX2RhdGEgPSBOVUxMLCAqbmV3X2RhdGE7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmbnZk aW1tLT5kZXY7Cj4gLQlzdHJ1Y3QgdXNlcl9rZXlfcGF5bG9hZCAqcGF5bG9hZCwgKm9sZF9wYXls b2FkOwo+ICsJc3RydWN0IGVuY3J5cHRlZF9rZXlfcGF5bG9hZCAqZXBheWxvYWQsICpvbGRfZXBh eWxvYWQ7Cj4gCj4gIAlpZiAoIW52ZGltbS0+c2VjdXJpdHlfb3BzKQo+ICAJCXJldHVybiAtRU9Q Tk9UU1VQUDsKPiBAQCAtMzc5LDE1ICsyOTQsMTAgQEAgaW50IG52ZGltbV9zZWN1cml0eV9jaGFu Z2Vfa2V5KHN0cnVjdCBudmRpbW0gKm52ZGltbSwKPiAgCWlmIChudmRpbW0tPnN0YXRlID09IE5W RElNTV9TRUNVUklUWV9GUk9aRU4pCj4gIAkJcmV0dXJuIC1FQlVTWTsKPiAKPiAtCW11dGV4X2xv Y2soJm52ZGltbS0+a2V5X211dGV4KTsKPiArCW11dGV4X2xvY2soJm52ZGltbS0+c2VjX211dGV4 KTsKPiAgCS8qIGxvb2sgZm9yIGEga2V5IGZyb20gY2FjaGVkIGtleSBpZiBleGlzdHMgKi8KPiAt CW9sZF9rZXkgPSBudmRpbW1fZ2V0X2FuZF92ZXJpZnlfa2V5KG52ZGltbSwgb2xkX2tleWlkKTsK PiAtCWlmIChJU19FUlIob2xkX2tleSkgJiYgUFRSX0VSUihvbGRfa2V5KSA9PSAtRUFHQUlOKQo+ IC0JCW9sZF9rZXkgPSBOVUxMOwo+IC0JZWxzZSBpZiAoSVNfRVJSKG9sZF9rZXkpKSB7Cj4gLQkJ bXV0ZXhfdW5sb2NrKCZudmRpbW0tPmtleV9tdXRleCk7Cj4gLQkJcmV0dXJuIFBUUl9FUlIob2xk X2tleSk7Cj4gLQl9IGVsc2UKPiArCW9sZF9rZXkgPSBudmRpbW1fbG9va3VwX3VzZXJfa2V5KGRl diwgb2xkX2tleWlkKTsKPiArCWlmIChvbGRfa2V5KQo+ICAJCWRldl9kYmcoZGV2LCAiJXM6IG9s ZCBrZXk6ICUjeFxuIiwgX19mdW5jX18sCj4gIAkJCQlrZXlfc2VyaWFsKG9sZF9rZXkpKTsKPiAK PiBAQCAtNDAyLDc2ICszMTIsMjggQEAgaW50IG52ZGltbV9zZWN1cml0eV9jaGFuZ2Vfa2V5KHN0 cnVjdCBudmRpbW0gKm52ZGltbSwKPiAgCWRldl9kYmcoZGV2LCAiJXM6IG5ldyBrZXk6ICUjeFxu IiwgX19mdW5jX18sIGtleV9zZXJpYWwoa2V5KSk7Cj4gCj4gIAlkb3duX3JlYWQoJmtleS0+c2Vt KTsKPiAtCXBheWxvYWQgPSBrZXktPnBheWxvYWQuZGF0YVswXTsKPiAtCWlmIChwYXlsb2FkLT5k YXRhbGVuICE9IE5WRElNTV9QQVNTUEhSQVNFX0xFTikgewo+IC0JCXJjID0gLUVJTlZBTDsKPiAt CQl1cF9yZWFkKCZrZXktPnNlbSk7Cj4gLQkJZ290byBvdXQ7Cj4gLQl9Cj4gLQo+IC0JLyoKPiAt CSAqIFNpbmNlIHRoZXJlIGlzIG5vIGV4aXN0aW5nIGtleSB0aGlzIHVzZXIga2V5IHdpbGwgYmVj b21lIHRoZQo+IC0JICoga2VybmVsJ3Mga2V5Lgo+IC0JICovCj4gLQlpZiAoIW9sZF9rZXkpIHsK PiAtCQlrZXkgPSBtYWtlX2tlcm5lbF9rZXkoa2V5KTsKPiAtCQlpZiAoIWtleSkgewo+IC0JCQly YyA9IC1FTk9NRU07Cj4gLQkJCWdvdG8gb3V0Owo+IC0JCX0KPiAtCX0KPiAtCj4gLQkvKgo+IC0J ICogV2UgZG9uJ3QgbmVlZCB0byByZWxlYXNlIGtleS0+c2VtIGhlcmUgYmVjYXVzZQo+IC0JICog bWFrZV9rZXJuZWxfa2V5KCkgd2lsbCBoYXZlIHVwZ3JhZGVkIHRoZSB1c2VyIGtleSB0byBrZXJu ZWwKPiAtCSAqIGFuZCBoYW5kbGVkIHRoZSBzZW1hcGhvcmUgaGFuZG9mZi4KPiAtCSAqLwo+IC0J cGF5bG9hZCA9IGtleS0+cGF5bG9hZC5kYXRhWzBdOwo+ICsJZXBheWxvYWQgPSBkZXJlZmVyZW5j ZV9rZXlfbG9ja2VkKGtleSk7Cj4gKwluZXdfZGF0YSA9IGVwYXlsb2FkLT5kZWNyeXB0ZWRfZGF0 YTsKPiAKPiAgCWlmIChvbGRfa2V5KSB7Cj4gIAkJZG93bl9yZWFkKCZvbGRfa2V5LT5zZW0pOwo+ IC0JCW9sZF9wYXlsb2FkID0gb2xkX2tleS0+cGF5bG9hZC5kYXRhWzBdOwo+IC0JCW9sZF9kYXRh ID0gb2xkX3BheWxvYWQtPmRhdGE7Cj4gKwkJb2xkX2VwYXlsb2FkID0gZGVyZWZlcmVuY2Vfa2V5 X2xvY2tlZChvbGRfa2V5KTsKPiArCQlvbGRfZGF0YSA9IG9sZF9lcGF5bG9hZC0+ZGVjcnlwdGVk X2RhdGE7Cj4gIAl9Cj4gCj4gLQluZXdfZGF0YSA9IHBheWxvYWQtPmRhdGE7Cj4gLQo+ICAJcmMg PSBudmRpbW0tPnNlY3VyaXR5X29wcy0+Y2hhbmdlX2tleShudmRpbW0sIG9sZF9kYXRhLAo+ICAJ CQluZXdfZGF0YSk7Cj4gIAlpZiAocmMpCj4gIAkJZGV2X3dhcm4oZGV2LCAia2V5IHVwZGF0ZSBm YWlsZWQ6ICVkXG4iLCByYyk7Cj4gCj4gLQlpZiAob2xkX2tleSkgewo+ICsJaWYgKG9sZF9rZXkp Cj4gIAkJdXBfcmVhZCgmb2xkX2tleS0+c2VtKTsKPiAtCQkvKgo+IC0JCSAqIFdpdGggdGhlIGtl eSB1cGRhdGUgZG9uZSB2aWEgaGFyZHdhcmUsIHdlIG5vIGxvbmdlciBuZWVkCj4gLQkJICogdGhl IG9sZCBwYXlsb2FkIGFuZCBuZWVkIHRvIHJlcGxhY2UgaXQgd2l0aCB0aGUgbmV3Cj4gLQkJICog cGF5bG9hZC4ga2V5X3VwZGF0ZSgpIHdpbGwgYWNxdWlyZSB3cml0ZSBzZW0gb2YgdGhlCj4gLQkJ ICogb2xkIGtleSBhbmQgdXBkYXRlIHdpdGggbmV3IGRhdGEuCj4gLQkJICovCj4gLQkJaWYgKHJj ID09IDApIHsKPiAtCQkJcmMgPSBrZXlfdXBkYXRlKG1ha2Vfa2V5X3JlZihvbGRfa2V5LCAxKSwg bmV3X2RhdGEsCj4gLQkJCQkJb2xkX2tleS0+ZGF0YWxlbik7Cj4gLQkJCWlmIChyYyA8IDApIHsK PiAtCQkJCWRldl93YXJuKGRldiwKPiAtCQkJCQkia2VybmVsIGtleSB1cGRhdGUgZmFpbGVkOiAl ZFxuIiwgcmMpOwo+IC0JCQkJa2V5X2Rlc3Ryb3kob2xkX2tleSk7Cj4gLQkJCQludmRpbW0tPmtl eSA9IE5VTEw7Cj4gLQkJCX0KPiAtCQl9Cj4gLQl9Cj4gIAl1cF9yZWFkKCZrZXktPnNlbSk7Cj4g LQo+IC0JaWYgKCFvbGRfa2V5KSB7Cj4gLQkJaWYgKHJjID09IDApIHsKPiAtCQkJZGV2X2RiZyhk ZXYsICJrZXkgY2FjaGVkOiAlI3hcbiIsIGtleV9zZXJpYWwoa2V5KSk7Cj4gLQkJCW52ZGltbS0+ a2V5ID0ga2V5Owo+IC0JCX0gZWxzZQo+IC0JCQlrZXlfZGVzdHJveShrZXkpOwo+IC0JfQo+ICAJ bnZkaW1tX3NlY3VyaXR5X2dldF9zdGF0ZShudmRpbW0pOwo+IAo+ICAgb3V0Ogo+IC0JbXV0ZXhf dW5sb2NrKCZudmRpbW0tPmtleV9tdXRleCk7Cj4gKwltdXRleF91bmxvY2soJm52ZGltbS0+c2Vj X211dGV4KTsKPiArCWtleV9wdXQob2xkX2tleSk7Cj4gKwlrZXlfcHV0KGtleSk7Cj4gIAlyZXR1 cm4gcmM7Cj4gIH0KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkxpbnV4LW52ZGltbSBtYWlsaW5nIGxpc3QKTGludXgtbnZkaW1tQGxpc3RzLjAxLm9y ZwpodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW52ZGltbQo=