replaced the functionality with openssl, didn't do the encryption spec

This commit is contained in:
ilya 2010-08-04 20:32:15 -07:00
parent b74438a5dc
commit 5dfc097c88
11 changed files with 16 additions and 60 deletions

View file

@ -7,6 +7,7 @@ gem 'rails', '3.0.0.beta4'
gem 'bundler', '0.9.26' gem 'bundler', '0.9.26'
#Security #Security
gem 'openssl'
gem 'gpgme' gem 'gpgme'
gem 'devise', :git => 'http://github.com/BadMinus/devise.git' gem 'devise', :git => 'http://github.com/BadMinus/devise.git'

View file

@ -4,5 +4,4 @@
require File.expand_path('../config/application', __FILE__) require File.expand_path('../config/application', __FILE__)
require 'rake' require 'rake'
ENV['GNUPGHOME'] = File.expand_path("../../gpg/diaspora-#{Rails.env}/", __FILE__) ENV['GNUPGHOME'] = File.expand_path("../../gpg/diaspora-#{Rails.env}/", __FILE__)
GPGME::check_version({})
Rails::Application.load_tasks Rails::Application.load_tasks

View file

@ -12,7 +12,7 @@ class Person
key :email, String key :email, String
key :url, String key :url, String
key :active, Boolean, :default => false key :active, Boolean, :default => false
key :key_fingerprint, String key :key, OpenSSL::PKey::RSA
one :profile, :class_name => 'Profile' one :profile, :class_name => 'Profile'
many :posts, :class_name => 'Post', :foreign_key => :person_id many :posts, :class_name => 'Post', :foreign_key => :person_id
@ -37,12 +37,8 @@ class Person
"#{profile.first_name.to_s} #{profile.last_name.to_s}" "#{profile.first_name.to_s} #{profile.last_name.to_s}"
end end
def key
GPGME::Ctx.new.get_key key_fingerprint
end
def export_key def export_key
GPGME::export(key_fingerprint, :armor => true) key.public_key
end end
protected protected
@ -66,10 +62,4 @@ class Person
self.posts.delete_all self.posts.delete_all
end 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 end

View file

@ -10,7 +10,6 @@ class User < Person
before_validation :do_bad_things before_validation :do_bad_things
######## Posting ######## ######## Posting ########
def post(class_name, options = {}) def post(class_name, options = {})
@ -75,7 +74,6 @@ class User < Person
def receive_friend_request(friend_request) def receive_friend_request(friend_request)
Rails.logger.info("receiving friend request #{friend_request.to_json}") Rails.logger.info("receiving friend request #{friend_request.to_json}")
GPGME.import(friend_request.exported_key)
if Request.where(:callback_url => friend_request.callback_url).first if Request.where(:callback_url => friend_request.callback_url).first
friend_request.activate_friend friend_request.activate_friend
friend_request.destroy friend_request.destroy
@ -125,32 +123,14 @@ class User < Person
protected protected
def assign_key def assign_key
keys = GPGME.list_keys(real_name, true) generate_key
if keys.empty?
generate_key
end
self.key_fingerprint = GPGME.list_keys(real_name, true).first.subkeys.first.fingerprint
end end
def generate_key def generate_key
puts "Generating key" puts "Generating key"
puts paramstring
ctx = GPGME::Ctx.new self.rsa_key = OpenSSL::PKey::RSA::generate 1024
ctx.genkey(paramstring, nil, nil)
end 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 end

View file

@ -4,5 +4,4 @@ Haml::Template.options[:format] = :html5
# Initialize the rails application # Initialize the rails application
Diaspora::Application.initialize! Diaspora::Application.initialize!
ENV['GNUPGHOME'] = File.expand_path("../../gpg/diaspora-#{Rails.env}/", __FILE__)
GPGME::check_version({})

View file

@ -26,8 +26,7 @@ Diaspora::Application.configure do
config.action_mailer.delivery_method = :test config.action_mailer.delivery_method = :test
config.threadsafe! 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. # 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, # 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 # like if you have constraints or database-specific column types

View file

