{"record":{"id":"bab67918ddb7d9f6","repo":"ruby/rubygems","slug":"missing-signing-chain","errorCode":null,"errorMessage":"missing signing chain","messagePattern":"missing signing chain","errorType":"exception","errorClass":"Gem::Security::Exception","httpStatus":null,"severity":"error","filePath":"lib/rubygems/security/policy.rb","lineNumber":57,"sourceCode":"\n    policy.each_pair do |key, val|\n      case key\n      when :verify_data   then @verify_data   = val\n      when :verify_signer then @verify_signer = val\n      when :verify_chain  then @verify_chain  = val\n      when :verify_root   then @verify_root   = val\n      when :only_trusted  then @only_trusted  = val\n      when :only_signed   then @only_signed   = val\n      end\n    end\n  end\n\n  ##\n  # Verifies each certificate in +chain+ has signed the following certificate\n  # and is valid for the given +time+.\n\n  def check_chain(chain, time)\n    raise Gem::Security::Exception, \"missing signing chain\" unless chain\n    raise Gem::Security::Exception, \"empty signing chain\" if chain.empty?\n\n    begin\n      chain.each_cons 2 do |issuer, cert|\n        check_cert cert, issuer, time\n      end\n\n      true\n    rescue Gem::Security::Exception => e\n      raise Gem::Security::Exception, \"invalid signing chain: #{e.message}\"\n    end\n  end\n\n  ##\n  # Verifies that +data+ matches the +signature+ created by +public_key+ and\n  # the +digest+ algorithm.\n\n  def check_data(public_key, digest, signature, data)","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/ruby/rubygems/blob/86cbb817a38ce8477b181c17467a703ded3f2be8/lib/rubygems/security/policy.rb#L39-L75","documentation":"Error \"missing signing chain\" thrown in ruby/rubygems.","triggerScenarios":"Thrown at lib/rubygems/security/policy.rb:57 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide the certificate chain when signing/installing (the gem carries none)"],"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"}