{"record":{"id":"31297fbc29a73871","repo":"ruby/rubygems","slug":"missing-signature-for-file","errorCode":null,"errorMessage":"missing signature for #{file}","messagePattern":"missing signature for #(.+?)","errorType":"exception","errorClass":"Gem::Security::Exception","httpStatus":null,"severity":"error","filePath":"lib/rubygems/security/policy.rb","lineNumber":264,"sourceCode":"    if @only_trusted\n      check_trust chain, digester, trust_dir\n    elsif signatures.empty? && digests.empty?\n      # trust is irrelevant if there's no signatures to verify\n    else\n      alert_warning \"#{subject signer} is not trusted for #{full_name}\"\n    end\n\n    signatures.each do |file, _|\n      digest = signer_digests[file]\n\n      raise Gem::Security::Exception, \"missing digest for #{file}\" unless\n        digest\n    end\n\n    signer_digests.each do |file, digest|\n      signature = signatures[file]\n\n      raise Gem::Security::Exception, \"missing signature for #{file}\" unless\n        signature\n\n      check_data signer.public_key, digester, signature, digest if @verify_data\n    end\n\n    true\n  end\n\n  ##\n  # Extracts the certificate chain from the +spec+ and calls #verify to ensure\n  # the signatures and certificate chain is valid according to the policy..\n\n  def verify_signatures(spec, digests, signatures)\n    chain = spec.cert_chain.map do |cert_pem|\n      OpenSSL::X509::Certificate.new cert_pem\n    end\n\n    verify chain, nil, digests, signatures, spec.full_name","sourceCodeStart":246,"sourceCodeEnd":282,"githubUrl":"https://github.com/ruby/rubygems/blob/86cbb817a38ce8477b181c17467a703ded3f2be8/lib/rubygems/security/policy.rb#L246-L282","documentation":"Error \"missing signature for #{file}\" thrown in ruby/rubygems.","triggerScenarios":"Thrown at lib/rubygems/security/policy.rb:264 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-sign the gem so a signature for the named file is included"],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"86cbb817a38ce8477b181c17467a703ded3f2be8","analyzedAt":"2026-08-23T06:27:48.159Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}