Class: Minisign::Signature

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/minisign/signature.rb

Overview

Parse a .minisig file’s contents

Instance Method Summary collapse

Methods included from Utils

#blake2b256, #blake2b512, #derive_key, #hex, #xor

Constructor Details

#initialize(str) ⇒ Signature

Returns a new instance of Signature.

Examples:

Minisign::Signature.new(File.read('test/example.txt.minisig'))

Parameters:

  • str (String)

    The contents of the .minisig file



10
11
12
13
# File 'lib/minisign/signature.rb', line 10

def initialize(str)
  @lines = str.split("\n")
  @decoded = Base64.strict_decode64(@lines[1])
end

Instance Method Details

#key_idString

Returns the key id.

Examples:

Minisign::Signature.new(File.read('test/example.txt.minisig')).key_id
#=> "E86FECED695E8E0"

Returns:

  • (String)

    the key id



19
20
21
# File 'lib/minisign/signature.rb', line 19

def key_id
  hex @decoded[2..9].bytes
end

#signatureString

Returns the global signature.

Returns:

  • (String)

    the global signature



37
38
39
# File 'lib/minisign/signature.rb', line 37

def signature
  @decoded[10..]
end

#to_sString

Returns The signature that can be written to a file.

Returns:

  • (String)

    The signature that can be written to a file



42
43
44
# File 'lib/minisign/signature.rb', line 42

def to_s
  "#{@lines.join("\n")}\n"
end

#trusted_commentString

Returns the trusted comment.

Examples:

Minisign::Signature.new(File.read('test/example.txt.minisig')).trusted_comment
#=> "timestamp:1653934067\tfile:example.txt\thashed"

Returns:

  • (String)

    the trusted comment



27
28
29
# File 'lib/minisign/signature.rb', line 27

def trusted_comment
  @lines[2].split('trusted comment: ')[1]
end

#trusted_comment_signatureString

Returns the signature for the trusted comment.

Returns:

  • (String)

    the signature for the trusted comment



32
33
34
# File 'lib/minisign/signature.rb', line 32

def trusted_comment_signature
  Base64.decode64(@lines[3])
end