Method: Gel::Support::Tar::TarWriter#add_file_signed
- Defined in:
- lib/gel/support/tar/tar_writer.rb
#add_file_signed(name, mode, signer) ⇒ Object
Adds name with permissions mode to the tar, yielding io for writing the file. The signer is used to add a digest file using its digest_algorithm per add_file_digest and a cryptographic signature in name.sig. If the signer has no key only the checksum file is added.
Returns the digest.
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/gel/support/tar/tar_writer.rb', line 177 def add_file_signed name, mode, signer digest_algorithms = [ signer.digest_algorithm, Digest::SHA512, ].compact.uniq digests = add_file_digest name, mode, digest_algorithms do |io| yield io end signature_digest = digests.values.compact.find do |digest| digest_name = if digest.respond_to? :name then digest.name else /::([^:]+)$/ =~ digest.class.name $1 end digest_name == signer.digest_name end if signer.key then signature = signer.sign signature_digest.digest add_file_simple "#{name}.sig", 0444, signature.length do |io| io.write signature end end digests end |