-
Notifications
You must be signed in to change notification settings - Fork 127
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #80 from Lagovas/lagovas/add-ruby-acrawriter
add ruby acrawriter sources
- Loading branch information
Showing
10 changed files
with
87 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -44,7 +44,7 @@ dist/ | |
downloads/ | ||
eggs/ | ||
.eggs/ | ||
lib/ | ||
|
||
lib64/ | ||
parts/ | ||
sdist/ | ||
|
Binary file not shown.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
16 changes: 16 additions & 0 deletions
16
wrappers/ruby/activerecord_acrawriter/activerecord_acrawriter.gemspec
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
17 changes: 17 additions & 0 deletions
17
wrappers/ruby/activerecord_acrawriter/lib/activerecord_acrawriter.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file was deleted.
Oops, something went wrong.