class GZippedTar::Tar::WriteSignedFile
Attributes
mode[R]
name[R]
signer[R]
writer[R]
Public Class Methods
call(writer, name, mode, signer, &block)
click to toggle source
# File lib/gzipped_tar/tar/write_signed_file.rb, line 4 def self.call(writer, name, mode, signer, &block) new(writer, name, mode, signer).call(&block) end
new(writer, name, mode, signer)
click to toggle source
# File lib/gzipped_tar/tar/write_signed_file.rb, line 8 def initialize(writer, name, mode, signer) @writer = writer @name = name @mode = mode @signer = signer end
Public Instance Methods
call(&block)
click to toggle source
# File lib/gzipped_tar/tar/write_signed_file.rb, line 15 def call(&block) add_file_digest(&block) raise "no #{signer.digest_name} in #{digests.values.compact}" unless digest write_signature if signer.key digests end
Private Instance Methods
add_file_digest(&block)
click to toggle source
# File lib/gzipped_tar/tar/write_signed_file.rb, line 29 def add_file_digest(&block) writer.add_file name, mode do |io| GZippedTar::Tar::DigestIO.wrap io, digests, &block end end
algorithms()
click to toggle source
# File lib/gzipped_tar/tar/write_signed_file.rb, line 35 def algorithms [ signer.digest_algorithm, Digest::SHA512 ].compact.uniq end
digest()
click to toggle source
# File lib/gzipped_tar/tar/write_signed_file.rb, line 42 def digest @digest ||= digests.values.compact.detect do |digest| digest_name(digest) == signer.digest_name end end
digest_name(instance)
click to toggle source
# File lib/gzipped_tar/tar/write_signed_file.rb, line 58 def digest_name(instance) if instance.respond_to? :name instance.name else instance.class.name[/::([^:]+)$/, 1] end end
digests()
click to toggle source
# File lib/gzipped_tar/tar/write_signed_file.rb, line 48 def digests @digests ||= begin digests = algorithms.collect(&:new).collect do |digest| [digest_name(digest), digest] end Hash[*digests.flatten] end end
write_signature()
click to toggle source
# File lib/gzipped_tar/tar/write_signed_file.rb, line 66 def write_signature signature = signer.sign digest.digest writer.add_file_simple "#{name}.sig", 0o444, signature.length do |io| io.write signature end end