Module: Legion::Extensions::Node::Runners::Crypt

Includes:
Helpers::Lex
Defined in:
lib/legion/extensions/node/runners/crypt.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.update_public_key(name:, public_key:, **_opts) ⇒ Object



12
13
14
15
16
# File 'lib/legion/extensions/node/runners/crypt.rb', line 12

def self.update_public_key(name:, public_key:, **_opts)
  log.debug 'update_public_key'
  Legion::Settings[:cluster][:public_keys][name] = public_key
  {}
end

Instance Method Details

#delete_public_key(name:, **_opts) ⇒ Object



18
19
20
21
22
# File 'lib/legion/extensions/node/runners/crypt.rb', line 18

def delete_public_key(name:, **_opts)
  log.debug 'delete_public_key'
  Legion::Settings[:cluster][:public_keys].delete(name)
  {}
end

#push_cluster_secret(public_key:, queue_name:, **_opts) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/legion/extensions/node/runners/crypt.rb', line 37

def push_cluster_secret(public_key:, queue_name:, **_opts)
  log.debug 'push_cluster_secret'
  return {} unless Legion::Settings[:crypt][:cs_encrypt_ready]

  encrypted = Legion::Crypt.encrypt_from_keypair(pub_key: public_key,
                                                 message: Legion::Settings[:crypt][:cluster_secret].to_s)
  legion = Legion::Crypt.encrypt('legion')
  Legion::Extensions::Node::Transport::Messages::PushClusterSecret.new(message: encrypted,
                                                                       queue_name: queue_name,
                                                                       validation_string: 'legion',
                                                                       encrypted_string: legion).publish
  {}
end

#push_public_key(**_opts) ⇒ Object



3
4
5
6
7
8
9
10
# File 'lib/legion/extensions/node/runners/crypt.rb', line 3

def push_public_key(**_opts)
  log.debug 'push_public_key'
  message_hash = { function: 'update_public_key',
                   public_key: Base64.encode64(Legion::Crypt.public_key),
                   **Legion::Settings[:client] }
  Legion::Extensions::Node::Transport::Messages::PublicKey.new(message_hash).publish
  {}
end

#receive_cluster_secret(message:, **opts) ⇒ Object



51
52
53
54
55
56
57
# File 'lib/legion/extensions/node/runners/crypt.rb', line 51

def receive_cluster_secret(message:, **opts)
  log.debug 'receive_cluster_secret'
  Legion::Settings[:crypt][:cluster_secret] = Legion::Crypt.decrypt_from_keypair(message)
  Legion::Settings[:crypt][:encrypted_string] = opts[:encrypted_string]
  Legion::Settings[:crypt][:validation_string] = opts[:validation_string]
  {}
end

#request_cluster_secret(**_opts) ⇒ Object



31
32
33
34
35
# File 'lib/legion/extensions/node/runners/crypt.rb', line 31

def request_cluster_secret(**_opts)
  log.debug 'request_cluster_secret'
  Legion::Transport::Messages::RequestClusterSecret.new.publish
  {}
end

#request_public_keys(**_opts) ⇒ Object



24
25
26
27
28
29
# File 'lib/legion/extensions/node/runners/crypt.rb', line 24

def request_public_keys(**_opts)
  log.debug 'request_public_keys'
  message_hash = { function: 'push_public_key' }
  Legion::Extensions::Node::Transport::Messages::RequestPublicKeys.new(message_hash).publish
  {}
end