diff --git a/Rakefile b/Rakefile
index 3cf92aae48eaa18f35accfc5086b5053e33a02e1..1db0cb5f21f6fe147e33e2b6daead187ad479977 100644
--- a/Rakefile
+++ b/Rakefile
@@ -4,5 +4,4 @@
 require File.expand_path('../config/application', __FILE__)
 require 'rake'
 ENV['GNUPGHOME'] = File.expand_path("../../gpg/diaspora-#{Rails.env}/", __FILE__)
-GPGME::check_version({})
 Rails::Application.load_tasks
diff --git a/app/models/person.rb b/app/models/person.rb
index b7bb371dd98ba1e10ef8cb94bbd34421ae86c7e9..c87148b701c85ec4b34c39cca05061067b9b1d17 100644
--- a/app/models/person.rb
+++ b/app/models/person.rb
@@ -5,13 +5,15 @@ class Person
   xml_accessor :_id
   xml_accessor :email
   xml_accessor :url
-  xml_accessor :key_fingerprint
+  xml_accessor :serialized_key
   xml_accessor :profile, :as => Profile
   
   
   key :email, String, :unique => true
   key :url, String
-  key :key_fingerprint, String
+
+  key :serialized_key, String 
+
 
   key :owner_id, ObjectId
   key :user_refs, Integer, :default => 0
@@ -26,26 +28,28 @@ class Person
   timestamps!
 
   before_validation :clean_url
-  validates_presence_of :email, :url, :key_fingerprint, :profile
+
+  validates_presence_of :email, :url, :serialized_key, :profile
   validates_format_of :url, :with =>
      /^(https?):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$/ix
   
 
-  after_destroy :remove_all_traces, :remove_key
-
-  scope :friends, where(:_type => "Person", :active => true)
-
+  after_destroy :remove_all_traces
  
   def real_name
     "#{profile.first_name.to_s} #{profile.last_name.to_s}"
   end
 
   def key
-    GPGME::Ctx.new.get_key key_fingerprint
+    OpenSSL::PKey::RSA.new( serialized_key )
+  end
+
+  def key= new_key
+    raise TypeError unless new_key.class == OpenSSL::PKey::RSA
+    serialized_key = new_key.export
   end
-  
   def export_key
-    GPGME::export(key_fingerprint, :armor => true)
+    key.public_key.export
   end
 
 
@@ -82,6 +86,9 @@ class Person
     end
   end
 
+  def mine?(post)
+    self == post.person
+  end
 
 
   protected
@@ -99,10 +106,4 @@ class Person
     self.posts.delete_all
   end
 
-  def remove_key
-    puts 'Removing key from keyring in test environment' if Rails.env == 'test'
-    ctx = GPGME::Ctx.new
-    ctx.delete_key(key)
-  end
-
  end
diff --git a/app/models/post.rb b/app/models/post.rb
index b1002ce9178bb430142fd36c16aceff28e01cafb..1b4149fdcbfdad5e7547a6d10aea8b1988761b16 100644
--- a/app/models/post.rb
+++ b/app/models/post.rb
@@ -49,24 +49,24 @@ class Post
   end
 
 #ENCRYPTION
-    before_validation :sign_if_mine
-    validates_true_for :creator_signature, :logic => lambda {self.verify_creator_signature}
-    
-    xml_accessor :creator_signature
-    key :creator_signature, String
-    
-    def signable_accessors
-      accessors = self.class.roxml_attrs.collect{|definition| 
-        definition.accessor}
-      accessors.delete 'person'
-      accessors.delete 'creator_signature'
-      accessors
-    end
+  before_validation :sign_if_mine
+  validates_true_for :creator_signature, :logic => lambda {self.verify_creator_signature}
+  
+  xml_accessor :creator_signature
+  key :creator_signature, String
+  
+  def signable_accessors
+    accessors = self.class.roxml_attrs.collect{|definition| 
+      definition.accessor}
+    accessors.delete 'person'
+    accessors.delete 'creator_signature'
+    accessors
+  end
 
