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
40 def checksum?(string)
41   # 'sha256lite'.length == 10
42   string =~ /^\{(\w{3,10})\}\S+/
43 end
checksum_file(digest, filename, lite = false) click to toggle source

Perform an incremental checksum on a file.

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

Return the :ctime of a file.

    # File lib/puppet/util/checksums.rb
311 def ctime_file(filename)
312   Puppet::FileSystem.stat(filename).ctime
313 end
ctime_stream(&block) click to toggle source
    # File lib/puppet/util/checksums.rb
315 def ctime_stream(&block)
316   mtime_stream(&block)
317 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
23 def known_checksum_types
24   KNOWN_CHECKSUMS
25 end
md5(content) click to toggle source

Calculate a checksum using Digest::MD5.

    # File lib/puppet/util/checksums.rb
184 def md5(content)
185   Digest::MD5.hexdigest(content)
186 end
md5?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
188 def md5?(string)
189   string =~ /^\h{32}$/
190 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
193 def md5_file(filename, lite = false)
194   digest = Digest::MD5.new
195   checksum_file(digest, filename,  lite)
196 end
md5_hex_length() click to toggle source
    # File lib/puppet/util/checksums.rb
203 def md5_hex_length
204   32
205 end
md5_stream(lite = false, &block) click to toggle source
    # File lib/puppet/util/checksums.rb
198 def md5_stream(lite = false, &block)
199   digest = Digest::MD5.new
200   checksum_stream(digest, block, lite)
201 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
208 def md5lite(content)
209   md5(content[0..511])
210 end
md5lite?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
212 def md5lite?(string)
213   md5?(string)
214 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
217 def md5lite_file(filename)
218   md5_file(filename, true)
219 end
md5lite_hex_length() click to toggle source
    # File lib/puppet/util/checksums.rb
225 def md5lite_hex_length
226   md5_hex_length
227 end
md5lite_stream(&block) click to toggle source
    # File lib/puppet/util/checksums.rb
221 def md5lite_stream(&block)
222   md5_stream(true, &block)
223 end
mtime(content) click to toggle source
    # File lib/puppet/util/checksums.rb
229 def mtime(content)
230   ""
231 end
mtime?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
233 def mtime?(string)
234   return true if string.is_a? Time
235   !!DateTime.parse(string)
236 rescue
237   false
238 end
mtime_file(filename) click to toggle source

Return the :mtime timestamp of a file.

    # File lib/puppet/util/checksums.rb
241 def mtime_file(filename)
242   Puppet::FileSystem.stat(filename).mtime
243 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
247 def mtime_stream(&block)
248   noop_digest = FakeChecksum.new
249   yield noop_digest
250   nil
251 end
none(content) click to toggle source
    # File lib/puppet/util/checksums.rb
319 def none(content)
320   ""
321 end
none?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
323 def none?(string)
324   string.empty?
325 end
none_file(filename) click to toggle source

Return a “no checksum”

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

Calculate a checksum using Digest::SHA1.

    # File lib/puppet/util/checksums.rb
254 def sha1(content)
255   Digest::SHA1.hexdigest(content)
256 end
sha1?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
258 def sha1?(string)
259   string =~ /^\h{40}$/
260 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
263 def sha1_file(filename, lite = false)
264   digest = Digest::SHA1.new
265   checksum_file(digest, filename, lite)
266 end
sha1_hex_length() click to toggle source
    # File lib/puppet/util/checksums.rb
273 def sha1_hex_length
274   40
275 end
sha1_stream(lite = false, &block) click to toggle source
    # File lib/puppet/util/checksums.rb
268 def sha1_stream(lite = false, &block)
269   digest = Digest::SHA1.new
270   checksum_stream(digest, block, lite)
271 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
278 def sha1lite(content)
279   sha1(content[0..511])
280 end
sha1lite?(string) click to toggle source
    # File lib/puppet/util/checksums.rb
282 def sha1lite?(string)
283   sha1?(string)
284 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
287 def sha1lite_file(filename)
288   sha1_file(filename, true)
289 end
sha1lite_hex_length() click to toggle source
    # File lib/puppet/util/checksums.rb
295 def sha1lite_hex_length
296   sha1_hex_length
297 end
sha1lite_stream(&block) click to toggle source
    # File lib/puppet/util/checksums.rb
291 def sha1lite_stream(&block)
292   sha1_stream(true, &block)
293 end
sha224(content) click to toggle source

Calculate a checksum using Digest::SHA224.

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

Calculate a checksum using Digest::SHA256.

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

Calculate a checksum using Digest::SHA384.

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

Calculate a checksum using Digest::SHA512.

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

Strip the checksum type from an existing checksum

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

Strip the checksum type from an existing checksum

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