module Puppet::Util::Checksums
A stand-alone module for calculating checksums in a generic way.
Constants
- KNOWN_CHECKSUMS
Public Instance Methods
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
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
# 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
# File lib/puppet/util/checksums.rb 299 def ctime(content) 300 "" 301 end
# 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
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
# File lib/puppet/util/checksums.rb 315 def ctime_stream(&block) 316 mtime_stream(&block) 317 end
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
Calculate a checksum using Digest::MD5.
# File lib/puppet/util/checksums.rb 184 def md5(content) 185 Digest::MD5.hexdigest(content) 186 end
# File lib/puppet/util/checksums.rb 188 def md5?(string) 189 string =~ /^\h{32}$/ 190 end
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
# File lib/puppet/util/checksums.rb 203 def md5_hex_length 204 32 205 end
# 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
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
# File lib/puppet/util/checksums.rb 212 def md5lite?(string) 213 md5?(string) 214 end
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
# File lib/puppet/util/checksums.rb 225 def md5lite_hex_length 226 md5_hex_length 227 end
# File lib/puppet/util/checksums.rb 221 def md5lite_stream(&block) 222 md5_stream(true, &block) 223 end
# File lib/puppet/util/checksums.rb 229 def mtime(content) 230 "" 231 end
# 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
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
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
# File lib/puppet/util/checksums.rb 319 def none(content) 320 "" 321 end
# File lib/puppet/util/checksums.rb 323 def none?(string) 324 string.empty? 325 end
Return a “no checksum”
# File lib/puppet/util/checksums.rb 328 def none_file(filename) 329 "" 330 end
# File lib/puppet/util/checksums.rb 332 def none_stream 333 noop_digest = FakeChecksum.new 334 yield noop_digest 335 "" 336 end
Calculate a checksum using Digest::SHA1.
# File lib/puppet/util/checksums.rb 254 def sha1(content) 255 Digest::SHA1.hexdigest(content) 256 end
# File lib/puppet/util/checksums.rb 258 def sha1?(string) 259 string =~ /^\h{40}$/ 260 end
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
# File lib/puppet/util/checksums.rb 273 def sha1_hex_length 274 40 275 end
# 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
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
# File lib/puppet/util/checksums.rb 282 def sha1lite?(string) 283 sha1?(string) 284 end
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
# File lib/puppet/util/checksums.rb 295 def sha1lite_hex_length 296 sha1_hex_length 297 end
# File lib/puppet/util/checksums.rb 291 def sha1lite_stream(&block) 292 sha1_stream(true, &block) 293 end
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
# File lib/puppet/util/checksums.rb 162 def sha224?(string) 163 string =~ /^\h{56}$/ 164 end
# 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
# File lib/puppet/util/checksums.rb 179 def sha224_hex_length 180 56 181 end
# 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
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
# File lib/puppet/util/checksums.rb 61 def sha256?(string) 62 string =~ /^\h{64}$/ 63 end
# 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
# File lib/puppet/util/checksums.rb 78 def sha256_hex_length 79 64 80 end
# 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
# File lib/puppet/util/checksums.rb 82 def sha256lite(content) 83 sha256(content[0..511]) 84 end
# File lib/puppet/util/checksums.rb 86 def sha256lite?(string) 87 sha256?(string) 88 end
# File lib/puppet/util/checksums.rb 90 def sha256lite_file(filename) 91 sha256_file(filename, true) 92 end
# File lib/puppet/util/checksums.rb 98 def sha256lite_hex_length 99 sha256_hex_length 100 end
# File lib/puppet/util/checksums.rb 94 def sha256lite_stream(&block) 95 sha256_stream(true, &block) 96 end
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
# File lib/puppet/util/checksums.rb 108 def sha384?(string) 109 string =~ /^\h{96}$/ 110 end
# 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
# File lib/puppet/util/checksums.rb 125 def sha384_hex_length 126 96 127 end
# 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
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
# File lib/puppet/util/checksums.rb 135 def sha512?(string) 136 string =~ /^\h{128}$/ 137 end
# 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
# File lib/puppet/util/checksums.rb 152 def sha512_hex_length 153 128 154 end
# 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
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
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
# File lib/puppet/util/checksums.rb 27 def valid_checksum?(type, value) 28 !!send("#{type}?", value) 29 rescue NoMethodError 30 false 31 end