-    def signable_string
-      signable_accessors.collect{|accessor| 
-        (self.send accessor.to_sym).to_s}.join ';'
-    end
+  def signable_string
+    signable_accessors.collect{|accessor| 
+      (self.send accessor.to_sym).to_s}.join ';'
+  end
   
   def log_inspection
     Rails.logger.info self.inspect
diff --git a/app/models/profile.rb b/app/models/profile.rb
index bb5176eacf6c660410358a14c1431a6b6e4efefc..23f09448575dd4bcfc7cef5e9c8e4707d671ede8 100644
--- a/app/models/profile.rb
+++ b/app/models/profile.rb
@@ -20,6 +20,10 @@ class Profile
     self._parent_document.id
   end
   
+  def person
+    Person.first(:id => self.person_id)
+  end
+  
   def to_diaspora_xml
     "<post>"+ self.to_xml.to_s + "</post>"
   end
diff --git a/app/models/request.rb b/app/models/request.rb
index f39d1267fbb4fdfc238dad319ab6e98730669de0..2665a3693f3a532721f8773017448d02e639506f 100644
--- a/app/models/request.rb
+++ b/app/models/request.rb
@@ -28,15 +28,23 @@ class Request
   scope :for_user, lambda{ |user| where(:destination_url => user.url) }
   scope :from_user, lambda{ |user| where(:destination_url.ne => user.url) }
 
-  def self.instantiate(options ={})
+  def self.instantiate(options = {})
     person = options[:from]
     self.new(:destination_url => options[:to], :callback_url => person.url, :person => person, :exported_key => person.export_key)
   end
 
   def activate_friend 
-    p = Person.where(:url => self.person.url).first
-    p.active = true
-    p.save
+    from_user = Person.first(:url => self.callback_url).owner
+    puts from_user.inspect
+    from_user.friends << from_user.pending_friends.delete(person)
+  end
+  
+  def set_pending_friend
+    p = Person.first(:id => self.person.id)
+    
+    puts p.inspect
+    self.person.save  #save pending friend
+    
   end
  
 #ENCRYPTION
diff --git a/app/models/retraction.rb b/app/models/retraction.rb
index b096be75db963b363b0417c8e2280e35c9208b5f..9a07de141871993c7a85783137918b001d25480d 100644
--- a/app/models/retraction.rb
+++ b/app/models/retraction.rb
@@ -20,15 +20,23 @@ class Retraction
   attr_accessor :type
 
   def perform
-    return unless verify_signature(@creator_signature, Post.first(:id => post_id).person)
-     
     begin
+      return unless signature_valid?
       self.type.constantize.destroy(self.post_id)
     rescue NameError
       Rails.logger.info("Retraction for unknown type recieved.")
     end
   end
 
+  def signature_valid?
+    target = self.type.constantize.first(:id => self.post_id)
+    if target.is_a? Person
+      verify_signature(@creator_signature, self.type.constantize.first(:id => self.post_id))
+    else 
+      verify_signature(@creator_signature, self.type.constantize.first(:id => self.post_id).person)
+    end
+  end
+
   def self.person_id_from(object)
     if object.is_a? Person
       object.id
diff --git a/app/models/user.rb b/app/models/user.rb
index 8a21f509a91bc7b80d605ffb9dffb10f025ccbbf..017d31a059904c083724dc3d0abeb4a8839a569b 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -10,8 +10,10 @@ class User
   one :person, :class_name => 'Person', :foreign_key => :owner_id
   many :friends, :in => :friend_ids, :class_name => 'Person'
 
-  #before_validation_on_create :assign_key
+  before_validation_on_create :assign_key
   before_validation :do_bad_things
+  
+  ######## Posting ########
 
 
   def method_missing(method, *args)
@@ -32,7 +34,7 @@ class User
   ######### Friend Requesting
   def send_friend_request_to(friend_url)
     unless Person.where(:url => friend_url).first
-      p = Request.instantiate(:to => friend_url, :from => self)
+      p = Request.instantiate(:to => friend_url, :from => self.person)
       if p.save
         p.push_to_url friend_url
       end
