Class: Chatopsify::CoSecurity

Inherits:
Object
  • Object
show all
Defined in:
lib/chatopsify/co.rb

Overview

CoSecurity service

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(str) ⇒ CoSecurity

Returns a new instance of CoSecurity.



123
124
125
# File 'lib/chatopsify/co.rb', line 123

def initialize(str)
  @str = str
end

Class Method Details

.call(*args, &block) ⇒ Object



119
120
121
# File 'lib/chatopsify/co.rb', line 119

def self.call(*args, &block)
  new(*args, &block)
end

Instance Method Details

#decrypt_stringObject



144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/chatopsify/co.rb', line 144

def decrypt_string
  encrypted = [@str].pack('H*')
  cipher = OpenSSL::Cipher.new('aes-256-cbc')
  cipher.decrypt

  salt = encrypted[0, 16]
  encrypted_data = encrypted[16..]

  key_iv = OpenSSL::PKCS5.pbkdf2_hmac_sha1(generate_pwd, salt, 2000, cipher.key_len + cipher.iv_len)
  key = key_iv[0, cipher.key_len]
  iv = key_iv[cipher.key_len, cipher.iv_len]

  cipher.key = key
  cipher.iv = iv

  cipher.update(encrypted_data) + cipher.final
rescue StandardError => e
  puts e.message
end

#encrypt_stringObject



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/chatopsify/co.rb', line 127

def encrypt_string
  cipher = OpenSSL::Cipher.new('aes-256-cbc')
  cipher.encrypt
  salt = SecureRandom.random_bytes(16)
  key_iv = OpenSSL::PKCS5.pbkdf2_hmac_sha1(generate_pwd, salt, 2000, cipher.key_len + cipher.iv_len)
  key = key_iv[0, cipher.key_len]
  iv = key_iv[cipher.key_len, cipher.iv_len]

  cipher.key = key
  cipher.iv = iv

  encrypted = cipher.update(@str) + cipher.final
  (salt + encrypted).unpack1('H*')
rescue StandardError => e
  puts e.message
end