Module: Eet::Utils

Defined in:
lib/eet/utils.rb

Class Method Summary collapse

Class Method Details

.create_bkp(pkp_value) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/eet/utils.rb', line 11

def self.create_bkp(pkp_value)
  decoded = Base64.decode64(pkp_value)
  digest = Digest::SHA1.digest(decoded)

  ret = ''
  encoded =
    digest.each_char do |c|
      ch = c.ord.to_s(16)
      ch = '0' + ch if ch.size == 1
      ret += ch
    end

  ret.upcase.chars.each_slice(8).map(&:join).join('-')
end

.create_pkp(message, certificate) ⇒ Object



5
6
7
8
9
# File 'lib/eet/utils.rb', line 5

def self.create_pkp(message, certificate)
  digest = OpenSSL::Digest::SHA256.new
  signature = certificate.key.sign(digest, serialize_pkp_data(message))
  Base64.encode64(signature).delete("\n")
end

.serialize_pkp_data(message) ⇒ Object



42
43
44
45
46
47
48
49
# File 'lib/eet/utils.rb', line 42

def self.serialize_pkp_data(message)
  [message.dic_popl,
   message.id_provoz,
   message.id_pokl,
   message.porad_cis,
   message.dat_trzby,
   message.celk_trzba].join('|')
end

.sign(xml, certificate) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/eet/utils.rb', line 26

def self.sign(xml, certificate)
  signer = Signer.new(xml)
  signer.cert = certificate.certificate
  signer.private_key = certificate.key

  signer.security_node = signer.document.children.first.children.first.children.first
  signer.digest_algorithm = :sha256
  signer.signature_digest_algorithm = :sha256
  signer.ds_namespace_prefix = 'ds'
  signer.security_token_id = 'A79845F15C5549CA0514761283545705'
  signer.digest!(signer.document.at_xpath('//soap:Body'), inclusive_namespaces: [''])
  signer.sign!(security_token: true, inclusive_namespaces: ['soap'])

  signer.to_xml
end