@ -7,9 +7,6 @@
# Mayor.create(:name => 'Daley', :city => citie # Mayor.create(:name => 'Daley', :city => citie
require 'config/environment' require 'config/environment'
ENV['GNUPGHOME'] = File.expand_path("../../../gpg/diaspora-#{Rails.env}/", __FILE__)
GPGME::check_version({})
def create(backer_number) def create(backer_number)
backer_info = [ [5072,"George", "Washington"], backer_info = [ [5072,"George", "Washington"],

View file

@ -7,8 +7,7 @@
# Mayor.create(:name => 'Daley', :city => citie # Mayor.create(:name => 'Daley', :city => citie
require 'config/environment' require 'config/environment'
ENV['GNUPGHOME'] = File.expand_path("../../../gpg/diaspora-#{Rails.env}/", __FILE__)
GPGME::check_version({})
# Create seed user # Create seed user
user = User.create( :email => "robert@joindiaspora.com", :password => "evankorth", :profile => Profile.new( :first_name => "bobert", :last_name => "brin" )) user = User.create( :email => "robert@joindiaspora.com", :password => "evankorth", :profile => Profile.new( :first_name => "bobert", :last_name => "brin" ))

View file

@ -7,8 +7,7 @@
# Mayor.create(:name => 'Daley', :city => citie # Mayor.create(:name => 'Daley', :city => citie
require 'config/environment' require 'config/environment'
ENV['GNUPGHOME'] = File.expand_path("../../../gpg/diaspora-#{Rails.env}/", __FILE__)
GPGME::check_version({})
# Create seed user # 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" )) user = User.create( :email => "tom@tom.joindiaspora.com", :password => "evankorth", :url => "http://tom.joindiaspora.com/", :profile => Profile.new( :first_name => "Alexander", :last_name => "Hamiltom" ))

View file

@ -10,13 +10,8 @@
return false unless signature && person.key_fingerprint return false unless signature && person.key_fingerprint
validity = nil validity = nil
Rails.logger.info("Verifying sig on #{signable_string} from person #{person.real_name}") Rails.logger.info("Verifying sig on #{signable_string} from person #{person.real_name}")
GPGME::verify(signature, signable_string, person.key.verify "SHA", 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
end end
protected protected
@ -32,8 +27,8 @@
def sign_with_key(key) def sign_with_key(key)
Rails.logger.info("Signing #{signable_string}") Rails.logger.info("Signing #{signable_string}")
GPGME::sign(signable_string,nil, key.sign "SHA", signable_string
{:armor=> true, :mode => GPGME::SIG_MODE_DETACH, :signers => [key]})
end end
end end

View file

@ -2,8 +2,6 @@
#http://github.com/thoughtbot/factory_girl #http://github.com/thoughtbot/factory_girl
# http://railscasts.com/episodes/158-factories-not-fixtures # 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 #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| Factory.define :profile do |p|
p.first_name "Robert" p.first_name "Robert"
@ -14,7 +12,7 @@ Factory.define :person do |p|
p.email "bob-person@aol.com" p.email "bob-person@aol.com"
p.active true p.active true
p.sequence(:url) {|n|"http://google-#{n}.com/"} p.sequence(:url) {|n|"http://google-#{n}.com/"}
p.key_fingerprint GPGME::list_keys("Wesley").first.subkeys.first.fingerprint p.key OpenSSL::PKey::RSA.new(OpenSSL::PKey::RSA.generate(1024).public_key)
p.profile Profile.new( :first_name => "Robert", :last_name => "Grimm" ) p.profile Profile.new( :first_name => "Robert", :last_name => "Grimm" )
end end
@ -23,7 +21,7 @@ Factory.define :user do |u|
u.password "bluepin7" u.password "bluepin7"
u.password_confirmation "bluepin7" u.password_confirmation "bluepin7"
u.url "www.example.com/" u.url "www.example.com/"
u.key_fingerprint GPGME.list_keys("Smith", true).first.subkeys.first.fingerprint u.key OpenSSL::PKey::RSA::generate 1024
u.profile Profile.new( :first_name => "Bob", :last_name => "Smith" ) u.profile Profile.new( :first_name => "Bob", :last_name => "Smith" )
end end
Factory.define :status_message do |m| Factory.define :status_message do |m|