module Puppet::Util::Checksums

A stand-alone module for calculating checksums in a generic way.

Constants

KNOWN_CHECKSUMS

Public Instance Methods

checksum?(string) click to toggle source

Is the provided string a checksum?

   # File lib/puppet/util/checksums.rb
39 def checksum?(string)
40   # 'sha256lite'.length == 10
41   string =~ /^\{(\w{3,10})\}\S+/
42 end
checksum_file(digest, filename, lite = false) click to toggle source

Perform an incremental checksum on a file.

    # File lib/puppet/util/checksums.rb
359 def checksum_file(digest, filename, lite = false)
360   buffer = lite ? 512 : 4096
361   File.open(filename, 'rb') do |file|
362     while content = file.read(buffer) #rubocop:disable Lint/AssignmentInCondition
363       digest << content
364       break if lite
365     end
366   end
367 
368   digest.hexdigest
369 end
checksum_stream(digest, block, lite = false) click to toggle source
    # File lib/puppet/util/checksums.rb
371 def checksum_stream(digest, block, lite = false)
372   block.call(DigestLite.new(digest, lite))
373   digest.hexdigest
374 end
ctime(content) click to toggle source
    # File lib/puppet/util/checksums.rb
298 def ctime(content)
299   ""
300 end
ctime?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
302 def ctime?(string)
303   return true if string.is_a? Time
304   !!DateTime.parse(string)
305 rescue
306   false
307 end
ctime_file(filename) click to toggle source

Return the :ctime of a file.

    # File lib/puppet/util/checksums.rb
310 def ctime_file(filename)
311   Puppet::FileSystem.stat(filename).ctime
312 end
ctime_stream(&block) click to toggle source
    # File lib/puppet/util/checksums.rb
314 def ctime_stream(&block)
315   mtime_stream(&block)
316 end
known_checksum_types() click to toggle source

It's not a good idea to use some of these in some contexts: for example, I wouldn't try bucketing a file using the :none checksum type.

   # File lib/puppet/util/checksums.rb
22 def known_checksum_types
23   KNOWN_CHECKSUMS
24 end
md5(content) click to toggle source

Calculate a checksum using Digest::MD5.

    # File lib/puppet/util/checksums.rb
183 def md5(content)
184   Digest::MD5.hexdigest(content)
185 end
md5?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
187 def md5?(string)
188   string =~ /^\h{32}$/
189 end
md5_file(filename, lite = false) click to toggle source

Calculate a checksum of a file's content using Digest::MD5.

    # File lib/puppet/util/checksums.rb
192 def md5_file(filename, lite = false)
193   digest = Digest::MD5.new
194   checksum_file(digest, filename,  lite)
195 end
md5_hex_length() click to toggle source
    # File lib/puppet/util/checksums.rb
202 def md5_hex_length
203   32
204 end
md5_stream(lite = false, &block) click to toggle source
    # File lib/puppet/util/checksums.rb
197 def md5_stream(lite = false, &block)
198   digest = Digest::MD5.new
199   checksum_stream(digest, block, lite)
200 end
md5lite(content) click to toggle source

Calculate a checksum of the first 500 chars of the content using Digest::MD5.

    # File lib/puppet/util/checksums.rb
207 def md5lite(content)
208   md5(content[0..511])
209 end
md5lite?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
211 def md5lite?(string)
212   md5?(string)
213 end
md5lite_file(filename) click to toggle source

Calculate a checksum of the first 500 chars of a file's content using Digest::MD5.

    # File lib/puppet/util/checksums.rb
216 def md5lite_file(filename)
217   md5_file(filename, true)
218 end
md5lite_hex_length() click to toggle source
    # File lib/puppet/util/checksums.rb
224 def md5lite_hex_length
225   md5_hex_length
226 end
md5lite_stream(&block) click to toggle source
    # File lib/puppet/util/checksums.rb
220 def md5lite_stream(&block)
221   md5_stream(true, &block)
222 end
mtime(content) click to toggle source
    # File lib/puppet/util/checksums.rb
228 def mtime(content)
229   ""
230 end
mtime?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
232 def mtime?(string)
233   return true if string.is_a? Time
234   !!DateTime.parse(string)
235 rescue
236   false
237 end
mtime_file(filename) click to toggle source

Return the :mtime timestamp of a file.

    # File lib/puppet/util/checksums.rb
