func()

in cvss3/score.go [139:178]


func (v Vector) modifiedImpactScore() float64 {
	var mc, mi, ma float64

	if v.EnvironmentalMetrics.ModifiedConfidentiality.defined() {
		mc = v.EnvironmentalMetrics.ModifiedConfidentiality.weight()
	} else {
		mc = v.BaseMetrics.Confidentiality.weight()
	}

	if v.EnvironmentalMetrics.ModifiedIntegrity.defined() {
		mi = v.EnvironmentalMetrics.ModifiedIntegrity.weight()
	} else {
		mi = v.BaseMetrics.Integrity.weight()
	}

	if v.EnvironmentalMetrics.ModifiedAvailability.defined() {
		ma = v.EnvironmentalMetrics.ModifiedAvailability.weight()
	} else {
		ma = v.BaseMetrics.Availability.weight()
	}

	iscModified := math.Min(
		1-(1-mc*v.EnvironmentalMetrics.ConfidentialityRequirement.weight())*
			(1-mi*v.EnvironmentalMetrics.IntegrityRequirement.weight())*
			(1-ma*v.EnvironmentalMetrics.AvailabilityRequirement.weight()),
		0.915,
	)
	if v.modifiedScopeChanged() {
		switch v.version {
		case version(1):
			return 7.52*(iscModified-0.029) - 3.25*math.Pow((iscModified*0.9731-0.02), 13)
		case version(0):
			fallthrough
		default:
			return 7.52*(iscModified-0.029) - 3.25*math.Pow((iscModified-0.02), 15)
		}
	} else {
		return 6.42 * iscModified
	}
}