From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 10.42.180.131 with SMTP id bu3cs114737icb; Sat, 6 Nov 2010 14:12:36 -0700 (PDT) Received: by 10.220.175.199 with SMTP id bb7mr759895vcb.113.1289077955874; Sat, 06 Nov 2010 14:12:35 -0700 (PDT) Return-Path: Received: from rubyforge.org (rubyforge.org [205.234.109.19]) by mx.google.com with ESMTP id n28si2175845vbl.53.2010.11.06.14.12.35; Sat, 06 Nov 2010 14:12:35 -0700 (PDT) Received-SPF: pass (google.com: domain of sup-devel-bounces@rubyforge.org designates 205.234.109.19 as permitted sender) client-ip=205.234.109.19; Authentication-Results: mx.google.com; spf=pass (google.com: domain of sup-devel-bounces@rubyforge.org designates 205.234.109.19 as permitted sender) smtp.mail=sup-devel-bounces@rubyforge.org; dkim=neutral (body hash did not verify) header.i=@gmail.com Received: from rubyforge.org (rubyforge.org [127.0.0.1]) by rubyforge.org (Postfix) with ESMTP id 2F67F1858392; Sat, 6 Nov 2010 17:12:35 -0400 (EDT) Received: from mail-qw0-f50.google.com (mail-qw0-f50.google.com [209.85.216.50]) by rubyforge.org (Postfix) with ESMTP id 5ED7C185837B for ; Sat, 6 Nov 2010 16:08:02 -0400 (EDT) Received: by qwk4 with SMTP id 4so3626788qwk.23 for ; Sat, 06 Nov 2010 13:08:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=x7FJ3NshsGIxlOa5vbBGTTNzLAEEEfIRvtJARvsBOxs=; b=clSZMcD2qCfCmDGfBFVOGJtSzz1Oce4gbolq6haWn1iPj8Bu3ZNS8/wOXDqRErNgqX 2RJW2PnoeizgcMWJyLla7GOPfx1O2j2tomcE1m6bxehiUhB0xtbte0qUycUoYnk0cVIt xhhRtwZPsQA7TNSgE9GSb1YHwQBFhOUF6Aae8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=rHDq9ZmToKt9Yi1TRlI4QVHyOCXeMGmfeZrutQDZWSQkNgw93Fl4lGhfY97k9cy25j tyaK+9xuuG7CE/cvKtx9B/8naeEXRdbAdqJo9rbRgmOCaYutbe+4H71ohtBh84OWCilX bjCHupbICtKEqVJ7eI/+lEC6gaKXDmZg7Hvrg= MIME-Version: 1.0 Received: by 10.229.248.79 with SMTP id mf15mr3402726qcb.181.1289074081936; Sat, 06 Nov 2010 13:08:01 -0700 (PDT) Received: by 10.229.219.68 with HTTP; Sat, 6 Nov 2010 13:08:01 -0700 (PDT) Date: Sat, 6 Nov 2010 20:08:01 +0000 Message-ID: From: Hamish D To: sup-devel@rubyforge.org Content-Type: multipart/mixed; boundary=0016e64ccc6abe369a049467f258 Subject: [sup-devel] [PATCH] Converted crypto to use the gpgme gem X-BeenThere: sup-devel@rubyforge.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: Sup developer discussion List-Id: Sup developer discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: sup-devel-bounces@rubyforge.org Errors-To: sup-devel-bounces@rubyforge.org --0016e64ccc6abe369a049467f258 Content-Type: text/plain; charset=UTF-8 I often find that loading long threads of encrypted messages (I have several of over 10 messages and one of nearly 40) leads to lots of flickering as the console replaces sup, sup comes back, the console comes back again ... It is also very slow, and involves writing decrypted messages to disk (if only temporarily) which could be a security hole. So I've looked about and found the gpgme gem which provides an API to use, and allows decryption entirely in memory. So I've rewritten lib/sup/crypto.rb to use gpgme. The functionality is pretty much the same. Things I'm aware of that are different: * we can't set the signature algorithm, so we have to use whatever is set in the user's preferences * the gpg-args hook has been replaced by the gpg-options hook Other than that I think it is the same, although it took some work to get the signature output to be the same. The other main difference is that it's much faster and nicer now :) It could do with some testing - I don't have much in the way of messages that cause gpg to complain, so if you do, please try opening those messages with this code and see if the behaviour is reasonable - no crashes, given messages about why your message was bad etc. Also I guess I should ask if people are happy to use this gem. Is it hard to use on Macs? I guess I could rewrite this patch so it falls back to the gpg binary if gpgme is not available ... To install this patch on Debian/Ubuntu you can either * apt-get install libgpgme-ruby * apt-get install libgpgme11-dev; gem install gpgme Hamish Downer --0016e64ccc6abe369a049467f258 Content-Type: text/x-patch; charset=US-ASCII; name="0001-Converted-crypto-to-use-the-gpgme-gem.patch" Content-Disposition: attachment; filename="0001-Converted-crypto-to-use-the-gpgme-gem.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gg6xe4o00 RnJvbSA1MjQ0MWQxZWI3NDliYjFlM2I1MDI2ZTQyYTMzNGU5YzhmNDU1ODMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYW1pc2ggRG93bmVyIDxkbWlzaGRAZ21haWwuY29tPgpEYXRl OiBGcmksIDUgTm92IDIwMTAgMjI6MzA6NTUgKzAwMDAKU3ViamVjdDogW1BBVENIXSBDb252ZXJ0 ZWQgY3J5cHRvIHRvIHVzZSB0aGUgZ3BnbWUgZ2VtCgotLS0KIGJpbi9zdXAgICAgICAgICAgIHwg ICAxMSArKysKIGxpYi9zdXAvY3J5cHRvLnJiIHwgIDIzMSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxNDEgaW5z ZXJ0aW9ucygrKSwgMTAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Jpbi9zdXAgYi9iaW4v c3VwCmluZGV4IDEwYmUxNjEuLmFkN2EwZDEgMTAwNzU1Ci0tLSBhL2Jpbi9zdXAKKysrIGIvYmlu L3N1cApAQCAtMTAsNiArMTAsMTMgQEAgcmVzY3VlIExvYWRFcnJvcgogICBub19uY3Vyc2VzdyA9 IHRydWUKIGVuZAogCitub19ncGdtZSA9IGZhbHNlCitiZWdpbgorICByZXF1aXJlICdncGdtZScK K3Jlc2N1ZSBMb2FkRXJyb3IKKyAgbm9fZ3BnbWUgPSB0cnVlCitlbmQKKwogcmVxdWlyZSAnZmls ZXV0aWxzJwogcmVxdWlyZSAndHJvbGxvcCcKIHJlcXVpcmUgInN1cCI7IFJlZHdvb2Q6OmNoZWNr X2xpYnJhcnlfdmVyc2lvbl9hZ2FpbnN0ICJnaXQiCkBAIC0yMyw2ICszMCwxMCBAQCBpZiBub19u Y3Vyc2VzdwogICBpbmZvICJObyAnbmN1cnNlc3cnIGdlbSBkZXRlY3RlZC4gSW5zdGFsbCBpdCBm b3Igd2lkZSBjaGFyYWN0ZXIgc3VwcG9ydC4iCiBlbmQKIAoraWYgbm9fZ3BnbWUKKyAgaW5mbyAi Tm8gJ2dwZ21lJyBnZW0gZGV0ZWN0ZWQuIEluc3RhbGwgaXQgZm9yIGVtYWlsIGVuY3J5cHRpb24s IGRlY3J5cHRpb24gYW5kIHNpZ25hdHVyZXMuIgorZW5kCisKICRvcHRzID0gVHJvbGxvcDo6b3B0 aW9ucyBkbwogICB2ZXJzaW9uICJzdXAgdiN7UmVkd29vZDo6VkVSU0lPTn0iCiAgIGJhbm5lciA8 PEVPUwpkaWZmIC0tZ2l0IGEvbGliL3N1cC9jcnlwdG8ucmIgYi9saWIvc3VwL2NyeXB0by5yYgpp bmRleCBjN2I1N2MxLi45ZDIxZWEwIDEwMDY0NAotLS0gYS9saWIvc3VwL2NyeXB0by5yYgorKysg Yi9saWIvc3VwL2NyeXB0by5yYgpAQCAtMSwzICsxLDggQEAKK2JlZ2luCisgIHJlcXVpcmUgJ2dw Z21lJworcmVzY3VlIExvYWRFcnJvcgorZW5kCisKIG1vZHVsZSBSZWR3b29kCiAKIGNsYXNzIENy eXB0b01hbmFnZXIKQEAgLTExLDc2ICsxNiw3OSBAQCBjbGFzcyBDcnlwdG9NYW5hZ2VyCiAgICAg WzplbmNyeXB0LCAiRW5jcnlwdCBvbmx5Il0KICAgKQogCi0gIEhvb2tNYW5hZ2VyLnJlZ2lzdGVy ICJncGctYXJncyIsIDw8RU9TCi1SdW5zIGJlZm9yZSBncGcgaXMgZXhlY3V0ZWQsIGFsbG93aW5n IHlvdSB0byBtb2RpZnkgdGhlIGFyZ3VtZW50cyAobW9zdAorICBIb29rTWFuYWdlci5yZWdpc3Rl ciAiZ3BnLW9wdGlvbnMiLCA8PEVPUworUnVucyBiZWZvcmUgZ3BnIGlzIGNhbGxlZCwgYWxsb3dp bmcgeW91IHRvIG1vZGlmeSB0aGUgb3B0aW9ucyAobW9zdAogbGlrZWx5IHlvdSB3b3VsZCB3YW50 IHRvIGFkZCBzb21ldGhpbmcgdG8gY2VydGFpbiBjb21tYW5kcywgbGlrZQotLS10cnVzdC1tb2Rl bCBhbHdheXMgdG8gc2lnbmluZy9lbmNyeXB0aW5nIGEgbWVzc2FnZSwgYnV0IHdobyBrbm93cyku Cit7OmFsd2F5c190cnVzdCA9PiB0cnVlfSB0byBlbmNyeXB0aW5nIGEgbWVzc2FnZSwgYnV0IHdo byBrbm93cykuCiAKIFZhcmlhYmxlczoKLWFyZ3M6IGFyZ3VtZW50cyBmb3IgcnVubmluZyBHUEcK K29wZXJhdGlvbjogd2hhdCBvcGVyYXRpb24gd2lsbCBiZSBkb25lICgic2lnbiIsICJlbmNyeXB0 IiwgImRlY3J5cHQiIG9yICJ2ZXJpZnkiKQorb3B0aW9uczogYSBkaWN0aW9uYXJ5IG9mIHZhbHVl cyB0byBiZSBwYXNzZWQgdG8gR1BHTUUKIAotUmV0dXJuIHZhbHVlOiB0aGUgYXJndW1lbnRzIGZv ciBydW5uaW5nIEdQRworUmV0dXJuIHZhbHVlOiBhIGRpY3Rpb25hcnkgdG8gYmUgcGFzc2VkIHRv IEdQR01FCiBFT1MKIAogICBkZWYgaW5pdGlhbGl6ZQogICAgIEBtdXRleCA9IE11dGV4Lm5ldwog Ci0gICAgYmluID0gYHdoaWNoIGdwZ2AuY2hvbXAKLSAgICBAY21kID0gY2FzZSBiaW4KLSAgICB3 aGVuIC9cUy8KLSAgICAgIGRlYnVnICJjcnlwdG86IGRldGVjdGVkIGdwZyBiaW5hcnkgaW4gI3ti aW59IgotICAgICAgIiN7YmlufSAtLXF1aWV0IC0tYmF0Y2ggLS1uby12ZXJib3NlIC0tbG9nZ2Vy LWZkIDEgLS11c2UtYWdlbnQiCi0gICAgZWxzZQotICAgICAgZGVidWcgImNyeXB0bzogbm8gZ3Bn IGJpbmFyeSBkZXRlY3RlZCIKLSAgICAgIG5pbAorICAgICMgdGVzdCBpZiB0aGUgZ3BnbWUgZ2Vt IGlzIGF2YWlsYWJsZQorICAgIEBncGdtZV9wcmVzZW50ID0gdHJ1ZQorICAgIGJlZ2luCisgICAg R1BHTUUuY2hlY2tfdmVyc2lvbih7OnByb3RvY29sID0+IEdQR01FOjpQUk9UT0NPTF9PcGVuUEdQ fSkKKyAgICByZXNjdWUgTmFtZUVycm9yLCBHUEdNRTo6RXJyb3IKKyAgICAgIEBncGdtZV9wcmVz ZW50ID0gZmFsc2UKICAgICBlbmQKICAgZW5kCiAKLSAgZGVmIGhhdmVfY3J5cHRvPzsgIUBjbWQu bmlsPyBlbmQKKyAgZGVmIGhhdmVfY3J5cHRvPzsgQGdwZ21lX3ByZXNlbnQgZW5kCiAKICAgZGVm IHNpZ24gZnJvbSwgdG8sIHBheWxvYWQKLSAgICBwYXlsb2FkX2ZuID0gVGVtcGZpbGUubmV3ICJy ZWR3b29kLnBheWxvYWQiCi0gICAgcGF5bG9hZF9mbi53cml0ZSBmb3JtYXRfcGF5bG9hZChwYXls b2FkKQotICAgIHBheWxvYWRfZm4uY2xvc2UKKyAgICByZXR1cm4gdW5rbm93bl9zdGF0dXMoY2Fu dF9maW5kX2dwZ21lKSB1bmxlc3MgQGdwZ21lX3ByZXNlbnQKIAotICAgIHNpZ19mbiA9IFRlbXBm aWxlLm5ldyAicmVkd29vZC5zaWduYXR1cmUiOyBzaWdfZm4uY2xvc2UKKyAgICBncGdfb3B0cyA9 IHs6cHJvdG9jb2wgPT4gR1BHTUU6OlBST1RPQ09MX09wZW5QR1AsIDphcm1vciA9PiB0cnVlLCA6 dGV4dG1vZGUgPT4gdHJ1ZX0KKyAgICBncGdfb3B0cy5tZXJnZShnZW5fc2lnbl91c2VyX29wdHMo ZnJvbSkpCisgICAgZ3BnX29wdHMgPSBIb29rTWFuYWdlci5ydW4oImdwZy1vcHRpb25zIiwgCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezpvcGVyYXRpb24gPT4gInNpZ24iLCA6b3B0 aW9ucyA9PiBncGdfb3B0c30pIHx8IGdwZ19vcHRzCiAKLSAgICBzaWduX3VzZXJfb3B0cyA9IGdl bl9zaWduX3VzZXJfb3B0cyBmcm9tCi0gICAgbWVzc2FnZSA9IHJ1bl9ncGcgIi0tb3V0cHV0ICN7 c2lnX2ZuLnBhdGh9IC0teWVzIC0tYXJtb3IgLS1kZXRhY2gtc2lnbiAtLXRleHRtb2RlIC0tZGln ZXN0LWFsZ28gc2hhMjU2ICN7c2lnbl91c2VyX29wdHN9ICN7cGF5bG9hZF9mbi5wYXRofSIsIDpp bnRlcmFjdGl2ZSA9PiB0cnVlCi0gICAgdW5sZXNzICQ/LnN1Y2Nlc3M/Ci0gICAgICBpbmZvICJF cnJvciB3aGlsZSBydW5uaW5nIGdwZzogI3ttZXNzYWdlfSIKKyAgICBiZWdpbgorICAgICAgc2ln ID0gR1BHTUUuZGV0YWNoX3NpZ24oZm9ybWF0X3BheWxvYWQocGF5bG9hZCksIGdwZ19vcHRzKQor ICAgIHJlc2N1ZSBHUEdNRTo6RXJyb3IgPT4gZXhjCisgICAgICBpbmZvICJFcnJvciB3aGlsZSBy dW5uaW5nIGdwZzogI3tleGMubWVzc2FnZX0iCiAgICAgICByYWlzZSBFcnJvciwgIkdQRyBjb21t YW5kIGZhaWxlZC4gU2VlIGxvZyBmb3IgZGV0YWlscy4iCiAgICAgZW5kCiAKICAgICBlbnZlbG9w ZSA9IFJNYWlsOjpNZXNzYWdlLm5ldwotICAgIGVudmVsb3BlLmhlYWRlclsiQ29udGVudC1UeXBl Il0gPSAnbXVsdGlwYXJ0L3NpZ25lZDsgcHJvdG9jb2w9YXBwbGljYXRpb24vcGdwLXNpZ25hdHVy ZTsgbWljYWxnPXBncC1zaGEyNTYnCisgICAgZW52ZWxvcGUuaGVhZGVyWyJDb250ZW50LVR5cGUi XSA9ICdtdWx0aXBhcnQvc2lnbmVkOyBwcm90b2NvbD1hcHBsaWNhdGlvbi9wZ3Atc2lnbmF0dXJl JwogCiAgICAgZW52ZWxvcGUuYWRkX3BhcnQgcGF5bG9hZAotICAgIHNpZ25hdHVyZSA9IFJNYWls OjpNZXNzYWdlLm1ha2VfYXR0YWNobWVudCBJTy5yZWFkKHNpZ19mbi5wYXRoKSwgImFwcGxpY2F0 aW9uL3BncC1zaWduYXR1cmUiLCBuaWwsICJzaWduYXR1cmUuYXNjIgorICAgIHNpZ25hdHVyZSA9 IFJNYWlsOjpNZXNzYWdlLm1ha2VfYXR0YWNobWVudCBzaWcsICJhcHBsaWNhdGlvbi9wZ3Atc2ln bmF0dXJlIiwgbmlsLCAic2lnbmF0dXJlLmFzYyIKICAgICBlbnZlbG9wZS5hZGRfcGFydCBzaWdu YXR1cmUKICAgICBlbnZlbG9wZQogICBlbmQKIAogICBkZWYgZW5jcnlwdCBmcm9tLCB0bywgcGF5 bG9hZCwgc2lnbj1mYWxzZQotICAgIHBheWxvYWRfZm4gPSBUZW1wZmlsZS5uZXcgInJlZHdvb2Qu cGF5bG9hZCIKLSAgICBwYXlsb2FkX2ZuLndyaXRlIGZvcm1hdF9wYXlsb2FkKHBheWxvYWQpCi0g ICAgcGF5bG9hZF9mbi5jbG9zZQotCi0gICAgZW5jcnlwdGVkX2ZuID0gVGVtcGZpbGUubmV3ICJy ZWR3b29kLmVuY3J5cHRlZCI7IGVuY3J5cHRlZF9mbi5jbG9zZQotCi0gICAgcmVjaXBpZW50X29w dHMgPSAodG8gKyBbIGZyb20gXSApLm1hcCB7IHxyfCAiLS1yZWNpcGllbnQgJzwje3J9PiciIH0u am9pbigiICIpCi0gICAgc2lnbl9vcHRzID0gIiIKLSAgICBzaWduX29wdHMgPSAiLS1zaWduIC0t ZGlnZXN0LWFsZ28gc2hhMjU2ICIgKyBnZW5fc2lnbl91c2VyX29wdHMoZnJvbSkgaWYgc2lnbgot ICAgIG1lc3NhZ2UgPSBydW5fZ3BnICItLW91dHB1dCAje2VuY3J5cHRlZF9mbi5wYXRofSAtLXll cyAtLWFybW9yIC0tZW5jcnlwdCAtLXRleHRtb2RlICN7c2lnbl9vcHRzfSAje3JlY2lwaWVudF9v cHRzfSAje3BheWxvYWRfZm4ucGF0aH0iLCA6aW50ZXJhY3RpdmUgPT4gdHJ1ZQotICAgIHVubGVz cyAkPy5zdWNjZXNzPwotICAgICAgaW5mbyAiRXJyb3Igd2hpbGUgcnVubmluZyBncGc6ICN7bWVz c2FnZX0iCisgICAgcmV0dXJuIHVua25vd25fc3RhdHVzKGNhbnRfZmluZF9ncGdtZSkgdW5sZXNz IEBncGdtZV9wcmVzZW50CisKKyAgICBncGdfb3B0cyA9IHs6cHJvdG9jb2wgPT4gR1BHTUU6OlBS T1RPQ09MX09wZW5QR1AsIDphcm1vciA9PiB0cnVlLCA6dGV4dG1vZGUgPT4gdHJ1ZX0KKyAgICBp ZiBzaWduCisgICAgICBncGdfb3B0cy5tZXJnZShnZW5fc2lnbl91c2VyX29wdHMoZnJvbSkpIAor ICAgICAgZ3BnX29wdHMubWVyZ2UoezpzaWduID0+IHRydWV9KQorICAgIGVuZAorICAgIGdwZ19v cHRzID0gSG9va01hbmFnZXIucnVuKCJncGctb3B0aW9ucyIsIAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHs6b3BlcmF0aW9uID0+ICJlbmNyeXB0IiwgOm9wdGlvbnMgPT4gZ3BnX29w dHN9KSB8fCBncGdfb3B0cworICAgIHJlY2lwaWVudHMgPSB0byArIFtmcm9tXQorCisgICAgYmVn aW4KKyAgICAgIGNpcGhlciA9IEdQR01FLmVuY3J5cHQocmVjaXBpZW50cywgZm9ybWF0X3BheWxv YWQocGF5bG9hZCksIGdwZ19vcHRzKQorICAgIHJlc2N1ZSBHUEdNRTo6RXJyb3IgPT4gZXhjCisg ICAgICBpbmZvICJFcnJvciB3aGlsZSBydW5uaW5nIGdwZzogI3tleGMubWVzc2FnZX0iCiAgICAg ICByYWlzZSBFcnJvciwgIkdQRyBjb21tYW5kIGZhaWxlZC4gU2VlIGxvZyBmb3IgZGV0YWlscy4i CiAgICAgZW5kCiAKICAgICBlbmNyeXB0ZWRfcGF5bG9hZCA9IFJNYWlsOjpNZXNzYWdlLm5ldwog ICAgIGVuY3J5cHRlZF9wYXlsb2FkLmhlYWRlclsiQ29udGVudC1UeXBlIl0gPSAiYXBwbGljYXRp b24vb2N0ZXQtc3RyZWFtIgogICAgIGVuY3J5cHRlZF9wYXlsb2FkLmhlYWRlclsiQ29udGVudC1E aXNwb3NpdGlvbiJdID0gJ2lubGluZTsgZmlsZW5hbWU9Im1zZy5hc2MiJwotICAgIGVuY3J5cHRl ZF9wYXlsb2FkLmJvZHkgPSBJTy5yZWFkKGVuY3J5cHRlZF9mbi5wYXRoKQorICAgIGVuY3J5cHRl ZF9wYXlsb2FkLmJvZHkgPSBjaXBoZXIKIAogICAgIGNvbnRyb2wgPSBSTWFpbDo6TWVzc2FnZS5u ZXcKICAgICBjb250cm9sLmhlYWRlclsiQ29udGVudC1UeXBlIl0gPSAiYXBwbGljYXRpb24vcGdw LWVuY3J5cHRlZCIKQEAgLTk5LDcwICsxMDcsODUgQEAgRU9TCiAgICAgZW5jcnlwdCBmcm9tLCB0 bywgcGF5bG9hZCwgdHJ1ZQogICBlbmQKIAotICBkZWYgdmVyaWZpZWRfb2s/IG91dHB1dCwgcmMK LSAgICBvdXRwdXRfbGluZXMgPSBvdXRwdXQuc3BsaXQoL1xuLykKLQotICAgIGlmIG91dHB1dCA9 fiAvXmdwZzogKC4qIHNpZ25hdHVyZSBmcm9tIC4qJCkvCi0gICAgICBpZiByYyA9PSAwCi0gICAg ICAgIENodW5rOjpDcnlwdG9Ob3RpY2UubmV3IDp2YWxpZCwgJDEsIG91dHB1dF9saW5lcwotICAg ICAgZWxzZQotICAgICAgICBDaHVuazo6Q3J5cHRvTm90aWNlLm5ldyA6aW52YWxpZCwgJDEsIG91 dHB1dF9saW5lcworICBkZWYgdmVyaWZpZWRfb2s/IHZlcmlmeV9yZXN1bHQKKyAgICB2YWxpZCA9 IHRydWUKKyAgICB1bmtub3duID0gZmFsc2UKKyAgICBvdXRwdXRfbGluZXMgPSBbXQorCisgICAg dmVyaWZ5X3Jlc3VsdC5zaWduYXR1cmVzLmVhY2ggZG8gfHNpZ25hdHVyZXwKKyAgICAgIG91dHB1 dF9saW5lcy5wdXNoKHNpZ19vdXRwdXRfbGluZXMoc2lnbmF0dXJlKSkKKyAgICAgIG91dHB1dF9s aW5lcy5mbGF0dGVuIQorICAgICAgZXJyX2NvZGUgPSBHUEdNRTo6Z3BnbWVfZXJyX2NvZGUoc2ln bmF0dXJlLnN0YXR1cykKKyAgICAgIGlmIGVycl9jb2RlID09IEdQR01FOjpHUEdfRVJSX0JBRF9T SUdOQVRVUkUKKyAgICAgICAgdmFsaWQgPSBmYWxzZSAKKyAgICAgIGVsc2lmIGVycl9jb2RlICE9 IEdQR01FOjpHUEdfRVJSX05PX0VSUk9SCisgICAgICAgIHZhbGlkID0gZmFsc2UKKyAgICAgICAg dW5rbm93biA9IHRydWUKICAgICAgIGVuZAotICAgIGVsc2lmIG91dHB1dF9saW5lcy5sZW5ndGgg PT0gMCAmJiByYyA9PSAwCi0gICAgICAjIHRoZSBtZXNzYWdlIHdhc24ndCBzaWduZWQKKyAgICBl bmQKKworICAgIGlmIG91dHB1dF9saW5lcy5sZW5ndGggPT0gMAogICAgICAgQ2h1bms6OkNyeXB0 b05vdGljZS5uZXcgOnZhbGlkLCAiRW5jcnlwdGVkIG1lc3NhZ2Ugd2Fzbid0IHNpZ25lZCIsIG91 dHB1dF9saW5lcworICAgIGVsc2lmIHZhbGlkCisgICAgICBDaHVuazo6Q3J5cHRvTm90aWNlLm5l dyg6dmFsaWQsIHNpbXBsaWZ5X3NpZ19saW5lKHZlcmlmeV9yZXN1bHQuc2lnbmF0dXJlc1swXS50 b19zKSwgb3V0cHV0X2xpbmVzKQorICAgIGVsc2lmICF1bmtub3duCisgICAgICBDaHVuazo6Q3J5 cHRvTm90aWNlLm5ldyg6aW52YWxpZCwgc2ltcGxpZnlfc2lnX2xpbmUodmVyaWZ5X3Jlc3VsdC5z aWduYXR1cmVzWzBdLnRvX3MpLCBvdXRwdXRfbGluZXMpCiAgICAgZWxzZQogICAgICAgdW5rbm93 bl9zdGF0dXMgb3V0cHV0X2xpbmVzCiAgICAgZW5kCiAgIGVuZAogCiAgIGRlZiB2ZXJpZnkgcGF5 bG9hZCwgc2lnbmF0dXJlLCBkZXRhY2hlZD10cnVlICMgYm90aCBSdWJ5TWFpbDo6TWVzc2FnZSBv YmplY3RzCi0gICAgcmV0dXJuIHVua25vd25fc3RhdHVzKGNhbnRfZmluZF9iaW5hcnkpIHVubGVz cyBAY21kCisgICAgcmV0dXJuIHVua25vd25fc3RhdHVzKGNhbnRfZmluZF9ncGdtZSkgdW5sZXNz IEBncGdtZV9wcmVzZW50CiAKKyAgICBncGdfb3B0cyA9IHs6cHJvdG9jb2wgPT4gR1BHTUU6OlBS T1RPQ09MX09wZW5QR1B9CisgICAgZ3BnX29wdHMgPSBIb29rTWFuYWdlci5ydW4oImdwZy1vcHRp b25zIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezpvcGVyYXRpb24gPT4gInZl cmlmeSIsIDpvcHRpb25zID0+IGdwZ19vcHRzfSkgfHwgZ3BnX29wdHMKKyAgICBjdHggPSBHUEdN RTo6Q3R4Lm5ldyhncGdfb3B0cykgCisgICAgc2lnX2RhdGEgPSBHUEdNRTo6RGF0YS5mcm9tX3N0 ciBzaWduYXR1cmUuZGVjb2RlCiAgICAgaWYgZGV0YWNoZWQKLSAgICAgIHBheWxvYWRfZm4gPSBU ZW1wZmlsZS5uZXcgInJlZHdvb2QucGF5bG9hZCIKLSAgICAgIHBheWxvYWRfZm4ud3JpdGUgZm9y bWF0X3BheWxvYWQocGF5bG9hZCkKLSAgICAgIHBheWxvYWRfZm4uY2xvc2UKLSAgICBlbmQKLQot ICAgIHNpZ25hdHVyZV9mbiA9IFRlbXBmaWxlLm5ldyAicmVkd29vZC5zaWduYXR1cmUiCi0gICAg c2lnbmF0dXJlX2ZuLndyaXRlIHNpZ25hdHVyZS5kZWNvZGUKLSAgICBzaWduYXR1cmVfZm4uY2xv c2UKLQotICAgIGlmIGRldGFjaGVkCi0gICAgICBvdXRwdXQgPSBydW5fZ3BnICItLXZlcmlmeSAj e3NpZ25hdHVyZV9mbi5wYXRofSAje3BheWxvYWRfZm4ucGF0aH0iCisgICAgICBzaWduZWRfdGV4 dF9kYXRhID0gR1BHTUU6OkRhdGEuZnJvbV9zdHIoZm9ybWF0X3BheWxvYWQocGF5bG9hZCkpCisg ICAgICBwbGFpbl9kYXRhID0gbmlsCiAgICAgZWxzZQotICAgICAgb3V0cHV0ID0gcnVuX2dwZyAi LS12ZXJpZnkgI3tzaWduYXR1cmVfZm4ucGF0aH0iCisgICAgICBzaWduZWRfdGV4dF9kYXRhID0g bmlsCisgICAgICBwbGFpbl9kYXRhID0gR1BHTUU6OkRhdGEuZW1wdHkKICAgICBlbmQKLQotICAg IHNlbGYudmVyaWZpZWRfb2s/IG91dHB1dCwgJD8KKyAgICBiZWdpbgorICAgICAgY3R4LnZlcmlm eShzaWdfZGF0YSwgc2lnbmVkX3RleHRfZGF0YSwgcGxhaW5fZGF0YSkKKyAgICByZXNjdWUgR1BH TUU6OkVycm9yID0+IGV4YworICAgICAgcmV0dXJuIHVua25vd25fc3RhdHVzIGV4Yy5tZXNzYWdl IAorICAgIGVuZAorICAgIHNlbGYudmVyaWZpZWRfb2s/IGN0eC52ZXJpZnlfcmVzdWx0CiAgIGVu ZAogCiAgICMjIHJldHVybnMgZGVjcnlwdGVkX21lc3NhZ2UsIHN0YXR1cywgZGVzYywgbGluZXMK ICAgZGVmIGRlY3J5cHQgcGF5bG9hZCwgYXJtb3I9ZmFsc2UgIyBhIFJ1YnlNYWlsOjpNZXNzYWdl IG9iamVjdAotICAgIHJldHVybiB1bmtub3duX3N0YXR1cyhjYW50X2ZpbmRfYmluYXJ5KSB1bmxl c3MgQGNtZAotCi0gICAgcGF5bG9hZF9mbiA9IFRlbXBmaWxlLm5ldyhbInJlZHdvb2QucGF5bG9h ZCIsICIuYXNjIl0pCi0gICAgcGF5bG9hZF9mbi53cml0ZSBwYXlsb2FkLnRvX3MKLSAgICBwYXls b2FkX2ZuLmNsb3NlCi0KLSAgICBvdXRwdXRfZm4gPSBUZW1wZmlsZS5uZXcgInJlZHdvb2Qub3V0 cHV0IgotICAgIG91dHB1dF9mbi5jbG9zZQotCi0gICAgbWVzc2FnZSA9IHJ1bl9ncGcgIi0tb3V0 cHV0ICN7b3V0cHV0X2ZuLnBhdGh9IC0tc2tpcC12ZXJpZnkgLS15ZXMgLS1kZWNyeXB0ICN7cGF5 bG9hZF9mbi5wYXRofSIsIDppbnRlcmFjdGl2ZSA9PiB0cnVlCi0KLSAgICB1bmxlc3MgJD8uc3Vj Y2Vzcz8KLSAgICAgIGluZm8gIkVycm9yIHdoaWxlIHJ1bm5pbmcgZ3BnOiAje21lc3NhZ2V9Igot ICAgICAgcmV0dXJuIENodW5rOjpDcnlwdG9Ob3RpY2UubmV3KDppbnZhbGlkLCAiVGhpcyBtZXNz YWdlIGNvdWxkIG5vdCBiZSBkZWNyeXB0ZWQiLCBtZXNzYWdlLnNwbGl0KCJcbiIpKQorICAgIHJl dHVybiB1bmtub3duX3N0YXR1cyhjYW50X2ZpbmRfZ3BnbWUpIHVubGVzcyBAZ3BnbWVfcHJlc2Vu dAorCisgICAgZ3BnX29wdHMgPSB7OnByb3RvY29sID0+IEdQR01FOjpQUk9UT0NPTF9PcGVuUEdQ fQorICAgIGdwZ19vcHRzID0gSG9va01hbmFnZXIucnVuKCJncGctb3B0aW9ucyIsIAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHs6b3BlcmF0aW9uID0+ICJkZWNyeXB0IiwgOm9wdGlv bnMgPT4gZ3BnX29wdHN9KSB8fCBncGdfb3B0cworICAgIGN0eCA9IEdQR01FOjpDdHgubmV3KGdw Z19vcHRzKSAKKyAgICBjaXBoZXJfZGF0YSA9IEdQR01FOjpEYXRhLmZyb21fc3RyKGZvcm1hdF9w YXlsb2FkKHBheWxvYWQpKQorICAgIHBsYWluX2RhdGEgPSBHUEdNRTo6RGF0YS5lbXB0eQorICAg IGJlZ2luCisgICAgICBjdHguZGVjcnlwdF92ZXJpZnkoY2lwaGVyX2RhdGEsIHBsYWluX2RhdGEp CisgICAgcmVzY3VlIEdQR01FOjpFcnJvciA9PiBleGMKKyAgICAgIGluZm8gIkVycm9yIHdoaWxl IHJ1bm5pbmcgZ3BnOiAje2V4Yy5tZXNzYWdlfSIKKyAgICAgIHJldHVybiBDaHVuazo6Q3J5cHRv Tm90aWNlLm5ldyg6aW52YWxpZCwgIlRoaXMgbWVzc2FnZSBjb3VsZCBub3QgYmUgZGVjcnlwdGVk IiwgZXhjLm1lc3NhZ2UpCiAgICAgZW5kCi0KLSAgICBvdXRwdXQgPSBJTy5yZWFkIG91dHB1dF9m bi5wYXRoCisgICAgc2lnID0gc2VsZi52ZXJpZmllZF9vaz8gY3R4LnZlcmlmeV9yZXN1bHQKKyAg ICBwbGFpbl9kYXRhLnNlZWsoMCwgSU86OlNFRUtfU0VUKQorICAgIG91dHB1dCA9IHBsYWluX2Rh dGEucmVhZAogICAgIG91dHB1dC5mb3JjZV9lbmNvZGluZyBFbmNvZGluZzo6QVNDSUlfOEJJVCBp ZiBvdXRwdXQucmVzcG9uZF90bz8gOmZvcmNlX2VuY29kaW5nCiAKKyAgICAjIyBUT0RPOiB0ZXN0 IHRvIHNlZSBpZiBpdCBpcyBzdGlsbCBuZWNlc3NhcnkgdG8gZG8gYSAybmQgcnVuIGlmIHZlcmlm eQorICAgICMjIGZhaWxzLgorICAgICMKICAgICAjIyBjaGVjayBmb3IgYSB2YWxpZCBzaWduYXR1 cmUgaW4gYW4gZXh0cmEgcnVuIGJlY2F1c2UgZ3BnIGFib3J0cyBpZiB0aGUKICAgICAjIyBzaWdu YXR1cmUgY2Fubm90IGJlIHZlcmlmaWVkIChidXQgaXQgaXMgc3RpbGwgYWJsZSB0byBkZWNyeXB0 KQotICAgIHNpZ291dHB1dCA9IHJ1bl9ncGcgIiN7cGF5bG9hZF9mbi5wYXRofSIKLSAgICBzaWcg PSBzZWxmLnZlcmlmaWVkX29rPyBzaWdvdXRwdXQsICQ/CisgICAgI3NpZ291dHB1dCA9IHJ1bl9n cGcgIiN7cGF5bG9hZF9mbi5wYXRofSIKKyAgICAjc2lnID0gc2VsZi5vbGRfdmVyaWZpZWRfb2s/ IHNpZ291dHB1dCwgJD8KIAogICAgIGlmIGFybW9yCiAgICAgICBtc2cgPSBSTWFpbDo6TWVzc2Fn ZS5uZXcKQEAgLTIwNyw4ICsyMzAsOCBAQCBwcml2YXRlCiAgICAgQ2h1bms6OkNyeXB0b05vdGlj ZS5uZXcgOnVua25vd24sICJVbmFibGUgdG8gZGV0ZXJtaW5lIHZhbGlkaXR5IG9mIGNyeXB0b2dy YXBoaWMgc2lnbmF0dXJlIiwgbGluZXMKICAgZW5kCiAKLSAgZGVmIGNhbnRfZmluZF9iaW5hcnkK LSAgICBbIkNhbid0IGZpbmQgZ3BnIGJpbmFyeSBpbiBwYXRoLiJdCisgIGRlZiBjYW50X2ZpbmRf Z3BnbWUKKyAgICBbIkNhbid0IGZpbmQgZ3BnbWUgZ2VtLiJdCiAgIGVuZAogCiAgICMjIGhlcmUn cyB3aGVyZSB3ZSBtdW5nZSBybWFpbCBvdXRwdXQgaW50byB0aGUgZm9ybWF0IHRoYXQgc2lnbmVk L2VuY3J5cHRlZApAQCAtMjE3LDYgKzI0MCwyOCBAQCBwcml2YXRlCiAgICAgcGF5bG9hZC50b19z LmdzdWIoLyhefFteXHJdKVxuLywgIlxcMVxyXG4iKQogICBlbmQKIAorICAjIHJlbW92ZSB0aGUg aGV4IGtleV9pZCBhbmQgaW5mbyBpbiAoKQorICBkZWYgc2ltcGxpZnlfc2lnX2xpbmUgc2lnX2xp bmUKKyAgICBzaWdfbGluZSA9IHNpZ19saW5lLnN1YigvZnJvbSBbMC05QS1GXXsxNn0gLywgImZy b20gIikKKyAgICBzaWdfbGluZS5zdWIoL1woLitcKSA8LywgIjwiKQorICBlbmQKKworICBkZWYg c2lnX291dHB1dF9saW5lcyBzaWduYXR1cmUKKyAgICB0aW1lX2xpbmUgPSAiU2lnbmF0dXJlIG1h ZGUgIiArIHNpZ25hdHVyZS50aW1lc3RhbXAuc3RyZnRpbWUoIiVhICVkICViICVZICVIOiVNOiVT ICVaIikgKworICAgICAgICAgICAgICAgICIgdXNpbmcga2V5IElEICIgKyBzaWduYXR1cmUuZmlu Z2VycHJpbnRbLTguLi0xXQorICAgIGZpcnN0X3NpZyA9IHNpZ25hdHVyZS50b19zLnN1YigvZnJv bSBbMC05QS1GXXsxNn0gLywgJ2Zyb20gIicpICsgJyInCisgICAgb3V0cHV0X2xpbmVzID0gW3Rp bWVfbGluZSwgZmlyc3Rfc2lnXQorCisgICAgY3R4ID0gR1BHTUU6OkN0eC5uZXcKKyAgICBpZiBm cm9tX2tleSA9IGN0eC5nZXRfa2V5KHNpZ25hdHVyZS5maW5nZXJwcmludCkKKyAgICAgIGlmIGZy b21fa2V5LnVpZHMubGVuZ3RoID4gMQorICAgICAgICBha2FfbGlzdCA9IGZyb21fa2V5LnVpZHNb MS4uLTFdCisgICAgICAgIGFrYV9saXN0LmVhY2ggeyB8YWthfCBvdXRwdXRfbGluZXMgPDwgJyAg ICAgICAgICAgICAgICBha2EgIicgKyBha2EudWlkICsgJyInIH0KKyAgICAgIGVuZAorICAgIGVu ZAorICAgIG91dHB1dF9saW5lcworICBlbmQKKwogICAjIGxvZ2ljIGlzOgogICAjIGlmICAgIGdw Z2tleSBzZXQgZm9yIHRoaXMgYWNjb3VudCwgdGhlbiB1c2UgdGhhdAogICAjIGVsc2lmIG9ubHkg b25lIGFjY291bnQsICAgICAgICAgICAgdGhlbiBsZWF2ZSBibGFuayBzbyBncGcgZGVmYXVsdCB3 aWxsIGJlIHVzZXIKQEAgLTIyNCwzMCArMjY5LDE0IEBAIHByaXZhdGUKICAgZGVmIGdlbl9zaWdu X3VzZXJfb3B0cyBmcm9tCiAgICAgYWNjb3VudCA9IEFjY291bnRNYW5hZ2VyLmFjY291bnRfZm9y IGZyb20KICAgICBpZiAhYWNjb3VudC5ncGdrZXkubmlsPwotICAgICAgb3B0cyA9ICItLWxvY2Fs LXVzZXIgJyN7YWNjb3VudC5ncGdrZXl9JyIKKyAgICAgIG9wdHMgPSB7OnNpZ25lcnMgPT4gYWNj b3VudC5ncGdrZXl9CiAgICAgZWxzaWYgQWNjb3VudE1hbmFnZXIudXNlcl9lbWFpbHMubGVuZ3Ro ID09IDEKICAgICAgICMgb25seSBvbmUgYWNjb3VudAotICAgICAgb3B0cyA9ICIiCisgICAgICBv cHRzID0ge30KICAgICBlbHNlCi0gICAgICBvcHRzID0gIi0tbG9jYWwtdXNlciAnI3tmcm9tfSci IAorICAgICAgb3B0cyA9IHs6c2lnbmVycyA9PiBmcm9tfQogICAgIGVuZAogICAgIG9wdHMKICAg ZW5kCi0KLSAgZGVmIHJ1bl9ncGcgYXJncywgb3B0cz17fQotICAgIGFyZ3MgPSBIb29rTWFuYWdl ci5ydW4oImdwZy1hcmdzIiwgeyA6YXJncyA9PiBhcmdzIH0pIHx8IGFyZ3MKLSAgICBjbWQgPSAi TENfTUVTU0FHRVM9QyAje0BjbWR9ICN7YXJnc30iCi0gICAgaWYgb3B0c1s6aW50ZXJhY3RpdmVd ICYmIEJ1ZmZlck1hbmFnZXIuaW5zdGFudGlhdGVkPwotICAgICAgb3V0cHV0X2ZuID0gVGVtcGZp bGUubmV3ICJyZWR3b29kLm91dHB1dCIKLSAgICAgIG91dHB1dF9mbi5jbG9zZQotICAgICAgY21k ICs9ICIgPiAje291dHB1dF9mbi5wYXRofSAyPiAvZGV2L251bGwiCi0gICAgICBkZWJ1ZyAiY3J5 cHRvOiBydW5uaW5nOiAje2NtZH0iCi0gICAgICBCdWZmZXJNYW5hZ2VyLnNoZWxsX291dCBjbWQK LSAgICAgIElPLnJlYWQob3V0cHV0X2ZuLnBhdGgpIHJlc2N1ZSAiY2FuJ3QgcmVhZCBvdXRwdXQi Ci0gICAgZWxzZQotICAgICAgZGVidWcgImNyeXB0bzogcnVubmluZzogI3tjbWR9IgotICAgICAg YCN7Y21kfSAyPiAvZGV2L251bGxgCi0gICAgZW5kCi0gIGVuZAogZW5kCiBlbmQKLS0gCjEuNy4x Cgo= --0016e64ccc6abe369a049467f258 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel --0016e64ccc6abe369a049467f258--