240 def mtime_file(filename)
241   Puppet::FileSystem.stat(filename).mtime
242 end
mtime_stream() { |noop_digest| ... } click to toggle source

by definition this doesn't exist but we still need to execute the block given

    # File lib/puppet/util/checksums.rb
246 def mtime_stream(&block)
247   noop_digest = FakeChecksum.new
248   yield noop_digest
249   nil
250 end
none(content) click to toggle source
    # File lib/puppet/util/checksums.rb
318 def none(content)
319   ""
320 end
none?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
322 def none?(string)
323   string.empty?
324 end
none_file(filename) click to toggle source

Return a “no checksum”

    # File lib/puppet/util/checksums.rb
327 def none_file(filename)
328   ""
329 end
none_stream() { |noop_digest| ... } click to toggle source
    # File lib/puppet/util/checksums.rb
331 def none_stream
332   noop_digest = FakeChecksum.new
333   yield noop_digest
334   ""
335 end
sha1(content) click to toggle source

Calculate a checksum using Digest::SHA1.

    # File lib/puppet/util/checksums.rb
253 def sha1(content)
254   Digest::SHA1.hexdigest(content)
255 end
sha1?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
257 def sha1?(string)
258   string =~ /^\h{40}$/
259 end
sha1_file(filename, lite = false) click to toggle source

Calculate a checksum of a file's content using Digest::SHA1.

    # File lib/puppet/util/checksums.rb
262 def sha1_file(filename, lite = false)
263   digest = Digest::SHA1.new
264   checksum_file(digest, filename, lite)
265 end
sha1_hex_length() click to toggle source
    # File lib/puppet/util/checksums.rb
272 def sha1_hex_length
273   40
274 end
sha1_stream(lite = false, &block) click to toggle source
    # File lib/puppet/util/checksums.rb
267 def sha1_stream(lite = false, &block)
268   digest = Digest::SHA1.new
269   checksum_stream(digest, block, lite)
270 end
sha1lite(content) click to toggle source

Calculate a checksum of the first 500 chars of the content using Digest::SHA1.

    # File lib/puppet/util/checksums.rb
277 def sha1lite(content)
278   sha1(content[0..511])
279 end
sha1lite?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
281 def sha1lite?(string)
282   sha1?(string)
283 end
sha1lite_file(filename) click to toggle source

Calculate a checksum of the first 500 chars of a file's content using Digest::SHA1.

    # File lib/puppet/util/checksums.rb
286 def sha1lite_file(filename)
287   sha1_file(filename, true)
288 end
sha1lite_hex_length() click to toggle source
    # File lib/puppet/util/checksums.rb
294 def sha1lite_hex_length
295   sha1_hex_length
296 end
sha1lite_stream(&block) click to toggle source
    # File lib/puppet/util/checksums.rb
290 def sha1lite_stream(&block)
291   sha1_stream(true, &block)
292 end
sha224(content) click to toggle source

Calculate a checksum using Digest::SHA224.

    # File lib/puppet/util/checksums.rb
156 def sha224(content)
157   require_relative '../../puppet/ssl/openssl_loader'
158   OpenSSL::Digest::SHA224.new.hexdigest(content)
159 end
sha224?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
161 def sha224?(string)
162   string =~ /^\h{56}$/
163 end
sha224_file(filename, lite = false) click to toggle source
    # File lib/puppet/util/checksums.rb
165 def sha224_file(filename, lite = false)
166   require_relative '../../puppet/ssl/openssl_loader'
167 
168   digest = OpenSSL::Digest::SHA224.new
169   checksum_file(digest, filename,  lite)
170 end
sha224_hex_length() click to toggle source
    # File lib/puppet/util/checksums.rb
178 def sha224_hex_length
179   56
180 end
sha224_stream(lite = false, &block) click to toggle source
    # File lib/puppet/util/checksums.rb
172 def sha224_stream(lite = false, &block)
173   require_relative '../../puppet/ssl/openssl_loader'
174   digest = OpenSSL::Digest::SHA224.new
175   checksum_stream(digest, block, lite)
176 end
sha256(content) click to toggle source

Calculate a checksum using Digest::SHA256.

   # File lib/puppet/util/checksums.rb
55 def sha256(content)
56   require 'digest/sha2'
57   Digest::SHA256.hexdigest(content)
58 end
sha256?(string) click to toggle source
   # File lib/puppet/util/checksums.rb
