<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>171213</bug_id>
          
          <creation_ts>2017-04-24 00:56:22 -0700</creation_ts>
          <short_desc>[GCrypt] CryptoKeyRSA: implement create(), keySizeInBits(), buildAlgorithm(), exportData()</short_desc>
          <delta_ts>2017-04-26 00:40:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133122</blocked>
    
    <blocked>171219</blocked>
    
    <blocked>171220</blocked>
    
    <blocked>171222</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1300448</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-24 00:56:22 -0700</bug_when>
    <thetext>[GCrypt] CryptoKeyRSA: implement create(), keySizeInBits(), buildAlgorithm(), exportData()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300451</commentid>
    <comment_count>1</comment_count>
      <attachid>307961</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-24 01:19:34 -0700</bug_when>
    <thetext>Created attachment 307961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300478</commentid>
    <comment_count>2</comment_count>
      <attachid>307961</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-24 06:53:04 -0700</bug_when>
    <thetext>Comment on attachment 307961
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=307961&amp;action=review

Looks good. Please wait for Jiewen before committing, as usual.

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:337
&gt; +        // dp -- d mod (p - 1)

Thank you for the comments. ;)

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:341
&gt; +            gcry_mpi_sub_ui(pm1MPI, pm1MPI, 1);

Do you think it would be safer to use an extra local variable for the result here (i.e. have both pMPI and pm1MPI locals)? I&apos;m sure this is fine now and probably will be forever, but it could be disastrous if future versions of GCrypt can&apos;t handle the first parameter being the same as a subsequent parameter. That&apos;s probably paranoid though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300494</commentid>
    <comment_count>3</comment_count>
      <attachid>307961</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-24 07:37:02 -0700</bug_when>
    <thetext>Comment on attachment 307961
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=307961&amp;action=review

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:341
&gt;&gt; +            gcry_mpi_sub_ui(pm1MPI, pm1MPI, 1);
&gt; 
&gt; Do you think it would be safer to use an extra local variable for the result here (i.e. have both pMPI and pm1MPI locals)? I&apos;m sure this is fine now and probably will be forever, but it could be disastrous if future versions of GCrypt can&apos;t handle the first parameter being the same as a subsequent parameter. That&apos;s probably paranoid though.

This makes sense, I think. We could definitely avoid any bug that might manifest in libgcrypt due to aliased pointers being passed to gcry_mpi_*() functions.

In this case, all this can be simplified into plain-allocating pm1MPI and then calling gcry_mpi_sub_ui(pm1MPI, pMP1, 1). I&apos;ll switch to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301495</commentid>
    <comment_count>4</comment_count>
      <attachid>308219</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-25 22:54:27 -0700</bug_when>
    <thetext>Created attachment 308219
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301534</commentid>
    <comment_count>5</comment_count>
      <attachid>308219</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-26 00:40:30 -0700</bug_when>
    <thetext>Comment on attachment 308219
Patch for landing

Clearing flags on attachment: 308219

Committed r215796: &lt;http://trac.webkit.org/changeset/215796&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301535</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-26 00:40:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307961</attachid>
            <date>2017-04-24 01:19:34 -0700</date>
            <delta_ts>2017-04-25 22:54:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171213-20170424101933.patch</filename>
            <type>text/plain</type>
            <size>13022</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQ3MDdjOTBlZWFlZjk3
