Sha256: 57c582b912b07232930a3a26071024f5151554b6815461514481453e5aaf19d0
Contents?: true
Size: 1.51 KB
Versions: 1
Compression:
Stored size: 1.51 KB
Contents
# frozen_string_literal: true require 'aes-everywhere' module RevbitsPamCicd module Secure class << self # @return [Array] `private_keys` def private_keys # key_a, key_b [rand(2..9), rand(2..9)] end # @return [Array] `public_keys` def public_keys(private_key_a, private_key_b, secret_creators) [public_key_a(private_key_a, secret_creators), public_key_b(private_key_b, secret_creators)] end # @return [Integer] `secret` def secret(encrypted_values, private_key_a, private_key_b, secret_creators) shared_key_a = shared_key_a(encrypted_values.dig('keyA'), private_key_a, secret_creators.dig(:prime)) shared_key_b = shared_key_b(encrypted_values.dig('keyB'), private_key_b, secret_creators.dig(:prime)) shared_key_a ** shared_key_b end # @return [String] decrypted value def decrypt(secret, encrypted_value) AES256.decrypt(encrypted_value.to_s, secret.to_s) end private def shared_key_a(key_a, private_key_a, prime) (key_a ** private_key_a) % prime end def shared_key_b(key_b, private_key_b, prime) (key_b ** private_key_b) % prime end def public_key_a(public_key_a, secret_creators) (secret_creators.dig(:generated) ** public_key_a) % secret_creators.dig(:prime) end def public_key_b(public_key_b, secret_creators) (secret_creators.dig(:generated) ** public_key_b) % secret_creators.dig(:prime) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
revbits_pam_cicd-0.1.2 | lib/revbits_pam_cicd/secure.rb |