diff --git a/app/models/post.rb b/app/models/post.rb index ca6e1ee83..425c6c199 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -9,7 +9,6 @@ class Post xml_accessor :person, :as => Person key :person_id, ObjectId - key :owner_signature, String many :comments, :class_name => 'Comment', :foreign_key => :post_id belongs_to :person, :class_name => 'Person' @@ -43,10 +42,28 @@ class Post self.newest(Person.first(:email => email)) end +#ENCRYPTION + before_save :sign_if_mine + key :owner_signature, String def verify_signature - GPGME.verify(owner + validity = true + signed_text = GPGME.verify(){ |signature| + if signature.validity == GPGME::VALIDITY_FULL + validity = validity && true + else + validity = validity && false + end + } + validity = validity && (signed_text == to_xml.to_s) + validity end protected + def sign_if_mine + if self.person == User.first + self.owner_signature = GPGME::sign(to_xml.to_s,nil,{:armor=> true}) + end + end + def destroy_comments comments.each{|c| c.destroy} end diff --git a/gpg/diaspora-test/random_seed b/gpg/diaspora-test/random_seed index 506a7c400..bf240de51 100644 Binary files a/gpg/diaspora-test/random_seed and b/gpg/diaspora-test/random_seed differ diff --git a/spec/user_encryption_spec.rb b/spec/user_encryption_spec.rb index 02baba68a..d23705946 100644 --- a/spec/user_encryption_spec.rb +++ b/spec/user_encryption_spec.rb @@ -31,7 +31,7 @@ describe 'user encryption' do end it 'should sign a message' do - message = Factory.create(:status_message, :user => @u) + message = Factory.create(:status_message, :person => @u) message.verify_signature.should == true end end