NTRlNjYyMmE1NGY4NGMyZjFkOTNhNjJkZS4uOWZmOTA0NTcyNmFjODI1OGM1YjE2MzBiZTA1MGI3
N2U4YTEzMWZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE3LTA0LTI0ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBDcnlw
dG9LZXlSU0E6IGltcGxlbWVudCBjcmVhdGUoKSwga2V5U2l6ZUluQml0cygpLCBidWlsZEFsZ29y
aXRobSgpLCBleHBvcnREYXRhKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTIxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENyeXB0b0tleVJTQTo6Y3JlYXRlKCkgdmFsaWRhdGVzIHRoZSBzcGVjaWZp
ZWQga2V5IHR5cGUgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgcHJvdmlkZWQgZGF0YS4gSWYgZXZl
cnl0aGluZyBpcyBPSywgaXQgdGhlbiBwcm9jZWVkcyB0byBidWlsZCB0aGUga2V5CisgICAgICAg
IG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlIHRocm91Z2ggYW4gcy1leHByZXNzaW9uIHRoYXQgaXMg
Y29uc3RydWN0ZWQgd2l0aAorICAgICAgICB0aGUgbmVjZXNzYXJ5IGRhdGEuIFdlIGRvbid0IGN1
cnJlbnRseSBzdXBwb3J0IGNyZWF0aW5nIHByaXZhdGUga2V5cworICAgICAgICB3aXRoIGFueSBh
ZGRpdGlvbmFsIHByaW1lIGluZm9ybWF0aW9uIChhcGFydCBmcm9tIHAgYW5kIHEpLgorCisgICAg
ICAgIENyeXB0b0tleVJTQTo6a2V5U2l6ZUluQml0cygpIGNhbGxzIHRoZSBoZWxwZXIgZ2V0UlNB
TW9kdWx1c0xlbmd0aCgpCisgICAgICAgIGZ1bmN0aW9uIHRoYXQgZmluZCB0aGUgbW9kdWx1cyBN
UEkgaW4gdGhlIGtleSBzLWV4cHJlc3Npb24gYW5kIHJldHVybnMKKyAgICAgICAgdGhlIG1vZHVs
dXMgZGF0YSBsZW5ndGggaW4gYml0cy4KKworICAgICAgICBDcnlwdG9LZXlSU0E6OmJ1aWxkQWxn
b3JpdGhtKCkgcmV0dXJucyBLZXlBbGdvcml0aG0gdGhhdCdzIGNvbnN0cnVjdGVkCisgICAgICAg
IGZyb20gdGhlIGFwcHJvcHJpYXRlIG5hbWUsIHRoaXMga2V5J3MgbW9kdWx1cyBsZW5ndGgsIGFu
ZCB0aGlzIGtleSdzCisgICAgICAgIHB1YmxpYyBleHBvbmVudCBkYXRhLiBJdCBhbHNvIHNwZWNp
ZmllcyB0aGUgaGFzaCBpZiB0aGVyZSBpcyBzdWNoIGEKKyAgICAgICAgcmVzdHJpY3Rpb24gZm9y
IHRoaXMga2V5LgorCisgICAgICAgIENyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSgpIHJldHVybnMg
YSBwcm9wZXJseS1jb25zdHJ1Y3RlZAorICAgICAgICBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50
cyBvYmplY3QuIFRoZSBwdWJsaWMgbW9kdWx1cyBhbmQgZXhwb25lbnQgYXJlCisgICAgICAgIHVz
ZWQgaW4gY2FzZSB0aGUga2V5IGlzIHB1YmxpYy4gSWYgdGhlIGtleSBpcyBwcml2YXRlLCB0aGUg
c2VjcmV0CisgICAgICAgIGV4cG9uZW50IGFuZCB0aGUgcCBhbmQgcSBwcmltZSBudW1iZXJzIGFy
ZSByZXRyaWV2ZWQgaW4gTVBJIGZvcm1hdC4KKyAgICAgICAgVGhleSdyZSB0aGVuIHVzZWQgdG8g
Y2FsY3VsYXRlIHRoZSBkcCwgZHEgYW5kIHFpIHBhcmFtZXRlcnMgdGhhdCBhcmUKKyAgICAgICAg
ZXhwb3J0ZWQgaW4gdGhlIEpXSyBmb3JtYXQuIE5vdGUgdGhhdCBsaWJnY3J5cHQgaW50ZXJuYWxs
eSBzd2l0Y2hlcworICAgICAgICB0aGUgcCBhbmQgcSBwcmltZSBudW1iZXJzIHN1Y2ggdGhhdCBw
IDwgcSwgYnV0IHRoZSBXZWIgQ3J5cHRvCisgICAgICAgIHNwZWNpZmljYXRpb24gYW5kIHRoZSBk
ZXBlbmRhbnQgUkZDcyBleHBlY3QgdGhhdCBxIDwgcC4gV2UgYWRkcmVzcworICAgICAgICB0aGlz
IGJ5IHNpbXBseSBzd2l0Y2hpbmcgdGhlIHJvbGVzIG9mIHRoZSB0d28gcHJpbWVzIGFuZCBmb2xs
b3cgdGhlCisgICAgICAgIHVzdWFsIHEgPCBwIGFzc3VtcHRpb24gd2hlbiBleHBvcnRpbmcgdGhl
IHByaW1lcyBhbmQgY29tcHV0aW5nIHRoZQorICAgICAgICBkZXBlbmRhbnQgZXhwb25lbnRzIGFu
ZCBjb2VmZmljaWVudHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0tIGV4aXN0aW5nIG9uZXMg
Y292ZXIgdGhpcyBidXQgZG9uJ3Qgd29yayB5ZXQgZHVlIHRvIG1pc3NpbmcKKyAgICAgICAgUlNB
LXJlbGF0ZWQgQ3J5cHRvQWxnb3JpdGhtIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIGNy
eXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omdl
dFJTQU1vZHVsdXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UGFyYW1ldGVyTVBJRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRSU0FLZXlQYXJhbWV0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvS2V5UlNBOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5
UlNBOjprZXlTaXplSW5CaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6YnVp
bGRBbGdvcml0aG0pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpleHBvcnREYXRh
KToKKwogMjAxNy0wNC0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxNTY1NyBhbmQgcjIxNTY3Ni4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0Ny
eXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0
LmNwcAppbmRleCAwN2ViMzE4OGE5ODBkNTJjMWE2ZGMxMDUxZjZhY2MwNGYyZWEyMjlkLi5hOWI3
OGUyMmQ5N2VlMDRkMDdlZTI4MTEzZDJjZWY5NmJkOGIzMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCkBAIC0zOSwxNyAr
MzksMTM5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPENyeXB0b0tleVJTQT4g
Q3J5cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVy
LCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGJvb2wgaGFzSGFzaCwgY29uc3QgQ3J5
cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwIHVzYWdlKQorLy8gUmV0cmlldmUgc2l6ZSBvZiB0aGUgcHVibGljIG1v
ZHVsdXMgTiBvZiB0aGUgZ2l2ZW4gUlNBIGtleSwgaW4gYml0cy4KK3N0YXRpYyBzaXplX3QgZ2V0
UlNBTW9kdWx1c0xlbmd0aChnY3J5X3NleHBfdCBzZXhwKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwotICAgIFVOVVNFRF9QQVJBTShoYXNo
KTsKLSAgICBVTlVTRURfUEFSQU0oaGFzSGFzaCk7Ci0gICAgVU5VU0VEX1BBUkFNKGtleURhdGEp
OwotICAgIFVOVVNFRF9QQVJBTShleHRyYWN0YWJsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVzYWdl
KTsKKyAgICAvLyBUaGUgcy1leHByZXNzaW9uIGlzIG9mIHJvdWdobHkgdGhlIGZvbGxvd2luZyBm
b3JtOgorICAgIC8vIChwcml2YXRlLWtleXxwdWJsaWMta2V5CisgICAgLy8gICAocnNhCisgICAg
Ly8gICAgIChuIG4tbXBpKQorICAgIC8vICAgICAoZSBlLW1waSkKKyAgICAvLyAgICAgLi4uKSkK
KyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBuU2V4cChnY3J5X3NleHBfZmlu
ZF90b2tlbihzZXhwLCAibiIsIDApKTsKKyAgICBpZiAoIW5TZXhwKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4gbk1QSShnY3J5X3NleHBf
bnRoX21waShuU2V4cCwgMSwgR0NSWU1QSV9GTVRfVVNHKSk7CisgICAgaWYgKCFuTVBJKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gMDsKKyAgICBnY3J5X2Vy
cm9yX3QgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG51bGxwdHIsIDAs
ICZkYXRhTGVuZ3RoLCBuTVBJKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
eworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZGF0YUxlbmd0aCAq
IDg7Cit9CisKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gZ2V0UGFyYW1ldGVyTVBJRGF0YShnY3J5
X21waV90IHBhcmFtTVBJKQoreworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gMDsKKyAgICBnY3J5
X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG51bGxwdHIs
IDAsICZkYXRhTGVuZ3RoLCBwYXJhbU1QSSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9f
RVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gcGFyYW1ldGVyKGRhdGFM
ZW5ndGgpOworICAgIGVycm9yID0gZ2NyeV9tcGlfcHJpbnQoR0NSWU1QSV9GTVRfVVNHLCBwYXJh
bWV0ZXIuZGF0YSgpLCBwYXJhbWV0ZXIuc2l6ZSgpLCBudWxscHRyLCBwYXJhbU1QSSk7CisgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6Omxv
Z0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1cm4g
cGFyYW1ldGVyOworfQorCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGdldFJTQUtleVBhcmFtZXRl
cihnY3J5X3NleHBfdCBzZXhwLCBjb25zdCBjaGFyKiBuYW1lKQoreworICAgIFBBTDo6R0NyeXB0
OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHBhcmFtU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihzZXhw
LCBuYW1lLCAwKSk7CisgICAgaWYgKCFwYXJhbVNleHApCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHBhcmFtTVBJKGdjcnlfc2V4cF9u
dGhfbXBpKHBhcmFtU2V4cCwgMSwgR0NSWU1QSV9GTVRfVVNHKSk7CisgICAgaWYgKCFwYXJhbU1Q
SSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBnZXRQYXJhbWV0ZXJNUElEYXRh
KHBhcmFtTVBJKTsKK30KKworUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpjcmVh
dGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGhhc2gsIGJvb2wgaGFzSGFzaCwgY29uc3QgQ3J5cHRvS2V5RGF0YVJTQUNvbXBv
bmVudHMmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVz
YWdlcykKK3sKKyAgICAvLyBXaGVuIGNyZWF0aW5nIGEgcHJpdmF0ZSBrZXksIHdlIHJlcXVpcmUg
dGhlIHAgYW5kIHEgcHJpbWUgaW5mb3JtYXRpb24uCisgICAgaWYgKGtleURhdGEudHlwZSgpID09
IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpUeXBlOjpQcml2YXRlICYmICFrZXlEYXRhLmhh
c0FkZGl0aW9uYWxQcml2YXRlS2V5UGFyYW1ldGVycygpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIC8vIEJ1dCB3ZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBjcmVhdGluZyBrZXlz
IHdpdGggYW55IGFkZGl0aW9uYWwgcHJpbWUgaW5mb3JtYXRpb24uCisgICAgaWYgKCFrZXlEYXRh
Lm90aGVyUHJpbWVJbmZvcygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAvLyBWYWxpZGF0ZSB0aGUga2V5IGRhdGEuCisgICAgeworICAgICAgICBib29sIHZhbGlk
ID0gdHJ1ZTsKKworICAgICAgICAvLyBGb3IgYm90aCBwdWJsaWMgYW5kIHByaXZhdGUga2V5cywg
d2UgbmVlZCB0aGUgcHVibGljIG1vZHVsdXMgYW5kIGV4cG9uZW50LgorICAgICAgICB2YWxpZCAm
PSAha2V5RGF0YS5tb2R1bHVzKCkuaXNFbXB0eSgpICYmICFrZXlEYXRhLmV4cG9uZW50KCkuaXNF
bXB0eSgpOworCisgICAgICAgIC8vIEZvciBwcml2YXRlIGtleXMsIHdlIHJlcXVpcmUgdGhlIHBy
aXZhdGUgZXhwb25lbnQsIGFzIHdlbGwgYXMgcCBhbmQgcSBwcmltZSBpbmZvcm1hdGlvbi4KKyAg
ICAgICAgaWYgKGtleURhdGEudHlwZSgpID09IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpU
eXBlOjpQcml2YXRlKQorICAgICAgICAgICAgdmFsaWQgJj0gIWtleURhdGEucHJpdmF0ZUV4cG9u
ZW50KCkuaXNFbXB0eSgpICYmICFrZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCkucHJpbWVGYWN0b3Iu
aXNFbXB0eSgpICYmICFrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLnByaW1lRmFjdG9yLmlzRW1w
dHkoKTsKKworICAgICAgICBpZiAoIXZhbGlkKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgQ3J5cHRvS2V5VHlwZSBrZXlUeXBlOworICAgIHN3aXRjaCAoa2V5RGF0
YS50eXBlKCkpIHsKKyAgICBjYXNlIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpUeXBlOjpQ
dWJsaWM6CisgICAgICAgIGtleVR5cGUgPSBDcnlwdG9LZXlUeXBlOjpQdWJsaWM7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlR5cGU6OlByaXZh
dGU6CisgICAgICAgIGtleVR5cGUgPSBDcnlwdG9LZXlUeXBlOjpQcml2YXRlOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3QgdGhlIGtleSBzLWV4cHJlc3Npb24sIHVz
aW5nIHRoZSBkYXRhIHRoYXQncyBhdmFpbGFibGUuCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxn
Y3J5X3NleHBfdD4ga2V5U2V4cDsKKyAgICB7CisgICAgICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9
IEdQR19FUlJfTk9fRVJST1I7CisKKyAgICAgICAgc3dpdGNoIChrZXlUeXBlKSB7CisgICAgICAg
IGNhc2UgQ3J5cHRvS2V5VHlwZTo6UHVibGljOgorICAgICAgICAgICAgZXJyb3IgPSBnY3J5X3Nl
eHBfYnVpbGQoJmtleVNleHAsIG51bGxwdHIsICIocHVibGljLWtleShyc2EobiAlYikoZSAlYikp
KSIsCisgICAgICAgICAgICAgICAga2V5RGF0YS5tb2R1bHVzKCkuc2l6ZSgpLCBrZXlEYXRhLm1v
ZHVsdXMoKS5kYXRhKCksCisgICAgICAgICAgICAgICAga2V5RGF0YS5leHBvbmVudCgpLnNpemUo
KSwga2V5RGF0YS5leHBvbmVudCgpLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDcnlwdG9LZXlUeXBlOjpQcml2YXRlOgorICAgICAgICAgICAgaWYgKGtleURhdGEu
aGFzQWRkaXRpb25hbFByaXZhdGVLZXlQYXJhbWV0ZXJzKCkpIHsKKyAgICAgICAgICAgICAgICBl
cnJvciA9IGdjcnlfc2V4cF9idWlsZCgma2V5U2V4cCwgbnVsbHB0ciwgIihwcml2YXRlLWtleShy
c2EobiAlYikoZSAlYikoZCAlYikocCAlYikocSAlYikpKSIsCisgICAgICAgICAgICAgICAgICAg
IGtleURhdGEubW9kdWx1cygpLnNpemUoKSwga2V5RGF0YS5tb2R1bHVzKCkuZGF0YSgpLAorICAg
ICAgICAgICAgICAgICAgICBrZXlEYXRhLmV4cG9uZW50KCkuc2l6ZSgpLCBrZXlEYXRhLmV4cG9u
ZW50KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICBrZXlEYXRhLnByaXZhdGVFeHBvbmVu
dCgpLnNpemUoKSwga2V5RGF0YS5wcml2YXRlRXhwb25lbnQoKS5kYXRhKCksCisgICAgICAgICAg
ICAgICAgICAgIGtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkucHJpbWVGYWN0b3Iuc2l6ZSgpLCBr
ZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLnByaW1lRmFjdG9yLmRhdGEoKSwKKyAgICAgICAgICAg
ICAgICAgICAga2V5RGF0YS5maXJzdFByaW1lSW5mbygpLnByaW1lRmFjdG9yLnNpemUoKSwga2V5
RGF0YS5maXJzdFByaW1lSW5mbygpLnByaW1lRmFjdG9yLmRhdGEoKSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVycm9yID0gZ2NyeV9zZXhw
X2J1aWxkKCZrZXlTZXhwLCBudWxscHRyLCAiKHByaXZhdGUta2V5KHJzYShuICViKShlICViKShk
ICViKSkpIiwKKyAgICAgICAgICAgICAgICBrZXlEYXRhLm1vZHVsdXMoKS5zaXplKCksIGtleURh
dGEubW9kdWx1cygpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICBrZXlEYXRhLmV4cG9uZW50KCku
c2l6ZSgpLCBrZXlEYXRhLmV4cG9uZW50KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgIGtleURh
dGEucHJpdmF0ZUV4cG9uZW50KCkuc2l6ZSgpLCBrZXlEYXRhLnByaXZhdGVFeHBvbmVudCgpLmRh
dGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcnlwdG9LZXlUeXBlOjpT
ZWNyZXQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Cisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gsIGhhc0hhc2gsIGtl
eVR5cGUsIGtleVNleHAucmVsZWFzZSgpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CiB9CiAKIENy
eXB0b0tleVJTQTo6Q3J5cHRvS2V5UlNBKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hhc2gsIENyeXB0
b0tleVR5cGUgdHlwZSwgUGxhdGZvcm1SU0FLZXkgcGxhdGZvcm1LZXksIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlKQpAQCAtNzcsOCArMTk5LDcgQEAgYm9vbCBD
cnlwdG9LZXlSU0E6OmlzUmVzdHJpY3RlZFRvSGFzaChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
JiBpZGVudGlmaWVyKSBjb24KIAogc2l6ZV90IENyeXB0b0tleVJTQTo6a2V5U2l6ZUluQml0cygp
IGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gZ2V0UlNBTW9kdWx1c0xlbmd0aChtX3BsYXRmb3JtS2V5KTsKIH0KIAogLy8gQ29udmVydCB0
aGUgZXhwb25lbnQgdmVjdG9yIHRvIGEgMzItYml0IHZhbHVlLCBpZiBwb3NzaWJsZS4KQEAgLTE3
NywxNyArMjk4LDc1IEBAIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvS2V5UlNB
OjpleHBvcnRQa2NzOCgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+IENy
eXB0b0tleVJTQTo6YnVpbGRBbGdvcml0aG0oKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHB1YmxpY0V4cG9uZW50OwotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJzYUtleUFsZ29yaXRobT4oZW1wdHlTdHJpbmcoKSwgMCwgV1RGTW92ZShw
dWJsaWNFeHBvbmVudCkpOworICAgIFN0cmluZyBuYW1lID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnk6OnNpbmdsZXRvbigpLm5hbWUoYWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBzaXplX3Qg
bW9kdWx1c0xlbmd0aCA9IGdldFJTQU1vZHVsdXNMZW5ndGgobV9wbGF0Zm9ybUtleSk7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHB1YmxpY0V4cG9uZW50ID0gZ2V0UlNBS2V5UGFyYW1ldGVyKG1fcGxh
dGZvcm1LZXksICJlIik7CisKKyAgICBpZiAobV9yZXN0cmljdGVkVG9TcGVjaWZpY0hhc2gpCisg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJzYUhhc2hlZEtleUFsZ29yaXRobT4obmFt
ZSwgbW9kdWx1c0xlbmd0aCwgV1RGTW92ZShwdWJsaWNFeHBvbmVudCksIENyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKG1faGFzaCkpOworICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJzYUtleUFsZ29yaXRobT4obmFtZSwgbW9kdWx1c0xlbmd0aCwgV1RGTW92ZShw
dWJsaWNFeHBvbmVudCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gQ3J5
cHRvS2V5UlNBOjpleHBvcnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZXh0cmFjdGFibGUo
KSk7CiAKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIHN3
aXRjaCAodHlwZSgpKSB7CisgICAgY2FzZSBDcnlwdG9LZXlUeXBlOjpQdWJsaWM6CisgICAgICAg
IHJldHVybiBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Y3JlYXRlUHVibGljKGdldFJTQUtl
eVBhcmFtZXRlcihtX3BsYXRmb3JtS2V5LCAibiIpLCBnZXRSU0FLZXlQYXJhbWV0ZXIobV9wbGF0
Zm9ybUtleSwgImUiKSk7CisgICAgY2FzZSBDcnlwdG9LZXlUeXBlOjpQcml2YXRlOiB7CisgICAg
ICAgIGF1dG8gcGFyYW1ldGVyTVBJID0KKyAgICAgICAgICAgIFtdKGdjcnlfc2V4cF90IHNleHAs
IGNvbnN0IGNoYXIqIG5hbWUpIC0+IGdjcnlfbXBpX3QgeworICAgICAgICAgICAgICAgIFBBTDo6
R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHBhcmFtU2V4cChnY3J5X3NleHBfZmluZF90b2tl
bihzZXhwLCBuYW1lLCAwKSk7CisgICAgICAgICAgICAgICAgaWYgKCFwYXJhbVNleHApCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIHJldHVybiBn
Y3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElfRk1UX1VTRyk7CisgICAgICAg
ICAgICB9OworCisgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4gZE1QSShw
YXJhbWV0ZXJNUEkobV9wbGF0Zm9ybUtleSwgImQiKSk7CisgICAgICAgIC8vIGxpYmdjcnlwdCBp
bnRlcm5hbGx5IHVzZXMgcCBhbmQgcSBzdWNoIHRoYXQgcCA8IHEsIHdoaWxlIHVzdWFsbHkgaXQn
cyBxIDwgcC4KKyAgICAgICAgLy8gU3dpdGNoIHRoZSB0d28gcHJpbWVzIGhlcmUgYW5kIGNvbnRp
bnVlIHdpdGggYXNzdW1pbmcgdGhlIGxhdHRlci4KKyAgICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRs
ZTxnY3J5X21waV90PiBwTVBJKHBhcmFtZXRlck1QSShtX3BsYXRmb3JtS2V5LCAicSIpKTsKKyAg
ICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBxTVBJKHBhcmFtZXRlck1QSSht
X3BsYXRmb3JtS2V5LCAicCIpKTsKKyAgICAgICAgaWYgKCFkTVBJIHx8ICFwTVBJIHx8ICFxTVBJ
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgQ3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHM6OlByaW1lSW5mbyBmaXJzdFByaW1lSW5mbyB7IGdldFBhcmFtZXRlck1QSURh
dGEocE1QSSksIHsgfSwgeyB9IH07CisgICAgICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRz
OjpQcmltZUluZm8gc2Vjb25kUHJpbWVJbmZvIHsgZ2V0UGFyYW1ldGVyTVBJRGF0YShxTVBJKSwg
eyB9LCB7IH0gfTsKKworICAgICAgICAvLyBkcCAtLSBkIG1vZCAocCAtIDEpCisgICAgICAgIHsK
KyAgICAgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4gZHBNUEkoZ2NyeV9t
cGlfbmV3KDApKTsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4g
cG0xTVBJKGdjcnlfbXBpX3NldChudWxscHRyLCBwTVBJKSk7CisgICAgICAgICAgICBnY3J5X21w
aV9zdWJfdWkocG0xTVBJLCBwbTFNUEksIDEpOworICAgICAgICAgICAgZ2NyeV9tcGlfbW9kKGRw
TVBJLCBkTVBJLCBwbTFNUEkpOworICAgICAgICAgICAgZmlyc3RQcmltZUluZm8uZmFjdG9yQ1JU
RXhwb25lbnQgPSBnZXRQYXJhbWV0ZXJNUElEYXRhKGRwTVBJKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIGRxIC0tIGQgbW9kIChxIC0gMSkKKyAgICAgICAgeworICAgICAgICAgICAgUEFMOjpH
Q3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBkcU1QSShnY3J5X21waV9uZXcoMCkpOworICAgICAg
ICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBxbTFNUEkoZ2NyeV9tcGlfc2V0
KG51bGxwdHIsIHFNUEkpKTsKKyAgICAgICAgICAgIGdjcnlfbXBpX3N1Yl91aShxbTFNUEksIHFt
MU1QSSwgMSk7CisgICAgICAgICAgICBnY3J5X21waV9tb2QoZHFNUEksIGRNUEksIHFtMU1QSSk7
CisgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBnZXRQYXJh
bWV0ZXJNUElEYXRhKGRxTVBJKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHFpIC0tIHFeKC0x
KSBtb2QgcAorICAgICAgICB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlf
bXBpX3Q+IHFpTVBJKGdjcnlfbXBpX25ldygwKSk7CisgICAgICAgICAgICBnY3J5X21waV9pbnZt
KHFpTVBJLCBxTVBJLCBwTVBJKTsKKyAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JD
UlRDb2VmZmljaWVudCA9IGdldFBhcmFtZXRlck1QSURhdGEocWlNUEkpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRl
V2l0aEFkZGl0aW9uYWxEYXRhKGdldFJTQUtleVBhcmFtZXRlcihtX3BsYXRmb3JtS2V5LCAibiIp
LAorICAgICAgICAgICAgZ2V0UlNBS2V5UGFyYW1ldGVyKG1fcGxhdGZvcm1LZXksICJlIiksIGdl
dFBhcmFtZXRlck1QSURhdGEoZE1QSSksCisgICAgICAgICAgICBXVEZNb3ZlKGZpcnN0UHJpbWVJ
bmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCBWZWN0b3I8Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM6OlByaW1lSW5mbz4geyB9KTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308219</attachid>
            <date>2017-04-25 22:54:27 -0700</date>
            <delta_ts>2017-04-25 22:54:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171213-20170426075425.patch</filename>
            <type>text/plain</type>
            <size>13025</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU3N2UwYWQxZmQxMDM0
