class Eco::Data::Crypto::EncryptedData
Attributes
content[R]
iv[R]
key[R]
Public Class Methods
new(init = {})
click to toggle source
# File lib/eco/data/crypto/encryption.rb, line 214 def initialize(init = {}) @key = init[:key] @iv = init[:iv] @content = init[:content] @sha = sha256(@content) load() if !@key || !@iv end
Public Instance Methods
load(file = nil)
click to toggle source
# File lib/eco/data/crypto/encryption.rb, line 221 def load (file = nil) parser = get_parser(file) sha64 = Base64.encode64(@sha) if @sha if parser.key?(sha64) #puts "found key!" meta = parser[sha64] key64, iv64 = meta.values_at("key", "iv") @key = Base64.decode64(key64) if key64 @iv = Base64.decode64(iv64) if iv64 else #puts "key not found! #{sha64}" end end
save(file = nil)
click to toggle source
# File lib/eco/data/crypto/encryption.rb, line 234 def save (file = nil) parser = get_parser(file) sha64 = Base64.encode64(@sha) if @sha #puts "save key: #{sha64}" if parser.key?(sha64) meta = parser[sha64] else meta = {key: nil, iv: nil} parser[sha64] = meta end meta[:key] = Base64.encode64(@key) if @key meta[:iv] = Base64.encode64(@iv) if @iv set_parser(file, parser) end
Private Instance Methods
get_parser(file = nil)
click to toggle source
# File lib/eco/data/crypto/encryption.rb, line 250 def get_parser (file = nil) file = PARSER_FILE if !file # create the directory unless it exists Dir.mkdir(WORKING_DIR) unless Dir.exist?(WORKING_DIR) parser = {} if File.file?(file) fd = File.open(file,"r") parser = JSON.load(fd) fd.close end return parser end
set_parser(file = nil, parser = {})
click to toggle source
# File lib/eco/data/crypto/encryption.rb, line 262 def set_parser (file = nil, parser = {}) file = PARSER_FILE if !file # create the directory unless it exists Dir.mkdir(WORKING_DIR) unless Dir.exist?(WORKING_DIR) fd = File.open(file,"w") fd << parser.to_json fd.close end
sha256(str = nil)
click to toggle source
# File lib/eco/data/crypto/encryption.rb, line 270 def sha256 (str = nil) sha = OpenSSL::Digest::SHA256.new digest = sha.digest(str) unless !str sha.reset digest end