Sha256: 250a90faa759075a0e01bebe955ffaecd867bb9011caba0ac188a89015235d9e

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

# CVSS-Suite, a Ruby gem to manage the CVSS vector
#
# Copyright (c) 2016-2022 Siemens AG
# Copyright (c) 2022-2023 0llirocks
#
# Authors:
#   0llirocks <http://0lli.rocks>
#
# This work is licensed under the terms of the MIT license.
# See the LICENSE.md file in the top-level directory.

require_relative '../cvss'
require_relative 'cvss3_base'
require_relative 'cvss3_temporal'
require_relative 'cvss3_environmental'

module CvssSuite
  ##
  # This class represents a CVSS vector in version 3.0.
  class Cvss3 < Cvss
    ##
    # Returns the Version of the CVSS vector.
    def version
      3.0
    end

    ##
    # Returns the Base Score of the CVSS vector.
    def base_score
      check_validity
      Cvss3Helper.round_up(@base.score)
    end

    ##
    # Returns the Temporal Score of the CVSS vector.
    def temporal_score
      Cvss3Helper.round_up(Cvss3Helper.round_up(@base.score) * @temporal.score)
    end

    ##
    # Returns the Environmental Score of the CVSS vector.
    def environmental_score
      return temporal_score unless @environmental.valid?

      Cvss3Helper.round_up(@environmental.score(@base, @temporal))
    end

    ##
    # Returns the vector itself.
    def vector
      "#{CvssSuite::CVSS_VECTOR_BEGINNINGS.find { |beginning| beginning[:version] == version }[:string]}#{@vector}"
    end

    private

    def init_metrics
      @base = Cvss3Base.new(@properties)
      @temporal = Cvss3Temporal.new(@properties)
      @environmental = Cvss3Environmental.new(@properties)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cvss-suite-3.1.1 lib/cvss_suite/cvss3/cvss3.rb