Skip to content

Commit

Permalink
Merge pull request #80 from Lagovas/lagovas/add-ruby-acrawriter
Browse files Browse the repository at this point in the history
add ruby acrawriter sources
  • Loading branch information
mnaza committed Feb 16, 2017
2 parents c49de3b + 275c33e commit fa75cbb
Show file tree
Hide file tree
Showing 10 changed files with 87 additions and 35 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ dist/
downloads/
eggs/
.eggs/
lib/

lib64/
parts/
sdist/
Expand Down
Binary file removed wrappers/ruby/acrawriter-1.0.0.gem
Binary file not shown.
14 changes: 0 additions & 14 deletions wrappers/ruby/acrawriter.gemspec

This file was deleted.

8 changes: 8 additions & 0 deletions wrappers/ruby/acrawriter/Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
require 'rake/testtask'

Rake::TestTask.new do |t|
t.libs << 'test'
end

desc "Run tests"
task :default => :test
15 changes: 15 additions & 0 deletions wrappers/ruby/acrawriter/acrawriter.gemspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Gem::Specification.new do |gem|
gem.name = 'acrawriter'
gem.version = '1.0.0'
gem.date = '2016-10-10'
gem.summary = "Wrapper for acra"
gem.description = "Wrapper for acra"
gem.authors = ["Cossack Labs"]
gem.email = 'dev@cossacklabs.com'
gem.files = ["lib/acrawriter.rb"]
gem.test_files = ["test/test_acrawriter.rb"]
gem.homepage = 'http://cossacklabs.com/'
gem.license = 'Apache 2.0'
gem.add_runtime_dependency 'rubythemis'
gem.requirements << 'libthemis, v0.9.3'
end
19 changes: 19 additions & 0 deletions wrappers/ruby/acrawriter/lib/acrawriter.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
require 'rubythemis'

SYMMETRIC_KEY_LENGTH = 32

BEGIN_TAG = '""""""""'.b
def create_acrastruct(data, acra_public_key, context=nil)
if data.nil? or data == ''
return data
end
generator = Themis::SKeyPairGen.new
private, public = generator.ec
smessage = Themis::Smessage.new(private.to_s, acra_public_key.to_s)
random_key = Random.new.bytes(SYMMETRIC_KEY_LENGTH)
wrapped_random_key = smessage.wrap(random_key.to_s)
scell = Themis::Scell.new(random_key.to_s, Themis::Scell::SEAL_MODE)
encrypted_data = scell.encrypt(data, context)
data_length = Array(encrypted_data.length).pack('Q<')
BEGIN_TAG + public + wrapped_random_key + data_length + encrypted_data
end
11 changes: 11 additions & 0 deletions wrappers/ruby/acrawriter/test/test_acrawriter.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
require 'minitest/autorun'
require 'rubythemis'
require 'acrawriter'

class TestAcrawriter < Minitest::Test
def test_create_acrastruct
generator = Themis::SKeyPairGen.new
private, public = generator.ec
create_acrastruct("some data", public, context=nil)
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
Gem::Specification.new do |gem|
gem.name = 'activerecord_acrawriter'
gem.version = '1.0.0'
gem.date = '2017-02-16'
gem.summary = "Extra type for active record with acrawriter usage"
gem.description = "Extra type for active record with acrawriter usage"
gem.authors = ["Cossack Labs"]
gem.email = 'dev@cossacklabs.com'
gem.files = ["lib/activerecord_acrawriter.rb"]
gem.homepage = 'http://cossacklabs.com/'
gem.license = 'Apache 2.0'
gem.add_runtime_dependency 'rubythemis'
gem.add_runtime_dependency 'acrawriter'
gem.add_runtime_dependency 'activerecord'
gem.requirements << 'libthemis, v0.9.3'
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
require 'active_record'
require 'acrawriter'

class AcraType < ActiveRecord::Type::String
def type_cast_for_database(value)
# scell can't encrypt null or empty objects
if value.nil? or value == ''
super
else
key = Base64.decode64(Rails.application.secrets.acra_public_key)
ActiveRecord::Base.connection.escape_bytea(create_acrastruct(value.b, key))
end
end
def type_cast_from_database(value)
ActiveRecord::Base.connection.unescape_bytea(value)
end
end
20 changes: 0 additions & 20 deletions wrappers/ruby/test.rb

This file was deleted.

0 comments on commit fa75cbb

Please sign in to comment.