Skip to content
Snippets Groups Projects
Commit 5dfc097c authored by ilya's avatar ilya
Browse files

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

parent b74438a5
No related branches found
No related tags found
No related merge requests found
......@@ -7,6 +7,7 @@ gem 'rails', '3.0.0.beta4'
gem 'bundler', '0.9.26'
#Security
gem 'openssl'
gem 'gpgme'
gem 'devise', :git => 'http://github.com/BadMinus/devise.git'
......
......@@ -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
......@@ -12,7 +12,7 @@ class Person
key :email, String
key :url, String
key :active, Boolean, :default => false
key :key_fingerprint, String
key :key, OpenSSL::PKey::RSA
one :profile, :class_name => 'Profile'
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}"
end
def key
GPGME::Ctx.new.get_key key_fingerprint
end
def export_key
GPGME::export(key_fingerprint, :armor => true)
key.public_key
end
protected
......@@ -66,10 +62,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
......@@ -9,7 +9,6 @@ class User < Person
before_validation :do_bad_things
######## Posting ########
......@@ -75,7 +74,6 @@ class User < Person
def receive_friend_request(friend_request)
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
friend_request.activate_friend
friend_request.destroy
......@@ -125,32 +123,14 @@ class User < Person
protected
def assign_key
keys = GPGME.list_keys(real_name, true)
if keys.empty?
generate_key
end
self.key_fingerprint = GPGME.list_keys(real_name, true).first.subkeys.first.fingerprint
generate_key
end
def generate_key
puts "Generating key"
puts paramstring
ctx = GPGME::Ctx.new
ctx.genkey(paramstring, nil, nil)
self.rsa_key = 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
......@@ -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({})
......@@ -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
......
......@@ -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"],
......
......@@ -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" ))
......
......@@ -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" ))
......
......@@ -10,13 +10,8 @@
return false unless signature && person.key_fingerprint
validity = nil
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
person.key.verify "SHA", signature, signable_string
end
protected
......@@ -32,8 +27,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]})
key.sign "SHA", signable_string
end
end
......@@ -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"
......@@ -14,7 +12,7 @@ Factory.define :person do |p|
p.email "bob-person@aol.com"
p.active true
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" )
end
......@@ -23,7 +21,7 @@ Factory.define :user do |u|
u.password "bluepin7"
u.password_confirmation "bluepin7"
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" )
end
Factory.define :status_message do |m|
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment