{"record":{"id":"f636dbf75fe704f4","repo":"hashicorp/vagrant","slug":"the-specified-checksum-type-is-not-supported-by-va","errorCode":null,"errorMessage":"The specified checksum type is not supported by Vagrant: %{type}.\nVagrant supports the following checksum types:\n\n%{types}","messagePattern":"The specified checksum type is not supported by Vagrant: %(.+?)\\.\nVagrant supports the following checksum types:\n\n%(.+?)","errorType":"exception","errorClass":"Vagrant::Errors::BoxChecksumInvalidType","httpStatus":null,"severity":"error","filePath":"lib/vagrant/util/file_checksum.rb","lineNumber":73,"sourceCode":"              f.readpartial(BUFFER_SIZE, buf)\n              digest.update(buf)\n            rescue EOFError\n              # Although we check for EOF earlier, this seems to happen\n              # sometimes anyways [GH-2716].\n              break\n            end\n          end\n        end\n\n        digest.hexdigest\n      end\n\n      private\n\n      def load_digest(type)\n        digest = CHECKSUM_MAP[type.to_s.downcase.to_sym]\n        if digest.nil?\n          raise Vagrant::Errors::BoxChecksumInvalidType,\n                type: type.to_s,\n                types: CHECKSUM_MAP.keys.join(', ')\n        end\n        digest\n      end\n    end\n  end\nend\n\n# NOTE: This class was not originally namespaced\n# with the Util module so this is left for backwards\n# compatibility.\nFileChecksum = Vagrant::Util::FileChecksum\n","sourceCodeStart":55,"sourceCodeEnd":87,"githubUrl":"https://github.com/hashicorp/vagrant/blob/35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5/lib/vagrant/util/file_checksum.rb#L55-L87","documentation":"Vagrant::Util::FileChecksum#load_digest looks the requested checksum type up in the frozen CHECKSUM_MAP (:md5, :sha1, :sha256, :sha384, :sha512, compared after downcasing); an unknown type raises BoxChecksumInvalidType and the message lists the supported set. It fires whenever a box download specifies a checksum algorithm Vagrant cannot compute.","triggerScenarios":"config.vm.box_download_checksum_type set to anything outside md5/sha1/sha256/sha384/sha512 (e.g. 'crc32', 'blake2b', 'sha224', or a typo like 'sha2566'); hosted box metadata carrying an unsupported checksum type. Uppercase input is fine — the lookup downcases first.","commonSituations":"Copy-pasting a vendor checksum of a kind Vagrant does not implement; hand-written box metadata.json with invented types; templated Vagrantfiles with typos in the type field.","solutions":["Switch to a supported algorithm — prefer sha256 — and supply its digest from the vendor's release page","Drop box_download_checksum and box_download_checksum_type entirely if integrity is handled out-of-band","If the bad type comes from box metadata you host, fix the metadata file"],"exampleFix":"# before\nconfig.vm.box_download_checksum_type = \"crc32\"\nconfig.vm.box_download_checksum = \"a1b2c3d4\"\n\n# after\nconfig.vm.box_download_checksum_type = \"sha256\"\nconfig.vm.box_download_checksum = \"9f2c8b...e81\"","handlingStrategy":"validation","validationCode":"SUPPORTED = Vagrant::Util::FileChecksum::CHECKSUM_MAP.keys.map(&:to_s) # md5, sha1, sha256, sha384, sha512\n\nunless SUPPORTED.include?(type.to_s.downcase)\n  abort \"checksum type must be one of: #{SUPPORTED.join(', ')}\"\nend","typeGuard":null,"tryCatchPattern":"begin\n  Vagrant::Util::FileChecksum.new(path, digest_klass).checksum\nrescue Vagrant::Errors::BoxChecksumInvalidType => e\n  warn e.message # lists the supported types\n  type = 'sha256'; digest_klass = Digest::SHA256\n  retry\nend","preventionTips":["Standardize templates on sha256","Lint generated Vagrantfiles/metadata with a supported-type check","Remember the accepted set is exactly md5, sha1, sha256, sha384, sha512"],"tags":["checksum","box","validation","vagrantfile"],"backgroundTag":"unsupported-checksum-algorithm","analyzedSha":"35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5","analyzedAt":"2026-08-21T13:34:32.514Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}