60 def sha256?(string)
61   string =~ /^\h{64}$/
62 end
sha256_file(filename, lite = false) click to toggle source
   # File lib/puppet/util/checksums.rb
64 def sha256_file(filename, lite = false)
65   require 'digest/sha2'
66 
67   digest = Digest::SHA256.new
68   checksum_file(digest, filename,  lite)
69 end
sha256_hex_length() click to toggle source
   # File lib/puppet/util/checksums.rb
77 def sha256_hex_length
78   64
79 end
sha256_stream(lite = false, &block) click to toggle source
   # File lib/puppet/util/checksums.rb
71 def sha256_stream(lite = false, &block)
72   require 'digest/sha2'
73   digest = Digest::SHA256.new
74   checksum_stream(digest, block, lite)
75 end
sha256lite(content) click to toggle source
   # File lib/puppet/util/checksums.rb
81 def sha256lite(content)
82   sha256(content[0..511])
83 end
sha256lite?(string) click to toggle source
   # File lib/puppet/util/checksums.rb
85 def sha256lite?(string)
86   sha256?(string)
87 end
sha256lite_file(filename) click to toggle source
   # File lib/puppet/util/checksums.rb
89 def sha256lite_file(filename)
90   sha256_file(filename, true)
91 end
sha256lite_hex_length() click to toggle source
   # File lib/puppet/util/checksums.rb
97 def sha256lite_hex_length
98   sha256_hex_length
99 end
sha256lite_stream(&block) click to toggle source
   # File lib/puppet/util/checksums.rb
93 def sha256lite_stream(&block)
94   sha256_stream(true, &block)
95 end
sha384(content) click to toggle source

Calculate a checksum using Digest::SHA384.

    # File lib/puppet/util/checksums.rb
102 def sha384(content)
103   require 'digest/sha2'
104   Digest::SHA384.hexdigest(content)
105 end
sha384?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
107 def sha384?(string)
108   string =~ /^\h{96}$/
109 end
sha384_file(filename, lite = false) click to toggle source
    # File lib/puppet/util/checksums.rb
111 def sha384_file(filename, lite = false)
112   require 'digest/sha2'
113 
114   digest = Digest::SHA384.new
115   checksum_file(digest, filename,  lite)
116 end
sha384_hex_length() click to toggle source
    # File lib/puppet/util/checksums.rb
124 def sha384_hex_length
125   96
126 end
sha384_stream(lite = false, &block) click to toggle source
    # File lib/puppet/util/checksums.rb
118 def sha384_stream(lite = false, &block)
119   require 'digest/sha2'
120   digest = Digest::SHA384.new
121   checksum_stream(digest, block, lite)
122 end
sha512(content) click to toggle source

Calculate a checksum using Digest::SHA512.

    # File lib/puppet/util/checksums.rb
129 def sha512(content)
130   require 'digest/sha2'
131   Digest::SHA512.hexdigest(content)
132 end
sha512?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
134 def sha512?(string)
135   string =~ /^\h{128}$/
136 end
sha512_file(filename, lite = false) click to toggle source
    # File lib/puppet/util/checksums.rb
138 def sha512_file(filename, lite = false)
139   require 'digest/sha2'
140 
141   digest = Digest::SHA512.new
142   checksum_file(digest, filename,  lite)
143 end
sha512_hex_length() click to toggle source
    # File lib/puppet/util/checksums.rb
151 def sha512_hex_length
152   128
153 end
sha512_stream(lite = false, &block) click to toggle source
    # File lib/puppet/util/checksums.rb
145 def sha512_stream(lite = false, &block)
146   require 'digest/sha2'
147   digest = Digest::SHA512.new
148   checksum_stream(digest, block, lite)
149 end
sumdata(checksum) click to toggle source

Strip the checksum type from an existing checksum

   # File lib/puppet/util/checksums.rb
45 def sumdata(checksum)
46   checksum =~ /^\{(\w+)\}(.+)/ ? $2 : nil
47 end
sumtype(checksum) click to toggle source

Strip the checksum type from an existing checksum

   # File lib/puppet/util/checksums.rb
50 def sumtype(checksum)
51   checksum =~ /^\{(\w+)\}/ ? $1 : nil
52 end
valid_checksum?(type, value) click to toggle source
   # File lib/puppet/util/checksums.rb
26 def valid_checksum?(type, value)
27   !!send("#{type}?", value)
28 rescue NoMethodError
29   false
30 end