Zjg4MjU3MDc4ZGZiMzZlNjA5YzI4OTc1Mi4uMzBmOGJhOTlmOTIwNGY1MzdmMDg5MmMwODBmYzE5
NDBlNThiMjA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE3LTA0LTI1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBDcnlw
dG9LZXlSU0E6IGltcGxlbWVudCBjcmVhdGUoKSwga2V5U2l6ZUluQml0cygpLCBidWlsZEFsZ29y
aXRobSgpLCBleHBvcnREYXRhKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTIxMworCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgQ2F0YW56
YXJvLgorCisgICAgICAgIENyeXB0b0tleVJTQTo6Y3JlYXRlKCkgdmFsaWRhdGVzIHRoZSBzcGVj
aWZpZWQga2V5IHR5cGUgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgcHJvdmlkZWQgZGF0YS4gSWYg
ZXZlcnl0aGluZyBpcyBPSywgaXQgdGhlbiBwcm9jZWVkcyB0byBidWlsZCB0aGUga2V5CisgICAg
ICAgIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlIHRocm91Z2ggYW4gcy1leHByZXNzaW9uIHRoYXQg
aXMgY29uc3RydWN0ZWQgd2l0aAorICAgICAgICB0aGUgbmVjZXNzYXJ5IGRhdGEuIFdlIGRvbid0
IGN1cnJlbnRseSBzdXBwb3J0IGNyZWF0aW5nIHByaXZhdGUga2V5cworICAgICAgICB3aXRoIGFu
eSBhZGRpdGlvbmFsIHByaW1lIGluZm9ybWF0aW9uIChhcGFydCBmcm9tIHAgYW5kIHEpLgorCisg
ICAgICAgIENyeXB0b0tleVJTQTo6a2V5U2l6ZUluQml0cygpIGNhbGxzIHRoZSBoZWxwZXIgZ2V0
UlNBTW9kdWx1c0xlbmd0aCgpCisgICAgICAgIGZ1bmN0aW9uIHRoYXQgZmluZCB0aGUgbW9kdWx1
cyBNUEkgaW4gdGhlIGtleSBzLWV4cHJlc3Npb24gYW5kIHJldHVybnMKKyAgICAgICAgdGhlIG1v
ZHVsdXMgZGF0YSBsZW5ndGggaW4gYml0cy4KKworICAgICAgICBDcnlwdG9LZXlSU0E6OmJ1aWxk
QWxnb3JpdGhtKCkgcmV0dXJucyBLZXlBbGdvcml0aG0gdGhhdCdzIGNvbnN0cnVjdGVkCisgICAg
ICAgIGZyb20gdGhlIGFwcHJvcHJpYXRlIG5hbWUsIHRoaXMga2V5J3MgbW9kdWx1cyBsZW5ndGgs
IGFuZCB0aGlzIGtleSdzCisgICAgICAgIHB1YmxpYyBleHBvbmVudCBkYXRhLiBJdCBhbHNvIHNw
ZWNpZmllcyB0aGUgaGFzaCBpZiB0aGVyZSBpcyBzdWNoIGEKKyAgICAgICAgcmVzdHJpY3Rpb24g
Zm9yIHRoaXMga2V5LgorCisgICAgICAgIENyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSgpIHJldHVy
bnMgYSBwcm9wZXJseS1jb25zdHJ1Y3RlZAorICAgICAgICBDcnlwdG9LZXlEYXRhUlNBQ29tcG9u
ZW50cyBvYmplY3QuIFRoZSBwdWJsaWMgbW9kdWx1cyBhbmQgZXhwb25lbnQgYXJlCisgICAgICAg
IHVzZWQgaW4gY2FzZSB0aGUga2V5IGlzIHB1YmxpYy4gSWYgdGhlIGtleSBpcyBwcml2YXRlLCB0
aGUgc2VjcmV0CisgICAgICAgIGV4cG9uZW50IGFuZCB0aGUgcCBhbmQgcSBwcmltZSBudW1iZXJz
IGFyZSByZXRyaWV2ZWQgaW4gTVBJIGZvcm1hdC4KKyAgICAgICAgVGhleSdyZSB0aGVuIHVzZWQg
dG8gY2FsY3VsYXRlIHRoZSBkcCwgZHEgYW5kIHFpIHBhcmFtZXRlcnMgdGhhdCBhcmUKKyAgICAg
ICAgZXhwb3J0ZWQgaW4gdGhlIEpXSyBmb3JtYXQuIE5vdGUgdGhhdCBsaWJnY3J5cHQgaW50ZXJu
YWxseSBzd2l0Y2hlcworICAgICAgICB0aGUgcCBhbmQgcSBwcmltZSBudW1iZXJzIHN1Y2ggdGhh
dCBwIDwgcSwgYnV0IHRoZSBXZWIgQ3J5cHRvCisgICAgICAgIHNwZWNpZmljYXRpb24gYW5kIHRo
ZSBkZXBlbmRhbnQgUkZDcyBleHBlY3QgdGhhdCBxIDwgcC4gV2UgYWRkcmVzcworICAgICAgICB0
aGlzIGJ5IHNpbXBseSBzd2l0Y2hpbmcgdGhlIHJvbGVzIG9mIHRoZSB0d28gcHJpbWVzIGFuZCBm
b2xsb3cgdGhlCisgICAgICAgIHVzdWFsIHEgPCBwIGFzc3VtcHRpb24gd2hlbiBleHBvcnRpbmcg
dGhlIHByaW1lcyBhbmQgY29tcHV0aW5nIHRoZQorICAgICAgICBkZXBlbmRhbnQgZXhwb25lbnRz
IGFuZCBjb2VmZmljaWVudHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0tIGV4aXN0aW5nIG9u
ZXMgY292ZXIgdGhpcyBidXQgZG9uJ3Qgd29yayB5ZXQgZHVlIHRvIG1pc3NpbmcKKyAgICAgICAg
UlNBLXJlbGF0ZWQgQ3J5cHRvQWxnb3JpdGhtIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAq
IGNyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdldFJTQU1vZHVsdXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UGFyYW1ldGVyTVBJ
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRSU0FLZXlQYXJhbWV0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
S2V5UlNBOjprZXlTaXplSW5CaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6
YnVpbGRBbGdvcml0aG0pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpleHBvcnRE
YXRhKToKKwogMjAxNy0wNC0yNSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtXZWJDcnlwdG9dIEVuaGFuY2Ugd2F5cyB0byBjb252ZXJ0IGFuIEVDRFNBIHNp
Z25hdHVyZSBiaW5hcnkgaW50byBERVIgZm9ybWF0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKaW5kZXggMDdlYjMxODhhOTgwZDUy
YzFhNmRjMTA1MWY2YWNjMDRmMmVhMjI5ZC4uMjQ3ODBlNmNjZmRiYWQ1YzQ0MjI2NGQzZDk0MjZh
ODNiZDgwZTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9LZXlSU0FHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvS2V5UlNBR0NyeXB0LmNwcApAQCAtMzksMTcgKzM5LDEzOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBoYXNoLCBib29sIGhhc0hhc2gsIGNvbnN0IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzJiBr
ZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZSkKKy8v
IFJldHJpZXZlIHNpemUgb2YgdGhlIHB1YmxpYyBtb2R1bHVzIE4gb2YgdGhlIGdpdmVuIFJTQSBr
ZXksIGluIGJpdHMuCitzdGF0aWMgc2l6ZV90IGdldFJTQU1vZHVsdXNMZW5ndGgoZ2NyeV9zZXhw
X3Qgc2V4cCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIFVOVVNFRF9QQVJBTShpZGVu
dGlmaWVyKTsKLSAgICBVTlVTRURfUEFSQU0oaGFzaCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhhc0hh
c2gpOwotICAgIFVOVVNFRF9QQVJBTShrZXlEYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oZXh0cmFj
dGFibGUpOwotICAgIFVOVVNFRF9QQVJBTSh1c2FnZSk7CisgICAgLy8gVGhlIHMtZXhwcmVzc2lv
biBpcyBvZiByb3VnaGx5IHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAvLyAocHJpdmF0ZS1rZXl8
cHVibGljLWtleQorICAgIC8vICAgKHJzYQorICAgIC8vICAgICAobiBuLW1waSkKKyAgICAvLyAg
ICAgKGUgZS1tcGkpCisgICAgLy8gICAgIC4uLikpCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxn
Y3J5X3NleHBfdD4gblNleHAoZ2NyeV9zZXhwX2ZpbmRfdG9rZW4oc2V4cCwgIm4iLCAwKSk7Cisg
ICAgaWYgKCFuU2V4cCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBQQUw6OkdDcnlwdDo6SGFu
ZGxlPGdjcnlfbXBpX3Q+IG5NUEkoZ2NyeV9zZXhwX250aF9tcGkoblNleHAsIDEsIEdDUllNUElf
Rk1UX1VTRykpOworICAgIGlmICghbk1QSSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzaXpl
X3QgZGF0YUxlbmd0aCA9IDA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9tcGlfcHJp
bnQoR0NSWU1QSV9GTVRfVVNHLCBudWxscHRyLCAwLCAmZGF0YUxlbmd0aCwgbk1QSSk7CisgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6Omxv
Z0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCi0gICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIGRhdGFMZW5ndGggKiA4OworfQorCitzdGF0aWMgVmVjdG9yPHVp
bnQ4X3Q+IGdldFBhcmFtZXRlck1QSURhdGEoZ2NyeV9tcGlfdCBwYXJhbU1QSSkKK3sKKyAgICBz
aXplX3QgZGF0YUxlbmd0aCA9IDA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9tcGlf
cHJpbnQoR0NSWU1QSV9GTVRfVVNHLCBudWxscHRyLCAwLCAmZGF0YUxlbmd0aCwgcGFyYW1NUEkp
OworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgIFBBTDo6R0Ny
eXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHBhcmFtZXRlcihkYXRhTGVuZ3RoKTsKKyAgICBlcnJvciA9IGdjcnlf
bXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywgcGFyYW1ldGVyLmRhdGEoKSwgcGFyYW1ldGVyLnNp
emUoKSwgbnVsbHB0ciwgcGFyYW1NUEkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VS
Uk9SKSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQorCisgICAgcmV0dXJuIHBhcmFtZXRlcjsKK30KKworc3RhdGljIFZl
Y3Rvcjx1aW50OF90PiBnZXRSU0FLZXlQYXJhbWV0ZXIoZ2NyeV9zZXhwX3Qgc2V4cCwgY29uc3Qg
Y2hhciogbmFtZSkKK3sKKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBwYXJh
bVNleHAoZ2NyeV9zZXhwX2ZpbmRfdG9rZW4oc2V4cCwgbmFtZSwgMCkpOworICAgIGlmICghcGFy
YW1TZXhwKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxn
Y3J5X21waV90PiBwYXJhbU1QSShnY3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllN
UElfRk1UX1VTRykpOworICAgIGlmICghcGFyYW1NUEkpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICByZXR1cm4gZ2V0UGFyYW1ldGVyTVBJRGF0YShwYXJhbU1QSSk7Cit9CisKK1JlZlB0cjxD
cnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hh
c2gsIGNvbnN0IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzJiBrZXlEYXRhLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCit7CisgICAgLy8gV2hlbiBjcmVh
dGluZyBhIHByaXZhdGUga2V5LCB3ZSByZXF1aXJlIHRoZSBwIGFuZCBxIHByaW1lIGluZm9ybWF0
aW9uLgorICAgIGlmIChrZXlEYXRhLnR5cGUoKSA9PSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50
czo6VHlwZTo6UHJpdmF0ZSAmJiAha2V5RGF0YS5oYXNBZGRpdGlvbmFsUHJpdmF0ZUtleVBhcmFt
ZXRlcnMoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBCdXQgd2UgZG9uJ3Qg
Y3VycmVudGx5IHN1cHBvcnQgY3JlYXRpbmcga2V5cyB3aXRoIGFueSBhZGRpdGlvbmFsIHByaW1l
IGluZm9ybWF0aW9uLgorICAgIGlmICgha2V5RGF0YS5vdGhlclByaW1lSW5mb3MoKS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gVmFsaWRhdGUgdGhlIGtleSBk
YXRhLgorICAgIHsKKyAgICAgICAgYm9vbCB2YWxpZCA9IHRydWU7CisKKyAgICAgICAgLy8gRm9y
IGJvdGggcHVibGljIGFuZCBwcml2YXRlIGtleXMsIHdlIG5lZWQgdGhlIHB1YmxpYyBtb2R1bHVz
IGFuZCBleHBvbmVudC4KKyAgICAgICAgdmFsaWQgJj0gIWtleURhdGEubW9kdWx1cygpLmlzRW1w
dHkoKSAmJiAha2V5RGF0YS5leHBvbmVudCgpLmlzRW1wdHkoKTsKKworICAgICAgICAvLyBGb3Ig
cHJpdmF0ZSBrZXlzLCB3ZSByZXF1aXJlIHRoZSBwcml2YXRlIGV4cG9uZW50LCBhcyB3ZWxsIGFz
IHAgYW5kIHEgcHJpbWUgaW5mb3JtYXRpb24uCisgICAgICAgIGlmIChrZXlEYXRhLnR5cGUoKSA9
PSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6VHlwZTo6UHJpdmF0ZSkKKyAgICAgICAgICAg
IHZhbGlkICY9ICFrZXlEYXRhLnByaXZhdGVFeHBvbmVudCgpLmlzRW1wdHkoKSAmJiAha2V5RGF0
YS5maXJzdFByaW1lSW5mbygpLnByaW1lRmFjdG9yLmlzRW1wdHkoKSAmJiAha2V5RGF0YS5zZWNv
bmRQcmltZUluZm8oKS5wcmltZUZhY3Rvci5pc0VtcHR5KCk7CisKKyAgICAgICAgaWYgKCF2YWxp
ZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIENyeXB0b0tleVR5
cGUga2V5VHlwZTsKKyAgICBzd2l0Y2ggKGtleURhdGEudHlwZSgpKSB7CisgICAgY2FzZSBDcnlw
dG9LZXlEYXRhUlNBQ29tcG9uZW50czo6VHlwZTo6UHVibGljOgorICAgICAgICBrZXlUeXBlID0g
Q3J5cHRvS2V5VHlwZTo6UHVibGljOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0tl
eURhdGFSU0FDb21wb25lbnRzOjpUeXBlOjpQcml2YXRlOgorICAgICAgICBrZXlUeXBlID0gQ3J5
cHRvS2V5VHlwZTo6UHJpdmF0ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gQ29u
c3RydWN0IHRoZSBrZXkgcy1leHByZXNzaW9uLCB1c2luZyB0aGUgZGF0YSB0aGF0J3MgYXZhaWxh
YmxlLgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGtleVNleHA7CisgICAg
eworICAgICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBHUEdfRVJSX05PX0VSUk9SOworCisgICAg
ICAgIHN3aXRjaCAoa2V5VHlwZSkgeworICAgICAgICBjYXNlIENyeXB0b0tleVR5cGU6OlB1Ymxp
YzoKKyAgICAgICAgICAgIGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZrZXlTZXhwLCBudWxscHRy
LCAiKHB1YmxpYy1rZXkocnNhKG4gJWIpKGUgJWIpKSkiLAorICAgICAgICAgICAgICAgIGtleURh
dGEubW9kdWx1cygpLnNpemUoKSwga2V5RGF0YS5tb2R1bHVzKCkuZGF0YSgpLAorICAgICAgICAg
ICAgICAgIGtleURhdGEuZXhwb25lbnQoKS5zaXplKCksIGtleURhdGEuZXhwb25lbnQoKS5kYXRh
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3J5cHRvS2V5VHlwZTo6UHJp
dmF0ZToKKyAgICAgICAgICAgIGlmIChrZXlEYXRhLmhhc0FkZGl0aW9uYWxQcml2YXRlS2V5UGFy
YW1ldGVycygpKSB7CisgICAgICAgICAgICAgICAgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJmtl
eVNleHAsIG51bGxwdHIsICIocHJpdmF0ZS1rZXkocnNhKG4gJWIpKGUgJWIpKGQgJWIpKHAgJWIp
KHEgJWIpKSkiLAorICAgICAgICAgICAgICAgICAgICBrZXlEYXRhLm1vZHVsdXMoKS5zaXplKCks
IGtleURhdGEubW9kdWx1cygpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAga2V5RGF0YS5l
eHBvbmVudCgpLnNpemUoKSwga2V5RGF0YS5leHBvbmVudCgpLmRhdGEoKSwKKyAgICAgICAgICAg
ICAgICAgICAga2V5RGF0YS5wcml2YXRlRXhwb25lbnQoKS5zaXplKCksIGtleURhdGEucHJpdmF0
ZUV4cG9uZW50KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICBrZXlEYXRhLnNlY29uZFBy
aW1lSW5mbygpLnByaW1lRmFjdG9yLnNpemUoKSwga2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5w
cmltZUZhY3Rvci5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgIGtleURhdGEuZmlyc3RQcmlt
ZUluZm8oKS5wcmltZUZhY3Rvci5zaXplKCksIGtleURhdGEuZmlyc3RQcmltZUluZm8oKS5wcmlt
ZUZhY3Rvci5kYXRhKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgma2V5U2V4cCwgbnVsbHB0ciwg
Iihwcml2YXRlLWtleShyc2EobiAlYikoZSAlYikoZCAlYikpKSIsCisgICAgICAgICAgICAgICAg
a2V5RGF0YS5tb2R1bHVzKCkuc2l6ZSgpLCBrZXlEYXRhLm1vZHVsdXMoKS5kYXRhKCksCisgICAg
ICAgICAgICAgICAga2V5RGF0YS5leHBvbmVudCgpLnNpemUoKSwga2V5RGF0YS5leHBvbmVudCgp
LmRhdGEoKSwKKyAgICAgICAgICAgICAgICBrZXlEYXRhLnByaXZhdGVFeHBvbmVudCgpLnNpemUo
KSwga2V5RGF0YS5wcml2YXRlRXhwb25lbnQoKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ3J5cHRvS2V5VHlwZTo6U2VjcmV0OgorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQ
QUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJT
QShpZGVudGlmaWVyLCBoYXNoLCBoYXNIYXNoLCBrZXlUeXBlLCBrZXlTZXhwLnJlbGVhc2UoKSwg
ZXh0cmFjdGFibGUsIHVzYWdlcykpOwogfQogCiBDcnlwdG9LZXlSU0E6OkNyeXB0b0tleVJTQShD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlIHR5cGUsIFBsYXRmb3JtUlNB
S2V5IHBsYXRmb3JtS2V5LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZSkKQEAgLTc3LDggKzE5OSw3IEBAIGJvb2wgQ3J5cHRvS2V5UlNBOjppc1Jlc3RyaWN0ZWRU
b0hhc2goQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciYgaWRlbnRpZmllcikgY29uCiAKIHNpemVf
dCBDcnlwdG9LZXlSU0E6OmtleVNpemVJbkJpdHMoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGdldFJTQU1vZHVsdXNMZW5ndGgobV9w
bGF0Zm9ybUtleSk7CiB9CiAKIC8vIENvbnZlcnQgdGhlIGV4cG9uZW50IHZlY3RvciB0byBhIDMy
LWJpdCB2YWx1ZSwgaWYgcG9zc2libGUuCkBAIC0xNzcsMTcgKzI5OCw3NSBAQCBFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0tleVJTQTo6ZXhwb3J0UGtjczgoKSBjb25zdAogCiBz
dGQ6OnVuaXF1ZV9wdHI8S2V5QWxnb3JpdGhtPiBDcnlwdG9LZXlSU0E6OmJ1aWxkQWxnb3JpdGht
KCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIFZlY3Rvcjx1aW50OF90PiBw
dWJsaWNFeHBvbmVudDsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSc2FLZXlBbGdvcml0
aG0+KGVtcHR5U3RyaW5nKCksIDAsIFdURk1vdmUocHVibGljRXhwb25lbnQpKTsKKyAgICBTdHJp
bmcgbmFtZSA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29y
aXRobUlkZW50aWZpZXIoKSk7CisgICAgc2l6ZV90IG1vZHVsdXNMZW5ndGggPSBnZXRSU0FNb2R1
bHVzTGVuZ3RoKG1fcGxhdGZvcm1LZXkpOworICAgIFZlY3Rvcjx1aW50OF90PiBwdWJsaWNFeHBv
bmVudCA9IGdldFJTQUtleVBhcmFtZXRlcihtX3BsYXRmb3JtS2V5LCAiZSIpOworCisgICAgaWYg
KG1fcmVzdHJpY3RlZFRvU3BlY2lmaWNIYXNoKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSc2FIYXNoZWRLZXlBbGdvcml0aG0+KG5hbWUsIG1vZHVsdXNMZW5ndGgsIFdURk1vdmUo
cHVibGljRXhwb25lbnQpLCBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFt
ZShtX2hhc2gpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSc2FLZXlBbGdvcml0aG0+
KG5hbWUsIG1vZHVsdXNMZW5ndGgsIFdURk1vdmUocHVibGljRXhwb25lbnQpKTsKIH0KIAogc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IENyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGV4dHJhY3RhYmxlKCkpOwogCi0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgIGNhc2Ug
Q3J5cHRvS2V5VHlwZTo6UHVibGljOgorICAgICAgICByZXR1cm4gQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM6OmNyZWF0ZVB1YmxpYyhnZXRSU0FLZXlQYXJhbWV0ZXIobV9wbGF0Zm9ybUtleSwg
Im4iKSwgZ2V0UlNBS2V5UGFyYW1ldGVyKG1fcGxhdGZvcm1LZXksICJlIikpOworICAgIGNhc2Ug
Q3J5cHRvS2V5VHlwZTo6UHJpdmF0ZTogeworICAgICAgICBhdXRvIHBhcmFtZXRlck1QSSA9Cisg
ICAgICAgICAgICBbXShnY3J5X3NleHBfdCBzZXhwLCBjb25zdCBjaGFyKiBuYW1lKSAtPiBnY3J5
X21waV90IHsKKyAgICAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90
PiBwYXJhbVNleHAoZ2NyeV9zZXhwX2ZpbmRfdG9rZW4oc2V4cCwgbmFtZSwgMCkpOworICAgICAg
ICAgICAgICAgIGlmICghcGFyYW1TZXhwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2NyeV9zZXhwX250aF9tcGkocGFyYW1TZXhw
LCAxLCBHQ1JZTVBJX0ZNVF9VU0cpOworICAgICAgICAgICAgfTsKKworICAgICAgICBQQUw6OkdD
cnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IGRNUEkocGFyYW1ldGVyTVBJKG1fcGxhdGZvcm1LZXks
ICJkIikpOworICAgICAgICAvLyBsaWJnY3J5cHQgaW50ZXJuYWxseSB1c2VzIHAgYW5kIHEgc3Vj
aCB0aGF0IHAgPCBxLCB3aGlsZSB1c3VhbGx5IGl0J3MgcSA8IHAuCisgICAgICAgIC8vIFN3aXRj
aCB0aGUgdHdvIHByaW1lcyBoZXJlIGFuZCBjb250aW51ZSB3aXRoIGFzc3VtaW5nIHRoZSBsYXR0
ZXIuCisgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4gcE1QSShwYXJhbWV0
ZXJNUEkobV9wbGF0Zm9ybUtleSwgInEiKSk7CisgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8
Z2NyeV9tcGlfdD4gcU1QSShwYXJhbWV0ZXJNUEkobV9wbGF0Zm9ybUtleSwgInAiKSk7CisgICAg
ICAgIGlmICghZE1QSSB8fCAhcE1QSSB8fCAhcU1QSSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmltZUluZm8gZmly
c3RQcmltZUluZm8geyBnZXRQYXJhbWV0ZXJNUElEYXRhKHBNUEkpLCB7IH0sIHsgfSB9OworICAg
ICAgICBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6UHJpbWVJbmZvIHNlY29uZFByaW1lSW5m
byB7IGdldFBhcmFtZXRlck1QSURhdGEocU1QSSksIHsgfSwgeyB9IH07CisKKyAgICAgICAgLy8g
ZHAgLS0gZCBtb2QgKHAgLSAxKQorICAgICAgICB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6
SGFuZGxlPGdjcnlfbXBpX3Q+IGRwTVBJKGdjcnlfbXBpX25ldygwKSk7CisgICAgICAgICAgICBQ
QUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHBtMU1QSShnY3J5X21waV9uZXcoMCkpOwor
ICAgICAgICAgICAgZ2NyeV9tcGlfc3ViX3VpKHBtMU1QSSwgcE1QSSwgMSk7CisgICAgICAgICAg
ICBnY3J5X21waV9tb2QoZHBNUEksIGRNUEksIHBtMU1QSSk7CisgICAgICAgICAgICBmaXJzdFBy
aW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGdldFBhcmFtZXRlck1QSURhdGEoZHBNUEkpOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gZHEgLS0gZCBtb2QgKHEgLSAxKQorICAgICAgICB7Cisg
ICAgICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IGRxTVBJKGdjcnlfbXBp
X25ldygwKSk7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHFt
MU1QSShnY3J5X21waV9uZXcoMCkpOworICAgICAgICAgICAgZ2NyeV9tcGlfc3ViX3VpKHFtMU1Q
SSwgcU1QSSwgMSk7CisgICAgICAgICAgICBnY3J5X21waV9tb2QoZHFNUEksIGRNUEksIHFtMU1Q
SSk7CisgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBnZXRQ
YXJhbWV0ZXJNUElEYXRhKGRxTVBJKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHFpIC0tIHFe
KC0xKSBtb2QgcAorICAgICAgICB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdj
cnlfbXBpX3Q+IHFpTVBJKGdjcnlfbXBpX25ldygwKSk7CisgICAgICAgICAgICBnY3J5X21waV9p
bnZtKHFpTVBJLCBxTVBJLCBwTVBJKTsKKyAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0
b3JDUlRDb2VmZmljaWVudCA9IGdldFBhcmFtZXRlck1QSURhdGEocWlNUEkpOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2
YXRlV2l0aEFkZGl0aW9uYWxEYXRhKGdldFJTQUtleVBhcmFtZXRlcihtX3BsYXRmb3JtS2V5LCAi
biIpLAorICAgICAgICAgICAgZ2V0UlNBS2V5UGFyYW1ldGVyKG1fcGxhdGZvcm1LZXksICJlIiks
IGdldFBhcmFtZXRlck1QSURhdGEoZE1QSSksCisgICAgICAgICAgICBXVEZNb3ZlKGZpcnN0UHJp
bWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCBWZWN0b3I8Q3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHM6OlByaW1lSW5mbz4geyB9KTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>