[guile-gcrypt] Symmetric Ciphers Module
Saad Rhoulam <[email protected]> Fri, 10 Apr 2026 22:38:11 +0800
| Newsgroups | gmane.comp.encryption.gpg.libgcrypt.devel |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------0qiPjf1CZJfDkxEpGYjL60Au Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello everyone, While hoping to make something in Guile that needed symmetric encryption, it fell to me to extend guile-gcrypt. Unfortunately, because of how some procedures like `gcrypt_cipher_gettag` are implemented, the Guile FFI reports that they don't exist! This blocks AEAD, which is what I needed, so it's back to the drawing board for me. But, short of AEAD, some amount of symmetric cryptographic functionality is accessible from Guile, hence the attached patch. I've left the AEAD-related code commented out in the module in case anyone is interested in this challenge. Regards, S. Rhoulam --------------0qiPjf1CZJfDkxEpGYjL60Au Content-Type: text/x-patch; charset=UTF-8; name="cipher.patch" Content-Disposition: attachment; filename="cipher.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djcnlwdC9jaXBoZXIuc2NtIGIvZ2NyeXB0L2NpcGhlci5zY20KbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZmMjhjOAotLS0gL2Rldi9udWxs CisrKyBiL2djcnlwdC9jaXBoZXIuc2NtCkBAIC0wLDAgKzEsNDI1IEBACis7OzsgZ3VpbGUt Z2NyeXB0IC0tLSBjcnlwdG8gdG9vbGluZyBmb3IgZ3VpbGUKKzs7OyBDb3B5cmlnaHQgwqkg MjAyNiBTYWFkIFJob3VsYW0gPHNhYWRAcmhvdWxhbS50ZWNoPgorOzs7Cis7OzsgVGhpcyBm aWxlIGlzIHBhcnQgb2YgZ3VpbGUtZ2NyeXB0LgorOzs7Cis7OzsgZ3VpbGUtZ2NyeXB0IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorOzs7IG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorOzs7IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mCis7OzsgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7OzsKKzs7OyBndWlsZS1nY3J5cHQg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0 Cis7OzsgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorOzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCis7OzsgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7OworOzs7IFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorOzs7IGFsb25nIHdpdGggZ3VpbGUtZ2NyeXB0LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisoZGVmaW5lLW1vZHVsZSAoZ2NyeXB0IGNpcGhl cikKKyAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKKyAgIzp1c2UtbW9kdWxlIChnY3J5 cHQgaW50ZXJuYWwpCisgICM6dXNlLW1vZHVsZSAoZ2NyeXB0IHJhbmRvbSkKKyAgIzp1c2Ut bW9kdWxlIChybnJzIGJ5dGV2ZWN0b3JzKQorICAjOnVzZS1tb2R1bGUgKHN5c3RlbSBmb3Jl aWduKQorICAjOmV4cG9ydCAoY2lwaGVyLWFsZ29yaXRobQorICAgICAgICAgICAgbG9va3Vw LWNpcGhlci1hbGdvcml0aG0KKyAgICAgICAgICAgIGNpcGhlci1hbGdvcml0aG0tbmFtZQor ICAgICAgICAgICAgY2lwaGVyLWtleS1zaXplCisKKyAgICAgICAgICAgIGNpcGhlci1tb2Rl CisgICAgICAgICAgICBsb29rdXAtY2lwaGVyLW1vZGUKKyAgICAgICAgICAgIGNpcGhlci1t b2RlLW5hbWUKKworICAgICAgICAgICAgZGVjcnlwdAorICAgICAgICAgICAgOzsgZGVjcnlw dC1hZWFkCisgICAgICAgICAgICBlbmNyeXB0CisgICAgICAgICAgICA7OyBlbmNyeXB0LWFl YWQKKyAgICAgICAgICAgICkKKyAgKQorCisoZGVmaW5lLXN5bnRheC1ydWxlIChkZWZpbmUt c3ludGF4LXB1YmxpYyBuYW1lIHZhbHVlKQorICAoYmVnaW4KKyAgICAoZGVmaW5lLXN5bnRh eCBuYW1lIHZhbHVlKQorICAgIChleHBvcnQgbmFtZSkpKQorCisoZGVmaW5lLXN5bnRheC1y dWxlIChkZWZpbmUtY2lwaGVyLWFsZ29yaXRobXMgbmFtZS0+aW50ZWdlcgorICAgICAgICAg ICAgICAgICAgICAgIHN5bWJvbC0+aW50ZWdlciBpbnRlZ2VyLT5zeW1ib2wgY2lwaGVyLWtl eS1zaXplCisgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgaWQgc2l6ZSkgLi4uKQorICAi RGVmaW5lIGNpcGhlciBhbGdvcml0aG1zIHdpdGggdGhlaXIgTkFNRSwgbnVtZXJpY2FsIElE LCBhbmQgU0laRSBpbiBieXRlcy4iCisgIChiZWdpbgorICAgIDs7IE1ha2Ugc3VyZSBOQU1F IGlzIGJvdW5kIHRvIGZvbGxvdyBiZXN0IHByYWN0aWNlcyBmb3Igc3ludGF4IG1hdGNoaW5n CisgICAgOzsgKGluZm8gIihndWlsZSkgU3ludGF4IFJ1bGVzIikuCisgICAgKGRlZmluZS1z eW50YXgtcHVibGljIG5hbWUKKyAgICAgIChsYW1iZGEgKHMpCisgICAgICAgIChzeW50YXgt dmlvbGF0aW9uICduYW1lICJcCitzeW50YWN0aWMga2V5d29yZCBpcyBtZWFudCB0byBiZSB1 c2VkIHdpdGggJ2NpcGhlci1hbGdvcml0aG0nIgorICAgICAgICAgICAgICAgICAgICAgICAg ICBzIHMpKSkKKyAgICAuLi4KKworICAgIChkZWZpbmUtZW51bWVyYXRlLXR5cGUgbmFtZS0+ aW50ZWdlciBzeW1ib2wtPmludGVnZXIgaW50ZWdlci0+c3ltYm9sCisgICAgICAobmFtZSBp ZCkgLi4uKQorCisgICAgKGRlZmluZS1sb29rdXAtcHJvY2VkdXJlIGNpcGhlci1rZXktc2l6 ZQorICAgICAgIlJldHVybiB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhIGtleSBmb3IgdGhlIGdp dmVuIGNpcGhlciBhbGdvcml0aG0uIgorICAgICAgKGlkIHNpemUpIC4uLikpKQorCisoZGVm aW5lLXN5bnRheC1ydWxlIChkZWZpbmUtY2lwaGVyLW1vZGVzIG5hbWUtPmludGVnZXIKKyAg ICAgICAgICAgICAgICAgICAgICBzeW1ib2wtPmludGVnZXIgaW50ZWdlci0+c3ltYm9sCisg ICAgICAgICAgICAgICAgICAgICAgKG5hbWUgaWQpIC4uLikKKyAgIkRlZmluZSBjaXBoZXIg bW9kZXMgd2l0aCB0aGVpciBOQU1FIGFuZCBudW1lcmljYWwgSUQuIgorICAoYmVnaW4KKyAg ICA7OyBNYWtlIHN1cmUgTkFNRSBpcyBib3VuZCB0byBmb2xsb3cgYmVzdCBwcmFjdGljZXMg Zm9yIHN5bnRheCBtYXRjaGluZworICAgIDs7IChpbmZvICIoZ3VpbGUpIFN5bnRheCBSdWxl cyIpLgorICAgIChkZWZpbmUtc3ludGF4LXB1YmxpYyBuYW1lCisgICAgICAobGFtYmRhIChz KQorICAgICAgICAoc3ludGF4LXZpb2xhdGlvbiAnbmFtZSAiXAorc3ludGFjdGljIGtleXdv cmQgaXMgbWVhbnQgdG8gYmUgdXNlZCB3aXRoICdjaXBoZXItbW9kZSciCisgICAgICAgICAg ICAgICAgICAgICAgICAgIHMgcykpKQorICAgIC4uLgorCisgICAgKGRlZmluZS1lbnVtZXJh dGUtdHlwZSBuYW1lLT5pbnRlZ2VyIHN5bWJvbC0+aW50ZWdlciBpbnRlZ2VyLT5zeW1ib2wK KyAgICAgIChuYW1lIGlkKSAuLi4pKSkKKworKGRlZmluZS1jaXBoZXItYWxnb3JpdGhtcyBj aXBoZXItYWxnb3JpdGhtCisgIGxvb2t1cC1jaXBoZXItYWxnb3JpdGhtIGNpcGhlci1hbGdv cml0aG0tbmFtZQorICBjaXBoZXIta2V5LXNpemUKKworICA7OyBHQ1JZX0NJUEhFUl8qCisK KyAgKDNkZXMgMiAyNCkKKyAgKGNhc3Q1IDMgMTYpCisgIChhZXMxMjggNyAxNikKKyAgKGFl czE5MiA4IDI0KQorICAoYWVzMjU2IDkgMzIpCisgICh0d29maXNoIDEwIDMyKQorICAodHdv ZmlzaDEyOCAzMDMgMTYpCisgIChzZXJwZW50MTI4IDMwNCAxNikKKyAgKHNlcnBlbnQxOTIg MzA1IDI0KQorICAoc2VycGVudDI1NiAzMDYgMzIpCisgIChzZWVkIDMwOSAxNikKKyAgKGNh bWVsbGlhMTI4IDMxMCAxNikKKyAgKGNhbWVsbGlhMTkyIDMxMSAyNCkKKyAgKGNhbWVsbGlh MjU2IDMxMiAzMikKKyAgKHNtNCAzMTggMTYpKQorCisoZGVmaW5lLWNpcGhlci1tb2RlcyBj aXBoZXItbW9kZQorICBsb29rdXAtY2lwaGVyLW1vZGUgY2lwaGVyLW1vZGUtbmFtZQorCisg IDs7IEdDUllfQ0lQSEVSX01PREVfKgorICAoZWNiIDEpCisgIChjZmIgMikKKyAgKGNiYyAz KQorICAoc3RyZWFtIDQpCisgIChvZmIgNSkKKyAgKGN0ciA2KQorICAoYWVzd3JhcCA3KQor ICAoY2NtIDgpCisgIChnY20gOSkKKyAgKHBvbHkxMzA1IDEwKQorICAob2NiIDExKQorICAo Y2ZiOCAxMikKKyAgKHh0cyAxMykKKyAgKGVheCAxNCkKKyAgKHNpdiAxNSkKKyAgKGdjbS1z aXYgMTYpKQorCisoZGVmaW5lIGNpcGhlci1hbGdvLWtleWxlbgorICAobGliZ2NyeXB0LT5w cm9jZWR1cmUgaW50ICJnY3J5X2NpcGhlcl9nZXRfYWxnb19rZXlsZW4iIGAoLGludCkpKQor CisoZGVmaW5lIGNpcGhlci1hbGdvLWJsa2xlbgorICAobGliZ2NyeXB0LT5wcm9jZWR1cmUg aW50ICJnY3J5X2NpcGhlcl9nZXRfYWxnb19ibGtsZW4iIGAoLGludCkpKQorCisoZGVmaW5l ICVuby1lcnJvciAwKSAgOyBHUEdfRVJSX05PX0VSUk9SCisKKyhkZWZpbmUtd3JhcHBlZC1w b2ludGVyLXR5cGUgPGNpcGhlcj4KKyAgY2lwaGVyPworICBwb2ludGVyLT5jaXBoZXIgY2lw aGVyLT5wb2ludGVyCisgIChsYW1iZGEgKGNpcGhlciBwb3J0KQorICAgIChmb3JtYXQgcG9y dCAiIzxjaXBoZXIgfng+IgorICAgICAgICAgICAgKHBvaW50ZXItYWRkcmVzcyAoY2lwaGVy LT5wb2ludGVyIGNpcGhlcikpKSkpCisKKyhkZWZpbmUgJWdjcnktY2lwaGVyLW9wZW4KKyAg KGxpYmdjcnlwdC0+cHJvY2VkdXJlIGludCAiZ2NyeV9jaXBoZXJfb3BlbiIKKyAgICAgICAg ICAgICAgICAgICAgICAgIDs7IGdjcnlfY2lwaGVyX2hkX3QgKkhELCBpbnQgQUxHTywKKyAg ICAgICAgICAgICAgICAgICAgICAgIDs7IGludCBNT0RFLAorICAgICAgICAgICAgICAgICAg ICAgICAgOzsgdW5zaWduZWQgaW50IEZMQUdTCisgICAgICAgICAgICAgICAgICAgICAgICBg KCogLGludCAsaW50ICx1bnNpZ25lZC1pbnQpKSkKKworKGRlZmluZSAoY2lwaGVyLW9wZW4g YWxnb3JpdGhtIG1vZGUpCisgICJDcmVhdGUgYSA8Y2lwaGVyPiBvYmplY3Qgc2V0IHRvIHVz ZSBBTEdPUklUSE0gYW5kIE1PREUiCisgIChsZXQqICgoY2lwaGVyIChieXRldmVjdG9yLT5w b2ludGVyIChtYWtlLWJ5dGV2ZWN0b3IgKHNpemVvZiAnKikpKSkKKyAgICAgICAgIChlcnIg KCVnY3J5LWNpcGhlci1vcGVuIGNpcGhlciBhbGdvcml0aG0gbW9kZSAwKSkpCisgICAgKGlm ICg9IGVyciAwKQorICAgICAgICAocG9pbnRlci0+Y2lwaGVyIChkZXJlZmVyZW5jZS1wb2lu dGVyIGNpcGhlcikpCisgICAgICAgICh0aHJvdyAnZ2NyeS1lcnJvciAnY2lwaGVyLW9wZW4g ZXJyKSkpKQorCisoZGVmaW5lICVnY3J5LWNpcGhlci1zZXRrZXkKKyAgKGxpYmdjcnlwdC0+ cHJvY2VkdXJlIGludCAiZ2NyeV9jaXBoZXJfc2V0a2V5IiBgKCogKiAsc2l6ZV90KSkpCisK KyhkZWZpbmUgKGNpcGhlci1zZXRrZXkgY2lwaGVyIGtleSkKKyAgIlNldCB0aGUgS0VZIG9u IDxjaXBoZXI+IG9iamVjdCBDSVBIRVIKKworSW4gb3VyIGNhc2UsIEtFWSBpcyBlaXRoZXIg YSBzdHJpbmcgb3IgYSBieXRldmVjdG9yLiIKKyAgKGxldCogKChrZXkgKG1hdGNoIGtleQor ICAgICAgICAgICAgICAgICgoPyBieXRldmVjdG9yPyBrZXkpCisgICAgICAgICAgICAgICAg IGtleSkKKyAgICAgICAgICAgICAgICAoKD8gc3RyaW5nPyBrZXkpCisgICAgICAgICAgICAg ICAgIChzdHJpbmctPnV0Zjgga2V5KSkpKQorICAgICAgICAgKGVyciAoJWdjcnktY2lwaGVy LXNldGtleSAoY2lwaGVyLT5wb2ludGVyIGNpcGhlcikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGJ5dGV2ZWN0b3ItPnBvaW50ZXIga2V5KQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZXZlY3Rvci1sZW5ndGgga2V5KSkpKQorICAg IChpZiAoPSBlcnIgMCkKKyAgICAgICAgI3QKKyAgICAgICAgKHRocm93ICdnY3J5LWVycm9y ICdjaXBoZXItc2V0a2V5IGVycikpKSkKKworKGRlZmluZSAlZ2NyeS1jaXBoZXItc2V0aXYK KyAgKGxpYmdjcnlwdC0+cHJvY2VkdXJlIGludCAiZ2NyeV9jaXBoZXJfc2V0aXYiIGAoKiAq ICxzaXplX3QpKSkKKworKGRlZmluZSAoY2lwaGVyLXNldGl2IGNpcGhlciBpdikKKyAgIlNl dCB0aGUgSVYgb24gPGNpcGhlcj4gb2JqZWN0IENJUEhFUgorCitJbiBvdXIgY2FzZSwgSVYg aXMgZWl0aGVyIGEgc3RyaW5nIG9yIGEgYnl0ZXZlY3Rvci4iCisgIChsZXQqICgoaXYgKG1h dGNoIGl2CisgICAgICAgICAgICAgICAoKD8gYnl0ZXZlY3Rvcj8gaXYpCisgICAgICAgICAg ICAgICAgaXYpCisgICAgICAgICAgICAgICAoKD8gc3RyaW5nPyBpdikKKyAgICAgICAgICAg ICAgICAoc3RyaW5nLT51dGY4IGl2KSkpKQorICAgICAgICAgKGVyciAoJWdjcnktY2lwaGVy LXNldGl2IChjaXBoZXItPnBvaW50ZXIgY2lwaGVyKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChieXRldmVjdG9yLT5wb2ludGVyIGl2KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChieXRldmVjdG9yLWxlbmd0aCBpdikpKSkKKyAgICAoaWYg KD0gZXJyIDApCisgICAgICAgICN0CisgICAgICAgICh0aHJvdyAnZ2NyeS1lcnJvciAnY2lw aGVyLXNldGl2IGVycikpKSkKKworKGRlZmluZSAlZ2NyeS1jaXBoZXItc2V0Y3RyCisgIChs aWJnY3J5cHQtPnByb2NlZHVyZSBpbnQgImdjcnlfY2lwaGVyX3NldGN0ciIgYCgqICogLHNp emVfdCkpKQorCisoZGVmaW5lIChjaXBoZXItc2V0Y3RyIGNpcGhlciBjdHIpCisgICJTZXQg dGhlIENUUiBvbiA8Y2lwaGVyPiBvYmplY3QgQ0lQSEVSCisKK0luIG91ciBjYXNlLCBDVFIg aXMgZWl0aGVyIGEgc3RyaW5nIG9yIGEgYnl0ZXZlY3Rvci4iCisgIChsZXQqICgoY3RyICht YXRjaCBjdHIKKyAgICAgICAgICAgICAgICAoKD8gYnl0ZXZlY3Rvcj8gY3RyKQorICAgICAg ICAgICAgICAgICBjdHIpCisgICAgICAgICAgICAgICAgKCg/IHN0cmluZz8gY3RyKQorICAg ICAgICAgICAgICAgICAoc3RyaW5nLT51dGY4IGN0cikpKSkKKyAgICAgICAgIChlcnIgKCVn Y3J5LWNpcGhlci1zZXRjdHIgKGNpcGhlci0+cG9pbnRlciBjaXBoZXIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChieXRldmVjdG9yLT5wb2ludGVyIGN0cikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGV2ZWN0b3ItbGVuZ3RoIGN0 cikpKSkKKyAgICAoaWYgKD0gZXJyIDApCisgICAgICAgICN0CisgICAgICAgICh0aHJvdyAn Z2NyeS1lcnJvciAnY2lwaGVyLXNldGN0ciBlcnIpKSkpCisKKyhkZWZpbmUgJWdjcnktY2lw aGVyLWNsb3NlCisgIChsaWJnY3J5cHQtPnByb2NlZHVyZSB2b2lkCisgICAgICAgICAgICAg ICAgICAgICAgICAiZ2NyeV9jaXBoZXJfY2xvc2UiCisgICAgICAgICAgICAgICAgICAgICAg ICA7OyBnY3J5X2NpcGhlcl9oZF90IEgKKyAgICAgICAgICAgICAgICAgICAgICAgICcoKikp KQorCisoZGVmaW5lIChjaXBoZXItY2xvc2UgY2lwaGVyKQorICAiUmVsZWFzZSBhbGwgcmVz b3VyY2VzIG9mIENJUEhFUi4KKworUnVubmluZyB0aGlzIG9uIGFuIGFscmVhZHkgY2xvc2Vk IDxjaXBoZXI+IG1pZ2h0IHNlZ2ZhdWx0IDopIgorICAoJWdjcnktY2lwaGVyLWNsb3NlIChj aXBoZXItPnBvaW50ZXIgY2lwaGVyKSkpCisKKyhkZWZpbmUgJWdjcnktY2lwaGVyLWVuY3J5 cHQKKyAgKGxpYmdjcnlwdC0+cHJvY2VkdXJlIGludAorICAgICAgICAgICAgICAgICAgICAg ICAgImdjcnlfY2lwaGVyX2VuY3J5cHQiCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBn Y3J5X2NpcGhlcl9oZF90LCB1Y2hhciogb3V0LCBzaXplX3Qgb3V0c2l6ZQorICAgICAgICAg ICAgICAgICAgICAgICAgOzsgY29uc3QgdWNoYXIqIGluLCBzaXplX3QgaW5sZW4KKyAgICAg ICAgICAgICAgICAgICAgICAgIGAoKiAqICxzaXplX3QgKiAsc2l6ZV90KSkpCisKKyhkZWZp bmUgKGNpcGhlci1lbmNyeXB0IGNpcGhlciBvYmopCisgICJSdW5zIGEgcHJlcGFyZWQgY2lw aGVyIHRvIGVuY3J5cHQgZGF0YS4gUGFkIHlvdXIgcGxhaW50ZXh0IGlmIHVzaW5nIGEgbm9u LXN0cmVhbSBjaXBoZXIgbW9kZS4iCisgIChsZXQqICgoYnYgKG1hdGNoIG9iagorICAgICAg ICAgICAgICAgKCg/IGJ5dGV2ZWN0b3I/IG9iaikKKyAgICAgICAgICAgICAgICAoYnl0ZXZl Y3Rvci1jb3B5IG9iaikpCisgICAgICAgICAgICAgICAoKD8gc3RyaW5nPyBvYmopCisgICAg ICAgICAgICAgICAgKHN0cmluZy0+dXRmOCBvYmopKSkpCisgICAgICAgICAoZXJyICglZ2Ny eS1jaXBoZXItZW5jcnlwdCAoY2lwaGVyLT5wb2ludGVyIGNpcGhlcikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChieXRldmVjdG9yLT5wb2ludGVyIGJ2KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGV2ZWN0b3ItbGVuZ3RoIGJ2 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJW51bGwtcG9pbnRlcgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpKQorICAgIChpZiAoPSBl cnIgMCkKKyAgICAgICAgYnYKKyAgICAgICAgKHRocm93ICdnY3J5LWVycm9yICdjaXBoZXIt ZW5jcnlwdCBlcnIpKSkpCisKKyhkZWZpbmUgJWdjcnktY2lwaGVyLWRlY3J5cHQKKyAgKGxp YmdjcnlwdC0+cHJvY2VkdXJlIGludAorICAgICAgICAgICAgICAgICAgICAgICAgImdjcnlf Y2lwaGVyX2RlY3J5cHQiCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBnY3J5X2NpcGhl cl9oZF90LCB1Y2hhciogb3V0LCBzaXplX3Qgb3V0c2l6ZQorICAgICAgICAgICAgICAgICAg ICAgICAgOzsgY29uc3QgdWNoYXIqIGluLCBzaXplX3QgaW5sZW4KKyAgICAgICAgICAgICAg ICAgICAgICAgIGAoKiAqICxzaXplX3QgKiAsc2l6ZV90KSkpCisKKyhkZWZpbmUgKGNpcGhl ci1kZWNyeXB0IGNpcGhlciBvYmopCisgICJSdW5zIGEgcHJlcGFyZWQgY2lwaGVyIHRvIGRl Y3J5cHQgZGF0YS4iCisgIChsZXQqICgoYnYgKG1hdGNoIG9iagorICAgICAgICAgICAgICAg KCg/IGJ5dGV2ZWN0b3I/IG9iaikKKyAgICAgICAgICAgICAgICAoYnl0ZXZlY3Rvci1jb3B5 IG9iaikpCisgICAgICAgICAgICAgICAoKD8gc3RyaW5nPyBvYmopCisgICAgICAgICAgICAg ICAgKHN0cmluZy0+dXRmOCBvYmopKSkpCisgICAgICAgICAoZXJyICglZ2NyeS1jaXBoZXIt ZGVjcnlwdCAoY2lwaGVyLT5wb2ludGVyIGNpcGhlcikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChieXRldmVjdG9yLT5wb2ludGVyIGJ2KQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGV2ZWN0b3ItbGVuZ3RoIGJ2KQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJW51bGwtcG9pbnRlcgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpKQorICAgIChpZiAoPSBlcnIgMCkKKyAg ICAgICAgYnYKKyAgICAgICAgKHRocm93ICdnY3J5LWVycm9yICdjaXBoZXItZGVjcnlwdCBl cnIpKSkpCisKKyhkZWZpbmUgJWdjcnktY2lwaGVyLWF1dGhlbnRpY2F0ZQorICAobGliZ2Ny eXB0LT5wcm9jZWR1cmUgaW50CisgICAgICAgICAgICAgICAgICAgICAgICAiZ2NyeV9jaXBo ZXJfYXV0aGVudGljYXRlIgorICAgICAgICAgICAgICAgICAgICAgICAgOzsgZ2NyeV9jaXBo ZXJfaGRfdCBoLCBjb25zdCB2b2lkICphYnVmLCBzaXplX3QgYWJ1ZmxlbgorICAgICAgICAg ICAgICAgICAgICAgICAgJygqICogLHNpemVfdCkpKQorCisoZGVmaW5lIChjaXBoZXItYXV0 aGVudGljYXRlIGNpcGhlciBvYmopCisgICJQcm9jZXNzIGFkZGl0aW9uYWwgYXV0aGVudGlj YXRlZCBkYXRhIChBQUQpLCBBRUFEIGNpcGhlciBtb2RlcyBvbmx5LiIKKyAgKGxldCogKChi diAobWF0Y2ggb2JqCisgICAgICAgICAgICAgICAoKD8gYnl0ZXZlY3Rvcj8gb2JqKQorICAg ICAgICAgICAgICAgIG9iaikKKyAgICAgICAgICAgICAgICgoPyBzdHJpbmc/IG9iaikKKyAg ICAgICAgICAgICAgICAoc3RyaW5nLT51dGY4IG9iaikpKSkKKyAgICAgICAgIChlcnIgKCVn Y3J5LWNpcGhlci1hdXRoZW50aWNhdGUgKGNpcGhlci0+cG9pbnRlciBjaXBoZXIpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChieXRldmVjdG9yLT5wb2lu dGVyIGJ2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0 ZXZlY3Rvci1sZW5ndGggYnYpKSkpCisgICAgKGlmICg9IGVyciAwKQorICAgICAgICAjdAor ICAgICAgICAodGhyb3cgJ2djcnktZXJyb3IgJ2NpcGhlci1hdXRoZW50aWNhdGUgZXJyKSkp KQorCis7OyAoZGVmaW5lICVnY3J5Y3RsLWdldC10YWdsZW4gNzYpCis7OyAoZGVmaW5lICVn Y3J5LWNpcGhlci1pbmZvCis7OyAgIChsaWJnY3J5cHQtPnByb2NlZHVyZSBpbnQKKzs7ICAg ICAgICAgICAgICAgICAgICAgICAgICJnY3J5X2NpcGhlcl9pbmZvIgorOzsgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgZ2NyeV9jaXBoZXJfaGRfdCBoLCBpbnQgd2hhdCwgdm9pZCAq YnVmZmVyLCBzaXplX3QgKm5ieXRlcworOzsgICAgICAgICAgICAgICAgICAgICAgICAgJygq ICxpbnQgKiAsc2l6ZV90KSkpCisKKzs7IChkZWZpbmUgJWdjcnktY2lwaGVyLWdldHRhZwor OzsgICAobGliZ2NyeXB0LT5wcm9jZWR1cmUgaW50Cis7OyAgICAgICAgICAgICAgICAgICAg ICAgICAiZ2NyeV9jaXBoZXJfZ2V0dGFnIgorOzsgICAgICAgICAgICAgICAgICAgICAgICAg OzsgZ2NyeV9jaXBoZXJfaGRfdCBoLCB2b2lkICp0YWcsIHNpemVfdCB0YWdsZW4KKzs7ICAg ICAgICAgICAgICAgICAgICAgICAgICcoKiAqICxzaXplX3QpKSkKKworOzsgKGRlZmluZSAo Y2lwaGVyLWdldC10YWcgY2lwaGVyKQorOzsgICAiUmV0cmlldmUgdGhlIHRhZyBhZnRlciBl bmNyeXB0aW5nIGRhdGEgd2l0aCBhbiBBRUFEIGNpcGhlciBtb2RlLiIKKzs7ICAgKGxldCog KAorOzsgICAgICAgICAgKHRhZy1sZW4tYnYgKG1ha2UtYnl0ZXZlY3RvciAoc2l6ZW9mIHNp emVfdCkgMCkpCis7OyAgICAgICAgICAodGFnLWxlbi1lcnIgKCVnY3J5LWNpcGhlci1pbmZv IGNpcGhlcgorOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAl Z2NyeWN0bC1nZXQtdGFnbGVuCis7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICVudWxsLXBvaW50ZXIKKzs7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGJ5dGV2ZWN0b3ItPnBvaW50ZXIgdGFnLWxlbi1idikpKQorOzsg ICAgICAgICAgKGJ2LWxlbiAoYnl0ZXZlY3Rvci11aW50LXJlZiB0YWctbGVuLWJ2IDAgKG5h dGl2ZS1lbmRpYW5uZXNzKSAoc2l6ZW9mIHNpemVfdCkpKQorOzsgICAgICAgICAgKGJ2LWxl biAxNikKKzs7ICAgICAgICAgIChidiAobWFrZS1ieXRldmVjdG9yIGJ2LWxlbikpCis7OyAg ICAgICAgICAoZXJyICglZ2NyeS1jaXBoZXItZ2V0dGFnIChjaXBoZXItPnBvaW50ZXIgY2lw aGVyKQorOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZXZlY3Rv ci0+cG9pbnRlciBidikKKzs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YnYtbGVuKSkpCis7OyAgICAgKGlmICg9IGVyciAwKQorOzsgICAgICAgICBidgorOzsgICAg ICAgICAodGhyb3cgJ2djcnktZXJyb3IgJ2NpcGhlci1nZXQtdGFnIGVycikpKSkKKworOzsg KGRlZmluZSAlZ2NyeS1jaXBoZXItY2hlY2t0YWcKKzs7ICAgKGxpYmdjcnlwdC0+cHJvY2Vk dXJlIGludAorOzsgICAgICAgICAgICAgICAgICAgICAgICAgImdjcnlfY2lwaGVyX2NoZWNr dGFnIgorOzsgICAgICAgICAgICAgICAgICAgICAgICAgOzsgZ2NyeV9jaXBoZXJfaGRfdCBo LCBjb25zdCB2b2lkICp0YWcsIHNpemVfdCB0YWdsZW4KKzs7ICAgICAgICAgICAgICAgICAg ICAgICAgICcoKiAqIHNpemVfdCkpKQorCis7OyAoZGVmaW5lICVncGctZXJyLWNoZWNrc3Vt IDEwKQorCis7OyAoZGVmaW5lIChjaXBoZXItY2hlY2stdGFnIGNpcGhlciBvYmopCis7OyAg ICJDb21wYXJlIHRoZSB0YWcgdG8gdGhlIHRhZyBjb21wdXRlZCB3aGlsZSBkZWNyeXB0aW5n IGEgY2lwaGVydGV4dC4gQUVBRCBjaXBoZXIgbW9kZXMgb25seS4iCis7OyAgIChsZXQqICgo YnYgKG1hdGNoIG9iagorOzsgICAgICAgICAgICAgICAgKCg/IGJ5dGV2ZWN0b3I/IG9iaikK Kzs7ICAgICAgICAgICAgICAgICBvYmopCis7OyAgICAgICAgICAgICAgICAoKD8gc3RyaW5n PyBvYmopCis7OyAgICAgICAgICAgICAgICAgKHN0cmluZy0+dXRmOCBvYmopKSkpCis7OyAg ICAgICAgICAoZXJyICglZ2NyeS1jaXBoZXItY2hlY2t0YWcgKGNpcGhlci0+cG9pbnRlciBj aXBoZXIpCis7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGV2 ZWN0b3ItPnBvaW50ZXIgYnYpCis7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGJ5dGV2ZWN0b3ItbGVuZ3RoIGJ2KSkpKQorOzsgICAgIChpZiAoPSBlcnIgMCkK Kzs7ICAgICAgICAgI3QKKzs7ICAgICAgICAgKGlmICg9IGVyciAlZ3BnLWVyci1jaGVja3N1 bSkKKzs7ICAgICAgICAgICAgICNmCis7OyAgICAgICAgICAgICAodGhyb3cgJ2djcnktZXJy b3IgJ2NpcGhlci1jaGVjay10YWcgZXJyKSkpKSkKKworOzsgKGRlZmluZSAlZ2NyeS1jaXBo ZXItc2V0LWRlY3J5cHRpb24tdGFnCis7OyAgIDs7IE5lZWRlZCBmb3IgU0lWIGFuZCBHQ00t U0lWCis7OyAgIChsaWJnY3J5cHQtPnByb2NlZHVyZSBpbnQKKzs7ICAgICAgICAgICAgICAg ICAgICAgICAgICJnY3J5X2NpcGhlcl9zZXRfZGVjcnlwdGlvbl90YWciCis7OyAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBnY3J5X2NpcGhlcl9oZF90IGgsIGNvbnN0IHZvaWQgKnRh Zywgc2l6ZV90IHRhZ2xlbgorOzsgICAgICAgICAgICAgICAgICAgICAgICAgYCgqICogLHNp emVfdCkKKzs7ICAgICAgICAgICAgICAgICAgICAgICAgICkpCisKKzs7IChkZWZpbmUgKGNp cGhlci1zZXQtZGVjcnlwdGlvbi10YWcgY2lwaGVyIG9iaikKKzs7ICAgIlVzZSBvbmx5IGZv ciBTSVYgYW5kIEdDTS1TSVYgbW9kZXMuIEZvciBvdGhlciBtb2RlcywgdXNlIGBfY2hlY2t0 YWcnLiIKKzs7ICAgKGxldCogKChidiAobWF0Y2ggb2JqCis7OyAgICAgICAgICAgICAgICAo KD8gYnl0ZXZlY3Rvcj8gb2JqKQorOzsgICAgICAgICAgICAgICAgIG9iaikKKzs7ICAgICAg ICAgICAgICAgICgoPyBzdHJpbmc/IG9iaikKKzs7ICAgICAgICAgICAgICAgICAoc3RyaW5n LT51dGY4IG9iaikpKSkKKzs7ICAgICAgICAgIChlcnIgKCVnY3J5LWNpcGhlci1zZXQtZGVj cnlwdGlvbi10YWcgKGNpcGhlci0+cG9pbnRlciBjaXBoZXIpCis7OyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChieXRldmVjdG9yLT5wb2ludGVy IGJ2KQorOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYnl0ZXZlY3Rvci1sZW5ndGggYnYpKSkpCis7OyAgICAgKGlmICg9IGVyciAwKQorOzsg ICAgICAgICAjdAorOzsgICAgICAgICAodGhyb3cgJ2djcnktZXJyb3IgJ2NpcGhlci1zZXQt ZGVjcnlwdGlvbi10YWcgZXJyKSkpKQorCisoZGVmaW5lKiAoZW5jcnlwdCBhbGdvcml0aG0g bW9kZSBrZXkgaXYgcGxhaW50ZXh0ICM6a2V5IChjdHIgI2YpKQorICAiRW5jcnlwdCBkYXRh IHVzaW5nIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtLCBtb2RlLCBrZXksIGFuZCBJVi4KKwor UGFkIHlvdXIgcGxhaW50ZXh0IGlmIHRoZSBtb2RlIHJlcXVpcmVzIGl0IQorUmV0dXJucyBh IGJ5dGV2ZWN0b3Igd2l0aCB0aGUgY2lwaGVydGV4dC4iCisgIChsZXQgKChjaXBoZXIgKGNp cGhlci1vcGVuIGFsZ29yaXRobSBtb2RlKSkpCisgICAgKGNpcGhlci1zZXRrZXkgY2lwaGVy IGtleSkKKyAgICAoaWYgY3RyCisgICAgICAgIChjaXBoZXItc2V0Y3RyIGNpcGhlciBpdikK KyAgICAgICAgKGNpcGhlci1zZXRpdiBjaXBoZXIgaXYpKQorICAgIChsZXQgKChjaXBoZXJ0 ZXh0IChjaXBoZXItZW5jcnlwdCBjaXBoZXIgcGxhaW50ZXh0KSkpCisgICAgICAoY2lwaGVy LWNsb3NlIGNpcGhlcikKKyAgICAgIGNpcGhlcnRleHQpKSkKKworOzsgKGRlZmluZSogKGVu Y3J5cHQtYWVhZCBhbGdvcml0aG0gbW9kZSBrZXkgaXYgcGxhaW50ZXh0ICM6a2V5IChhYWQg I2YpIChjdHIgI2YpKQorOzsgICAiRW5jcnlwdCBkYXRhIHVzaW5nIHRoZSBzcGVjaWZpZWQg YWxnb3JpdGhtLCBtb2RlLCBrZXksIGFuZCBJVi4KKworOzsgUGFkIHlvdXIgcGxhaW50ZXh0 IGlmIHRoZSBtb2RlIHJlcXVpcmVzIGl0IQorOzsgUmV0dXJucyBgKGNpcGhlcnRleHQgLiB0 YWcpJy4iCis7OyAgIChsZXQgKChjaXBoZXIgKGNpcGhlci1vcGVuIGFsZ29yaXRobSBtb2Rl KSkpCis7OyAgICAgKGNpcGhlci1zZXRrZXkgY2lwaGVyIGtleSkKKzs7ICAgICAoaWYgY3Ry Cis7OyAgICAgICAgIChjaXBoZXItc2V0Y3RyIGNpcGhlciBjdHIpCis7OyAgICAgICAgIChj aXBoZXItc2V0aXYgY2lwaGVyIGl2KSkKKzs7ICAgICAoaWYgYWFkIChjaXBoZXItYXV0aGVu dGljYXRlIGNpcGhlciBhYWQpKQorOzsgICAgIChsZXQgKChjaXBoZXJ0ZXh0LXRhZyAoY29u cyAoY2lwaGVyLWVuY3J5cHQgY2lwaGVyIHBsYWludGV4dCkKKzs7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNpcGhlci1nZXQtdGFnIGNpcGhlcikpKSkKKzs7ICAgICAg IChjaXBoZXItY2xvc2UgY2lwaGVyKQorOzsgICAgICAgY2lwaGVydGV4dC10YWcpKSkKKwor KGRlZmluZSogKGRlY3J5cHQgYWxnb3JpdGhtIG1vZGUga2V5IGl2IGNpcGhlcnRleHQgIzpr ZXkgKGN0ciAjZikpCisgICJEZWNyeXB0IGRhdGEgdXNpbmcgdGhlIHNwZWNpZmllZCBhbGdv cml0aG0sIG1vZGUsIGtleSwgYW5kIElWLgorCitSZXR1cm5zIGEgYnl0ZXZlY3RvciB3aXRo IHRoZSBwbGFpbnRleHQuIgorICAobGV0ICgoY2lwaGVyIChjaXBoZXItb3BlbiBhbGdvcml0 aG0gbW9kZSkpKQorICAgIChjaXBoZXItc2V0a2V5IGNpcGhlciBrZXkpCisgICAgKGlmIGN0 cgorICAgICAgICAoY2lwaGVyLXNldGN0ciBjaXBoZXIgaXYpCisgICAgICAgIChjaXBoZXIt c2V0aXYgY2lwaGVyIGl2KSkKKyAgICAobGV0ICgocGxhaW50ZXh0IChjaXBoZXItZGVjcnlw dCBjaXBoZXIgY2lwaGVydGV4dCkpKQorICAgICAgKGNpcGhlci1jbG9zZSBjaXBoZXIpCisg ICAgICBwbGFpbnRleHQpKSkKKworOzsgKGRlZmluZSogKGRlY3J5cHQtYWVhZCBhbGdvcml0 aG0gbW9kZSBrZXkgaXYgY2lwaGVydGV4dCB0YWcgIzprZXkgKGFhZCAjZikgKGN0ciAjZikp Cis7OyAgICJEZWNyeXB0IGRhdGEgdXNpbmcgdGhlIHNwZWNpZmllZCBhbGdvcml0aG0sIG1v ZGUsIGtleSwgYW5kIElWLgorCis7OyBSZXR1cm5zIGAocGxhaW50ZXh0IC4gdGFnLXZlcmlm aWVkPyknLiIKKzs7ICAgKGxldCAoKGNpcGhlciAoY2lwaGVyLW9wZW4gYWxnb3JpdGhtIG1v ZGUpKSkKKzs7ICAgICAoY2lwaGVyLXNldGtleSBjaXBoZXIga2V5KQorOzsgICAgIChpZiBj dHIKKzs7ICAgICAgICAgKGNpcGhlci1zZXRjdHIgY2lwaGVyIGN0cikKKzs7ICAgICAgICAg KGNpcGhlci1zZXRpdiBjaXBoZXIgaXYpKQorOzsgICAgIChpZiBhYWQgKGNpcGhlci1hdXRo ZW50aWNhdGUgY2lwaGVyIGFhZCkpCis7OyAgICAgKGxldCAoKHBsYWludGV4dC10YWd2IChj b25zIChjaXBoZXItZGVjcnlwdCBjaXBoZXIgY2lwaGVydGV4dCkKKzs7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNpcGhlci1jaGVjay10YWcgY2lwaGVyIHRhZykpKSkK Kzs7ICAgICAgIChjaXBoZXItY2xvc2UgY2lwaGVyKQorOzsgICAgICAgcGxhaW50ZXh0LXRh Z3YpKSkKZGlmZiAtLWdpdCBhL3Rlc3RzL2NpcGhlci5zY20gYi90ZXN0cy9jaXBoZXIuc2Nt Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2OTU3MjQKLS0tIC9kZXYv bnVsbAorKysgYi90ZXN0cy9jaXBoZXIuc2NtCkBAIC0wLDAgKzEsNjggQEAKKzs7OyBndWls ZS1nY3J5cHQgLS0tIGNyeXB0byB0b29saW5nIGZvciBndWlsZQorOzs7IENvcHlyaWdodCDC qSAyMDI2IFNhYWQgUmhvdWxhbSA8c2FhZEByaG91bGFtLnRlY2g+Cis7OzsKKzs7OyBUaGlz IGZpbGUgaXMgcGFydCBvZiBndWlsZS1nY3J5cHQuCis7OzsKKzs7OyBndWlsZS1nY3J5cHQg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCis7Ozsg bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCis7OzsgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YKKzs7OyB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OworOzs7IGd1aWxlLWdjcnlw dCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBi dXQKKzs7OyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCis7OzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKzs7OyBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7Cis7OzsgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCis7OzsgYWxvbmcgd2l0aCBndWlsZS1nY3J5cHQuICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyhkZWZpbmUtbW9kdWxlICh0ZXN0LW1hYykK KyAgIzp1c2UtbW9kdWxlIChybnJzIGJ5dGV2ZWN0b3JzKQorICAjOnVzZS1tb2R1bGUgKHNy Zmkgc3JmaS02NCkKKyAgIzp1c2UtbW9kdWxlIChnY3J5cHQgY2lwaGVyKQorICAjOnVzZS1t b2R1bGUgKGdjcnlwdCByYW5kb20pKQorCisodGVzdC1iZWdpbiAiY2lwaGVyIikKKworKHRl c3QtZXF1YWwgImxvb2t1cC1jaXBoZXItYWxnb3JpdGhtIgorICAoY2lwaGVyLWFsZ29yaXRo bSBhZXMxMjgpCisgIChsb29rdXAtY2lwaGVyLWFsZ29yaXRobSAnYWVzMTI4KSkKKworKHRl c3QtZXF1YWwgImxvb2t1cC1jaXBoZXItbW9kZSIKKyAgKGNpcGhlci1tb2RlIGdjbSkKKyAg KGxvb2t1cC1jaXBoZXItbW9kZSAnZ2NtKSkKKworKHRlc3QtZXEgImNpcGhlci1hbGdvcml0 aG0tbmFtZSIKKyAgJ2FlczEyOAorICAoY2lwaGVyLWFsZ29yaXRobS1uYW1lIChjaXBoZXIt YWxnb3JpdGhtIGFlczEyOCkpKQorCisodGVzdC1lcSAiY2lwaGVyLW1vZGUtbmFtZSIKKyAg J2djbQorICAoY2lwaGVyLW1vZGUtbmFtZSAoY2lwaGVyLW1vZGUgZ2NtKSkpCisKKyh0ZXN0 LWVxdWFsICJjaXBoZXIta2V5LXNpemUiCisgIChsaXN0IDE2IDI0IDMyKQorICAobWFwIGNp cGhlci1rZXktc2l6ZQorICAgICAgIChsaXN0IChjaXBoZXItYWxnb3JpdGhtIGFlczEyOCkK KyAgICAgICAgICAgICAoY2lwaGVyLWFsZ29yaXRobSBhZXMxOTIpCisgICAgICAgICAgICAg KGNpcGhlci1hbGdvcml0aG0gYWVzMjU2KSkpKQorCisoZGVmaW5lIHRlc3Qta2V5IChnZW4t cmFuZG9tLWJ2IDE2KSkKKyhkZWZpbmUgdGVzdC1pdiAoZ2VuLXJhbmRvbS1idiAxNikpCiso ZGVmaW5lIHRlc3QtYWFkIChnZW4tcmFuZG9tLWJ2IDgpKQorCisobGV0KiAoKGN0IChlbmNy eXB0IChjaXBoZXItYWxnb3JpdGhtIGFlczEyOCkgKGNpcGhlci1tb2RlIGNiYykgdGVzdC1r ZXkgdGVzdC1pdiAic2l4dGVlbmNoYXJhY3RlciIpKSkKKyAgOzsgU2hvdWxkIGJlIGEgYnl0 ZXZlY3RvcgorICAodGVzdC1hc3NlcnQgKGJ5dGV2ZWN0b3I/IGN0KSkKKyAgOzsgRGVjcnlw dHMgdG8gb3JpZ2luYWwgcGxhaW50ZXh0CisgICh0ZXN0LWFzc2VydCAoZXF1YWw/IChzdHJp bmctPnV0ZjggInNpeHRlZW5jaGFyYWN0ZXIiKSAoZGVjcnlwdCAoY2lwaGVyLWFsZ29yaXRo bSBhZXMxMjgpIChjaXBoZXItbW9kZSBjYmMpIHRlc3Qta2V5IHRlc3QtaXYgY3QpKSkKKyAg OzsgV3JvbmcgYWxnb3JpdGhtIGZhaWxzCisgICh0ZXN0LWFzc2VydCAobm90IChlcXVhbD8g InNpeHRlZW5jaGFyYWN0ZXIiIChkZWNyeXB0IChjaXBoZXItYWxnb3JpdGhtIHNlcnBlbnQx MjgpIChjaXBoZXItbW9kZSBjYmMpIHRlc3Qta2V5IHRlc3QtaXYgY3QpKSkpCisgIDs7IFdy b25nIG1vZGUgZmFpbHMKKyAgKHRlc3QtYXNzZXJ0IChub3QgKGVxdWFsPyBjdCAoZW5jcnlw dCAoY2lwaGVyLWFsZ29yaXRobSBhZXMxMjgpIChjaXBoZXItbW9kZSBjdHIpIHRlc3Qta2V5 IHRlc3QtaXYgInNpeHRlZW5jaGFyYWN0ZXIiICM6Y3RyICN0KSkpKQorICA7OyBTaG91bGQg ZXF1YWwgYSByZS1ydW4gb2YgaXRzZWxmCisgICh0ZXN0LWVxdWFsIGN0IChlbmNyeXB0IChj aXBoZXItYWxnb3JpdGhtIGFlczEyOCkgKGNpcGhlci1tb2RlIGNiYykgdGVzdC1rZXkgdGVz dC1pdiAic2l4dGVlbmNoYXJhY3RlciIpKQorICA7OyBTaG91bGRuJ3QgZXF1YWwgc29tZXRo aW5nIGRpZmZlcmVudAorICAodGVzdC1hc3NlcnQgKG5vdCAoZXF1YWw/IGN0IChlbmNyeXB0 IChjaXBoZXItYWxnb3JpdGhtIGFlczEyOCkgKGNpcGhlci1tb2RlIGNiYykgdGVzdC1rZXkg dGVzdC1pdiAiZmlsdGh5Y2FyaWNhdHVyZSIpKSkpKQorCisodGVzdC1lbmQgImNpcGhlciIp Cg== --------------0qiPjf1CZJfDkxEpGYjL60Au Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Gcrypt-devel mailing list [email protected] https://lists.gnupg.org/mailman/listinfo/gcrypt-devel --------------0qiPjf1CZJfDkxEpGYjL60Au--