@@ -53,18 +55,22 @@ class User
   def ignore_friend_request(friend_request_id)
     request = Request.first(:id => friend_request_id)
     person = request.person
-    person.destroy unless person.active
+    person.destroy unless self.friends.include? person
     request.destroy
   end
 
   def receive_friend_request(friend_request)
     Rails.logger.info("receiving friend request #{friend_request.to_json}")
-    GPGME.import(friend_request.exported_key)
+    
+    friend_request.person.serialized_key = friend_request.exported_key
     if Request.where(:callback_url => friend_request.callback_url).first
       friend_request.activate_friend
       friend_request.destroy
     else
       friend_request.person.save
+      
+      friend_request.create_pending_friend
+      
       friend_request.save
     end
   end
@@ -92,9 +98,7 @@ class User
 
   
   ###Helpers############
-  def mine?(post)
-    self == post.person
-  end
+
 
   def terse_url
     terse= self.url.gsub(/https?:\/\//, '')
@@ -114,32 +118,11 @@ class User
   protected
   
   def assign_key
-    keys = GPGME.list_keys(self.real_name, true)
-    if keys.empty?
-      generate_key
-    end
-    self.key_fingerprint = GPGME.list_keys(self.real_name, true).first.subkeys.first.fingerprint
+    self.person.serialized_key ||= generate_key.export
   end
 
   def generate_key
-    puts "Generating key"
-    puts paramstring
-    ctx = GPGME::Ctx.new
-    ctx.genkey(paramstring, nil, nil)
-    
+    OpenSSL::PKey::RSA::generate 1024 
   end
 
-  def paramstring
-"<GnupgKeyParms format=\"internal\">
-Key-Type: DSA
-Key-Length: 512
-Subkey-Type: ELG-E
-Subkey-Length: 512
-Name-Real: #{self.real_name}
-Name-Comment: #{self.url}
-Name-Email: #{self.email}
-Expire-Date: 0
-</GnupgKeyParms>"
-
-  end
 end
diff --git a/config/environment.rb b/config/environment.rb
index cfcd106aa191f79dd7743c1a1a3da300fb5423ea..948fbbca41cfc4d2bc55b379347821739eb08d3b 100644
--- a/config/environment.rb
+++ b/config/environment.rb
@@ -4,5 +4,4 @@ Haml::Template.options[:format] = :html5
 # Initialize the rails application
 Diaspora::Application.initialize!
 
-ENV['GNUPGHOME'] = File.expand_path("../../gpg/diaspora-#{Rails.env}/", __FILE__)
-GPGME::check_version({})
+
diff --git a/config/environments/test.rb b/config/environments/test.rb
index 2611a12faa470a0edd87bc2b25e19cc315f88dc0..7f40c884b449e39b32d9f507ae9b5573539769c6 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -26,8 +26,7 @@ Diaspora::Application.configure do
   config.action_mailer.delivery_method = :test
   config.threadsafe!
   
-  ENV['GNUPGHOME'] = File.expand_path("../../gpg/diaspora-#{Rails.env}/", __FILE__)
-  GPGME::check_version({})
+
   # Use SQL instead of Active Record's schema dumper when creating the test database.
   # This is necessary if your schema can't be completely dumped by the schema dumper,
   # like if you have constraints or database-specific column types
diff --git a/db/seeds/backer.rb b/db/seeds/backer.rb
index beb6fd9f0e427e5e9efd92b268bab54b96aabad7..5198f592ba4e1c5e84a6f914cbcc769a167d66ff 100644
--- a/db/seeds/backer.rb
+++ b/db/seeds/backer.rb
@@ -7,9 +7,6 @@
 #   Mayor.create(:name => 'Daley', :city => citie
 
 require 'config/environment'
-ENV['GNUPGHOME'] = File.expand_path("../../../gpg/diaspora-#{Rails.env}/", __FILE__)
-GPGME::check_version({})
-
 
 def create(backer_number)
   backer_info = [ [5072,"George", "Washington"],
diff --git a/db/seeds/dev.rb b/db/seeds/dev.rb
index 8605f63f467ad14c238cfb3628aeb704aeaee150..a7ce25624dddf8db70f5ef152b31c9278ea33af9 100644
--- a/db/seeds/dev.rb
+++ b/db/seeds/dev.rb
@@ -7,8 +7,7 @@
 #   Mayor.create(:name => 'Daley', :city => citie
 
 require 'config/environment'
-ENV['GNUPGHOME'] = File.expand_path("../../../gpg/diaspora-#{Rails.env}/", __FILE__)
-GPGME::check_version({})
+
 # Create seed user
 user = User.create( :email => "robert@joindiaspora.com", :password => "evankorth", :profile => Profile.new( :first_name => "bobert", :last_name => "brin" ))
 
diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb
index 03ca0a2862b3192e97a9afe0dd972310b9d514d5..364580feda7df0b0e2718ef9737132997acac520 100644
--- a/db/seeds/tom.rb
+++ b/db/seeds/tom.rb
@@ -7,8 +7,7 @@
 #   Mayor.create(:name => 'Daley', :city => citie
 
 require 'config/environment'
-ENV['GNUPGHOME'] = File.expand_path("../../../gpg/diaspora-#{Rails.env}/", __FILE__)
-GPGME::check_version({})
+
 # Create seed user
 user = User.create( :email => "tom@tom.joindiaspora.com", :password => "evankorth", :url => "http://tom.joindiaspora.com/", :profile => Profile.new( :first_name => "Alexander", :last_name => "Hamiltom" ))
 
diff --git a/gpg/diaspora-development/EMPTY b/gpg/diaspora-development/EMPTY
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/gpg/diaspora-production/EMPTY b/gpg/diaspora-production/EMPTY
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/gpg/diaspora-test/EMPTY b/gpg/diaspora-test/EMPTY
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/gpg/diaspora-test/pubring.gpg b/gpg/diaspora-test/pubring.gpg
deleted file mode 100644
index cabfdca741cbcbb6b7cfde5479c8b8e068be8eb6..0000000000000000000000000000000000000000
Binary files a/gpg/diaspora-test/pubring.gpg and /dev/null differ
diff --git a/gpg/diaspora-test/secring.gpg b/gpg/diaspora-test/secring.gpg
deleted file mode 100644
index c27cdfcaddaf43e55dd52eff4c78e9e7f6b844a1..0000000000000000000000000000000000000000
Binary files a/gpg/diaspora-test/secring.gpg and /dev/null differ
diff --git a/gpg/diaspora-test/trustdb.gpg b/gpg/diaspora-test/trustdb.gpg
deleted file mode 100644
index 5bbf2835afb623d9680cdf401eff2f0121fd1bfc..0000000000000000000000000000000000000000
Binary files a/gpg/diaspora-test/trustdb.gpg and /dev/null differ
diff --git a/lib/diaspora/webhooks.rb b/lib/diaspora/webhooks.rb
index c6003e9578087734fc850a435f49ce10382f5c4f..d6e8513c3f269e2afd53765b2c90fcb0cc1ee32e 100644
--- a/lib/diaspora/webhooks.rb
+++ b/lib/diaspora/webhooks.rb
@@ -7,7 +7,7 @@ module Diaspora
         @@queue = MessageHandler.new
 
         def notify_people
-          if self.person_id == User.owner.id
+          if self.person_id == User.owner.person.id
             push_to(people_with_permissions)
           end
         end
@@ -39,7 +39,8 @@ module Diaspora
         end
 
         def people_with_permissions
-          Person.friends.all
+          puts "#{self.person.owner.friends.count} foo"
+          self.person.owner.friends.all
         end
 
         def self.build_xml_for(posts)
diff --git a/lib/encryptable.rb b/lib/encryptable.rb
index 632c3e6a234967301f88ea354b5b92c152f1fff2..9522f436fb18e3e497adbd50dc7e477b8490502c 100644
--- a/lib/encryptable.rb
+++ b/lib/encryptable.rb
@@ -7,21 +7,27 @@
     end
     
     def verify_signature(signature, person)
-      return false unless signature && person.key_fingerprint
-      validity = nil
+      if person.nil?
+        Rails.logger.info("Verifying sig on #{signable_string} but no person is here")
+        return false
+      elsif person.key.nil?
+        Rails.logger.info("Verifying sig on #{signable_string} but #{person.real_name} has no key")
+        return false
+      elsif signature.nil?
+        Rails.logger.info("Verifying sig on #{signable_string} but #{person.real_name} did not sign")
+        return false
+      end
       Rails.logger.info("Verifying sig on #{signable_string} from person #{person.real_name}")
-      GPGME::verify(signature, signable_string, 
-        {:armor => true, :always_trust => true}){ |signature_analysis|
-        #puts signature_analysis
-        validity =  signature_analysis.status == GPGME::GPG_ERR_NO_ERROR &&
-            signature_analysis.fpr == person.key_fingerprint
-      }
-      return validity
+      validity = person.key.verify "SHA", Base64.decode64(signature), signable_string
+      Rails.logger.info("Validity: #{validity}")
+      validity
     end
     
     protected
     def sign_if_mine
       if self.person == User.owner
+
+
         self.creator_signature = sign
       end
     end
@@ -32,8 +38,8 @@
 
     def sign_with_key(key)
       Rails.logger.info("Signing #{signable_string}")
-      GPGME::sign(signable_string,nil,
-          {:armor=> true, :mode => GPGME::SIG_MODE_DETACH, :signers => [key]})
+      Base64.encode64(key.sign "SHA", signable_string)
+      
     end
   end
 
diff --git a/lib/tasks/gpg.rake b/lib/tasks/gpg.rake
deleted file mode 100644
index 9d7e822237e0d72c321fd5ccab7629f5d42f0248..0000000000000000000000000000000000000000
--- a/lib/tasks/gpg.rake
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace :gpg do
-  desc 'Clear the gpg keyrings'
-  task :clear do
-    ctx = GPGME::Ctx.new
-    keys = ctx.keys
-    keys.each{|k| ctx.delete_key(k, true)}
-  end
-end
diff --git a/spec/controllers/sockets_controller_spec.rb b/spec/controllers/sockets_controller_spec.rb
index 71310c94e5ddae947074ee4090f0fef941e6f607..aba8d9f5212b73a9a119e98a18955e22276acc97 100644
--- a/spec/controllers/sockets_controller_spec.rb
+++ b/spec/controllers/sockets_controller_spec.rb
@@ -4,7 +4,7 @@ describe 'SocketsController' do
   render_views  
   before do
     @user = Factory.create(:user)
-    @user.person.save
+    @user.person.save 
     SocketsController.unstub!(:new)
     #EventMachine::WebSocket.stub!(:start)
     @controller = SocketsController.new
diff --git a/spec/factories.rb b/spec/factories.rb
index 284a678135d5059c4f6b918c37aac60ef2dae9e4..4da77078c7554ca46793ff91b8677fdc56ce2b42 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -2,8 +2,6 @@
 #http://github.com/thoughtbot/factory_girl
 # http://railscasts.com/episodes/158-factories-not-fixtures
 #This inclsion, because gpg-agent(not needed) is never run and hence never sets any env. variables on a MAC
-ENV['GNUPGHOME'] = File.expand_path("../../gpg/diaspora-#{Rails.env}/", __FILE__)
-GPGME::check_version({})
 
 Factory.define :profile do |p|
   p.first_name "Robert"
@@ -13,8 +11,13 @@ end
 Factory.define :person do |p|
   p.sequence(:email) {|n| "bob-person-#{n}@aol.com"}
   p.sequence(:url)  {|n| "http://google-#{n}.com/"}
-  p.key_fingerprint GPGME::list_keys("Wesley").first.subkeys.first.fingerprint
   p.profile Factory.create(:profile)
+
+  p.serialized_key OpenSSL::PKey::RSA.generate(1024).public_key.export
+end
+
+Factory.define :person_with_private_key, :parent => :person do |p|
+  p.serialized_key OpenSSL::PKey::RSA.generate(1024).export
 end
 
 Factory.define :user do |u|
@@ -22,7 +25,7 @@ Factory.define :user do |u|
   u.password "bluepin7"
   u.password_confirmation "bluepin7"
 
-  u.sequence(:person) {|p| Factory.create(:person, :email => "robert-#{p}@grimm.org")}
+  u.sequence(:person) {|p| Factory.create(:person_with_private_key, :email => "robert-#{p}@grimm.org")}
 end
 
 Factory.define :status_message do |m|
diff --git a/spec/lib/web_hooks_spec.rb b/spec/lib/web_hooks_spec.rb
index d1819980f9e54104f29410f054d3819b575d8508..6a7c34179c7a8e684b0b596183ab08de7798cf05 100644
--- a/spec/lib/web_hooks_spec.rb
+++ b/spec/lib/web_hooks_spec.rb
@@ -7,12 +7,15 @@ describe Diaspora do
   describe Webhooks do
     before do
       @user = Factory.create(:user, :email => "bob@aol.com")
+      @user.person.save
       @person = Factory.create(:person)
+      @user.friends << @person
+      @user.save
     end
 
     describe "body" do
       before do
-        @post = Factory.create(:status_message, :person => @user)
+        @post = Factory.create(:status_message, :person => @user.person)
       end
 
       it "should add the following methods to Post on inclusion" do
@@ -26,16 +29,16 @@ describe Diaspora do
       end
 
       it "should retrieve all valid person endpoints" do
-        Factory.create(:person, :url => "http://www.bob.com/")
-        Factory.create(:person, :url => "http://www.alice.com/")
-        Factory.create(:person, :url => "http://www.jane.com/")
-
-        non_users = Person.where( :_type => "Person" ).all
-        @post.people_with_permissions.should == non_users
+        @user.friends << Factory.create(:person, :url => "http://www.bob.com/")
+        @user.friends << Factory.create(:person, :url => "http://www.alice.com/")
+        @user.friends << Factory.create(:person, :url => "http://www.jane.com/")
+        @user.save
+        
+        @post.people_with_permissions.should == @user.friends.map{|friend| friend.url + "receive/ "}
       end
 
       it "should send an owners post to their people" do
-        q = Post.send(:class_variable_get, :@@queue)
+        q = Post.send(:class_variable_get, :@@queue)      
         q.should_receive :process
         @post.save
       end
@@ -48,7 +51,8 @@ describe Diaspora do
       end
 
       it "should ensure one url is created for every person" do
-        5.times {Factory.create(:person)}
+        5.times {@user.friends << Factory.create(:person)}
+        @user.save
         @post.people_with_permissions.size.should == 6
       end
 
diff --git a/spec/models/comments_spec.rb b/spec/models/comments_spec.rb
index d1a7d2135fed5749616f993d70d4c959d77f3612..d40a35b3588583eec423b6483fa596c68cd22b37 100644
--- a/spec/models/comments_spec.rb
+++ b/spec/models/comments_spec.rb
@@ -7,7 +7,7 @@ describe Comment do
       @user.person.save
     end
     it "should be able to comment on his own status" do
-      status = Factory.create(:status_message, :person => @user)
+      status = Factory.create(:status_message, :person => @user.person)
       status.comments.should == []
 
       @user.comment "Yeah, it was great", :on => status
@@ -17,14 +17,14 @@ describe Comment do
     it "should be able to comment on a person's status" do
       person= Factory.create :person
       status = Factory.create(:status_message, :person => person)
-      @user.comment "sup dog", :on => status
+      @user.person.comment "sup dog", :on => status
       
       StatusMessage.first.comments.first.text.should == "sup dog"
-      StatusMessage.first.comments.first.person.should == @user
+      StatusMessage.first.comments.first.person.should == @user.person
     end
 
     it 'should not send out comments when we have no people' do
-      status = Factory.create(:status_message, :person => @user)
+      status = Factory.create(:status_message, :person => @user.person)
       Comment.send(:class_variable_get, :@@queue).should_not_receive(:add_post_request)
       @user.comment "sup dog", :on => status
     end
@@ -34,18 +34,18 @@ describe Comment do
         @person = Factory.create(:person)
         @person_two = Factory.create(:person)
         @person_status = Factory.create(:status_message, :person => @person)
-        @user_status = Factory.create(:status_message, :person => @user)
+        @user_status = Factory.create(:status_message, :person => @user.person)
       end
     
       it "should send a user's comment on a person's post to that person" do
         Comment.send(:class_variable_get, :@@queue).should_receive(:add_post_request)
-        @user.comment "yo", :on => @person_status
+        @user.person.comment "yo", :on => @person_status
       end
     
       it 'should send a user comment on his own post to lots of people' do
         allowed_urls = @user_status.people_with_permissions.map!{|x| x = x.url + "receive/"}
         Comment.send(:class_variable_get, :@@queue).should_receive(:add_post_request).with(allowed_urls, anything )
-        @user.comment "yo", :on => @user_status
+        @user.person.comment "yo", :on => @user_status
       end
     
       it 'should send a comment a person made on your post to all people' do
diff --git a/spec/models/request_spec.rb b/spec/models/request_spec.rb
index 788b7aee5451794a0ba57b94642231bb49a853f4..a2f344b22f2626e7064e8c05e64353f3ff63cc59 100644
--- a/spec/models/request_spec.rb
+++ b/spec/models/request_spec.rb
@@ -36,11 +36,11 @@ describe Request do
 
   it 'should allow me to see only friend requests sent to me' do 
     user = Factory.create(:user)
-    remote_person = Factory.build(:user, :email => "robert@grimm.com", :url => "http://king.com/")
+    remote_person = Factory.build(:person, :email => "robert@grimm.com", :url => "http://king.com/")
     
-    Request.instantiate(:from => user, :to => remote_person.url).save
-    Request.instantiate(:from => user, :to => remote_person.url).save
-    Request.instantiate(:from => user, :to => remote_person.url).save
+    Request.instantiate(:from => user.person, :to => remote_person.url).save
+    Request.instantiate(:from => user.person, :to => remote_person.url).save
+    Request.instantiate(:from => user.person, :to => remote_person.url).save
     Request.instantiate(:from => remote_person, :to => user.url).save
       
     Request.for_user(user).all.count.should == 1
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 8124f90bdd8e9646a881f744b1e44942de2ab600..0356a06ee85c82fad7387bc252b19f81813d3c2c 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -14,23 +14,23 @@ describe User do
     end
 
     it "should be able to accept a pending friend request" do
-      friend = Factory.create(:person, :active => false)
+      friend = Factory.create(:person)
       r = Request.instantiate(:to => @user.url, :from => friend)
       r.save
       Person.all.count.should == 2
       Request.for_user(@user).all.count.should == 1
       @user.accept_friend_request(r.id)
       Request.for_user(@user).all.count.should == 0
-      Person.where(:id => friend.id).first.active.should == true
+      #Person.where(:id => friend.id).first.active.should == true
     end
 
     it 'should be able to ignore a pending friend request' do
-      friend = Factory.create(:person, :active => false)
+      friend = Factory.create(:person)
       r = Request.instantiate(:to => @user.url, :from => friend)
       r.save
 
       Person.count.should == 2
-      friend.active.should == false
+      #friend.active.should == false
 
       @user.ignore_friend_request(r.id)
 
@@ -45,6 +45,8 @@ describe User do
     end
 
     it 'should be able to give me the terse url for webfinger' do
+     @user.person.url = "http://example.com/"
+
       @user.terse_url.should == 'example.com'
     end
 
@@ -56,7 +58,7 @@ describe User do
       queue = Profile.send :class_variable_get, :@@queue
       queue.should_receive(:process)
       
-      @user.update_profile(updated_profile).should == true
+      @user.person.update_profile(updated_profile).should == true
       @user.profile.image_url.should == "http://clown.com"
     end
   end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 7194908bb1e09ca77c7143f8bd9a39d9c430ef49..9eba3000c0b762a42dacd51f26ca4373d115261b 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -52,11 +52,12 @@ end
     
     post_models.each{ | model|
       model.any_instance.stubs(:verify_creator_signature).returns(true)
+      model.any_instance.stubs(:verify_signature).returns(true)
     }
 
+    Retraction.any_instance.stubs(:verify_signature).returns(true)
+    Request.any_instance.stubs(:verify_signature).returns(true)
     Comment.any_instance.stubs(:verify_post_creator_signature).returns(true)
-    Person.any_instance.stubs(:remove_key).returns(true)
-    User.any_instance.stubs(:remove_key).returns(true)
   end
 
   def unstub_mocha_stubs
diff --git a/spec/user_encryption_spec.rb b/spec/user_encryption_spec.rb
index 1502565f0280725754cee8771fc0d5c330d5264d..729920af265efb745a4d35be9c33ed4eb15252a6 100644
--- a/spec/user_encryption_spec.rb
+++ b/spec/user_encryption_spec.rb
@@ -12,16 +12,13 @@ describe 'user encryption' do
   before do
     unstub_mocha_stubs
     @user = Factory.create(:user)
-    @user.send(:assign_key)
     @user.save
-    @person = Factory.create(:person,
-      :key_fingerprint => GPGME.list_keys("Remote Friend").first.subkeys.first.fpr,
+    @person = Factory.create(:person_with_private_key,
       :profile => Profile.new(:first_name => 'Remote',
                               :last_name => 'Friend'),
       :email => 'somewhere@else.com',
       :url => 'http://distant-example.com/')
-    @person2 = Factory.create(:person,
-      :key_fingerprint => GPGME.list_keys("Second Friend").first.subkeys.first.fpr,
+    @person2 = Factory.create(:person_with_private_key,
       :profile => Profile.new(:first_name => 'Second',
                               :last_name => 'Friend'),
       :email => 'elsewhere@else.com',
@@ -35,26 +32,9 @@ describe 'user encryption' do
     #keys = ctx.keys
     #keys.each{|k| ctx.delete_key(k, true)}
   end
-  
-  it 'should remove the key from the keyring on person destroy' do
-    person = Factory.create :person
-    keyid = person.key_fingerprint
-    original_key = person.export_key
-    GPGME.list_keys(keyid).count.should be 1
-    person.destroy
-    GPGME.list_keys(keyid).count.should be 0
-    GPGME.import(original_key)
-    GPGME.list_keys(keyid).count.should be 1
+  it 'should have a key' do
+    @user.key.should_not be nil
   end
-
-  it 'should have a key fingerprint' do
-    @user.key_fingerprint.should_not be nil
-  end
-
-  it 'should retrieve a user key' do
-    @user.key.subkeys[0].fpr.should  == @user.key_fingerprint
-  end
-
   describe 'key exchange on friending' do
        it 'should send over a public key' do
       Comment.send(:class_variable_get, :@@queue).stub!(:add_post_request)
@@ -64,9 +44,8 @@ describe 'user encryption' do
 
     it 'should receive and marshal a public key from a request' do
       person = Factory.build(:person, :url => "http://test.url/" )
-      person.key_fingerprint.nil?.should== false
+      person.key.nil?.should== false
       #should move this to friend request, but i found it here 
-      f = person.key_fingerprint
       id = person.id
       original_key = person.export_key
       
@@ -78,9 +57,7 @@ describe 'user encryption' do
       store_objects_from_xml(xml)
       Person.all.count.should == personcount + 1
       new_person = Person.first(:url => "http://test.url/")
-      new_person.key_fingerprint.nil?.should == false
       new_person.id.should == id
-      new_person.key_fingerprint.should == f
       new_person.export_key.should == original_key
     end 
   end
@@ -93,10 +70,10 @@ describe 'user encryption' do
     end
     
     it 'should not be able to verify a message from a person without a key' do 
-      person = Factory.create(:person, :key_fingerprint => "123")
+      person = Factory.create(:person, :serialized_key => "lskdfhdlfjnh;klsf")
       message = Factory.build(:status_message, :person => person)
       message.save(:validate => false)
-      message.verify_creator_signature.should be false
+      lambda {message.verify_creator_signature.should be false}.should raise_error 
     end
     
     it 'should verify a remote signature' do