{"record":{"id":"9c0e666b00ec290f","repo":"ruby/rubygems","slug":"message-not-valid-after-not-after","errorCode":null,"errorMessage":"#{message} not valid after #{not_after}","messagePattern":"#(.+?) not valid after #(.+?)","errorType":"exception","errorClass":"Gem::Security::Exception","httpStatus":null,"severity":"error","filePath":"lib/rubygems/security/policy.rb","lineNumber":98,"sourceCode":"  end\n\n  ##\n  # Ensures that +signer+ is valid for +time+ and was signed by the +issuer+.\n  # If the +issuer+ is +nil+ no verification is performed.\n\n  def check_cert(signer, issuer, time)\n    raise Gem::Security::Exception, \"missing signing certificate\" unless\n      signer\n\n    message = \"certificate #{signer.subject}\"\n\n    if (not_before = signer.not_before) && not_before > time\n      raise Gem::Security::Exception,\n            \"#{message} not valid before #{not_before}\"\n    end\n\n    if (not_after = signer.not_after) && not_after < time\n      raise Gem::Security::Exception, \"#{message} not valid after #{not_after}\"\n    end\n\n    if issuer && !signer.verify(issuer.public_key)\n      raise Gem::Security::Exception,\n            \"#{message} was not issued by #{issuer.subject}\"\n    end\n\n    true\n  end\n\n  ##\n  # Ensures the public key of +key+ matches the public key in +signer+\n\n  def check_key(signer, key)\n    unless signer && key\n      return true unless @only_signed\n\n      raise Gem::Security::Exception, \"missing key or signature\"","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/ruby/rubygems/blob/86cbb817a38ce8477b181c17467a703ded3f2be8/lib/rubygems/security/policy.rb#L80-L116","documentation":"Error \"#{message} not valid after #{not_after}\" thrown in ruby/rubygems.","triggerScenarios":"Thrown at lib/rubygems/security/policy.rb:98 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["The certificate has expired; renew/re-issue it and re-sign the gem","For your own gems: `gem cert --re-sign` or build a new certificate"],"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"}