From 6d431e9459a3cafa1ee03d3921b68ed81f884d52 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 13 Jul 2010 11:01:11 -0700 Subject: [PATCH] signing tests sort of almost done --- app/models/post.rb | 10 ++++++---- app/models/user.rb | 4 ++-- gpg/diaspora-test/pubring.gpg | Bin 37204 -> 37824 bytes gpg/diaspora-test/secring.gpg | Bin 659 -> 1332 bytes gpg/diaspora-test/trustdb.gpg | Bin 1440 -> 1520 bytes spec/user_encryption_spec.rb | 16 +++++++++++----- 6 files changed, 19 insertions(+), 11 deletions(-) diff --git a/app/models/post.rb b/app/models/post.rb index 872c3942e..2ca631ad5 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -47,16 +47,18 @@ class Post key :owner_signature, String def verify_signature return false unless owner_signature && person.key_fingerprint - puts to_xml.to_s - puts owner_signature - GPGME::verify(owner_signature, nil, {:armor => true, :always_trust => true}){ |signature| + validity = nil + message = GPGME::verify(owner_signature, nil, {:armor => true, :always_trust => true}){ |signature| puts signature puts signature.inspect - return signature.status == GPGME::GPG_ERR_NO_ERROR && + validity = signature.status == GPGME::GPG_ERR_NO_ERROR && #signature.to_s.include?("Good signature from ") && signature.fpr == person.key_fingerprint #validity = validity && person.key_fingerprint == signature.fpr } + puts message + puts to_xml.to_s + return validity && message == to_xml.to_s #validity = validity && (signed_text == to_xml.to_s) end protected diff --git a/app/models/user.rb b/app/models/user.rb index 0c1f2c599..79172b595 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -91,11 +91,11 @@ class User < Person protected def assign_key - keys = GPGME.list_keys(nil, true) + keys = GPGME.list_keys(real_name, true) if keys.empty? generate_key end - self.key_fingerprint = GPGME.list_keys(nil, true).first.subkeys.first.fingerprint + self.key_fingerprint = GPGME.list_keys(real_name, true).first.subkeys.first.fingerprint end def generate_key diff --git a/gpg/diaspora-test/pubring.gpg b/gpg/diaspora-test/pubring.gpg index 58a5cbaac94eb4c07d5297e2851cf94413bbd804..46e8a37d1e84b145278442b92bfe4314e1562434 100644 GIT binary patch delta 608 zcmV-m0-ycVq5{CD0((ei~sg|LpnAhP#V2Tx@2_hqWX%t$C+G&%hjuBf9t^g!oJv5DMj5D zwWG=;t7e`bGZOAqYTvD=D77*0*TGe30sIJc?MUh?ai|j@I%eeDxlQ(jpy4A<_SHnR zT|hIeQ;;fNXdp*UJ^xKx&WY%9!;4? uH9f#xn3Nr00$W$=L*8Z<0HB<-PKJ6tWVOk$hoE#2uFdT+X*RPajV=T`ND%q} delta 14 WcmX@GoaxFUrVU!Xo2T__u>b%xa|TZU diff --git a/gpg/diaspora-test/secring.gpg b/gpg/diaspora-test/secring.gpg index eccac99054ce371cce695651ca7c87822f54f8e0..81164ee0e2175f201621b3d36808fc614a4e2428 100644 GIT binary patch delta 658 zcmV;D0&V@11+)sVlLCK~`vgoprn?aW0LIe_oFYf8lpGumRU4joRb1*X<$Y5c-!BFDa$&Jx2ayhJA*!PYv;D*&Lco){d*+OK!gZY?2A z8O+C2HWGOO`v;5v_Ig7)HX=|Oy-K=dbnK$~in+&`T!hQjt7w1g!2QC$*i|V--4?Z@ z$|S31o*y$3?p12vt*0opG4R*HRcQhI2zBj9>ML=m6CgTfy) zM*y7}%kRRBrz_hI#K~#8w>yn2@um`goQTqmH>xKx&WYz@^hX4 sSdo}fpip0AEv=uYF|@M*6$61PgaVPg3>~t6oAe$U{x37%?=|Vk!kg}Ht@==P2xSZajM5$w delta 41 xcmeysy?|SQF})z2nVFH5k%581$2zTJVxag&^)|+d3EZ0>Fcvay)?_Yc0s!4-3n~Br diff --git a/spec/user_encryption_spec.rb b/spec/user_encryption_spec.rb index 784866b6a..f56a3dba7 100644 --- a/spec/user_encryption_spec.rb +++ b/spec/user_encryption_spec.rb @@ -83,12 +83,18 @@ describe 'user encryption' do end it 'should verify a remote signature' do - person = Factory.create(:person, :key_fingerprint => GPGME.list_keys("Ilya").first.subkeys.first.fpr) - message = Factory.create(:status_message, :person => person, - :owner_signature => File.open(File.dirname(__FILE__) + "/fixtures/msg.xml.normal.asc").read) - # :owner_signature => File.open(File.dirname(__FILE__) + "/fixtures/msg.xml.detached.asc").read) + person = Factory.create(:person, + :key_fingerprint => GPGME.list_keys("Remote Friend").first.subkeys.first.fpr, + :profile => Profile.create(:first_name => 'Remote', + :last_name => 'Friend'), + :email => 'somewhere@else.com', + :url => 'http://distant-example.com/', + :key_fingerprint => '57F553EE2C230991566B7C60D3638485F3960087') + puts person.inspect + message = Factory.create(:status_message, :person => person) + message.owner_signature = GPGME.sign(message.to_xml.to_s, nil, {:armor => true, :signers => [person.key]}) + message.save # :owner_signature => File.open(File.dirname(__FILE__) + "/fixtures/msg.xml.detached.asc").read) # :owner_signature => File.open(File.dirname(__FILE__) + "/fixtures/msg.xml.clear.asc").read) - message.verify_signature.should be true end