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 39 def checksum?(string) 40 # 'sha256lite'.length == 10 41 string =~ /^\{(\w{3,10})\}\S+/ 42 end
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
# 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
# File lib/puppet/util/checksums.rb 298 def ctime(content) 299 "" 300 end
# 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
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
# File lib/puppet/util/checksums.rb 314 def ctime_stream(&block) 315 mtime_stream(&block) 316 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 22 def known_checksum_types 23 KNOWN_CHECKSUMS 24 end
Calculate a checksum using Digest::MD5.
# File lib/puppet/util/checksums.rb 183 def md5(content) 184 Digest::MD5.hexdigest(content) 185 end
# File lib/puppet/util/checksums.rb 187 def md5?(string) 188 string =~ /^\h{32}$/ 189 end
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
# File lib/puppet/util/checksums.rb 202 def md5_hex_length 203 32 204 end
# 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
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
# File lib/puppet/util/checksums.rb 211 def md5lite?(string) 212 md5?(string) 213 end
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
# File lib/puppet/util/checksums.rb 224 def md5lite_hex_length 225 md5_hex_length 226 end
# File lib/puppet/util/checksums.rb 220 def md5lite_stream(&block) 221 md5_stream(true, &block) 222 end
# File lib/puppet/util/checksums.rb 228 def mtime(content) 229 "" 230 end
# 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
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
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
# File lib/puppet/util/checksums.rb 318 def none(content) 319 "" 320 end
# File lib/puppet/util/checksums.rb 322 def none?(string) 323 string.empty? 324 end
Return a “no checksum”
# File lib/puppet/util/checksums.rb 327 def none_file(filename) 328 "" 329 end
# File lib/puppet/util/checksums.rb 331 def none_stream 332 noop_digest = FakeChecksum.new 333 yield noop_digest 334 "" 335 end
Calculate a checksum using Digest::SHA1.
# File lib/puppet/util/checksums.rb 253 def sha1(content) 254 Digest::SHA1.hexdigest(content) 255 end
# File lib/puppet/util/checksums.rb 257 def sha1?(string) 258 string =~ /^\h{40}$/ 259 end
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
# File lib/puppet/util/checksums.rb 272 def sha1_hex_length 273 40 274 end
# 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
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
# File lib/puppet/util/checksums.rb 281 def sha1lite?(string) 282 sha1?(string) 283 end
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
# File lib/puppet/util/checksums.rb 294 def sha1lite_hex_length 295 sha1_hex_length 296 end
# File lib/puppet/util/checksums.rb 290 def sha1lite_stream(&block) 291 sha1_stream(true, &block) 292 end
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
# File lib/puppet/util/checksums.rb 161 def sha224?(string) 162 string =~ /^\h{56}$/ 163 end
# 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
# File lib/puppet/util/checksums.rb 178 def sha224_hex_length 179 56 180 end
# 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
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
# File lib/puppet/util/checksums.rb 60 def sha256?(string) 61 string =~ /^\h{64}$/ 62 end
# 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
# File lib/puppet/util/checksums.rb 77 def sha256_hex_length 78 64 79 end
# 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
# File lib/puppet/util/checksums.rb 81 def sha256lite(content) 82 sha256(content[0..511]) 83 end
# File lib/puppet/util/checksums.rb 85 def sha256lite?(string) 86 sha256?(string) 87 end
# File lib/puppet/util/checksums.rb 89 def sha256lite_file(filename) 90 sha256_file(filename, true) 91 end
# File lib/puppet/util/checksums.rb 97 def sha256lite_hex_length 98 sha256_hex_length 99 end
# File lib/puppet/util/checksums.rb 93 def sha256lite_stream(&block) 94 sha256_stream(true, &block) 95 end
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
# File lib/puppet/util/checksums.rb 107 def sha384?(string) 108 string =~ /^\h{96}$/ 109 end
# 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
# File lib/puppet/util/checksums.rb 124 def sha384_hex_length 125 96 126 end
# 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
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
# File lib/puppet/util/checksums.rb 134 def sha512?(string) 135 string =~ /^\h{128}$/ 136 end
# 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
# File lib/puppet/util/checksums.rb 151 def sha512_hex_length 152 128 153 end
# 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
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
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
# File lib/puppet/util/checksums.rb 26 def valid_checksum?(type, value) 27 !!send("#{type}?", value) 28 rescue NoMethodError 29 false 30 end