// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) Go Code Generator. DO NOT EDIT.

package armiotfirmwaredefense

// ActionType - Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs.
type ActionType string

const (
	// ActionTypeInternal - Actions are for internal-only APIs.
	ActionTypeInternal ActionType = "Internal"
)

// PossibleActionTypeValues returns the possible values for the ActionType const type.
func PossibleActionTypeValues() []ActionType {
	return []ActionType{
		ActionTypeInternal,
	}
}

// CertificateUsage - Activities for which the cryptographic certificate can be used.
type CertificateUsage string

const (
	// CertificateUsageCRLSign - This certificate can be used to verify a certificate revocation list
	CertificateUsageCRLSign CertificateUsage = "crlSign"
	// CertificateUsageClientAuthentication - This certificate can be used to authenticate a client in a TLS/SSL connection
	CertificateUsageClientAuthentication CertificateUsage = "clientAuth"
	// CertificateUsageCodeSigning - This certificate can be used to authenticate a code object
	CertificateUsageCodeSigning CertificateUsage = "codeSigning"
	// CertificateUsageContentCommitment - A synonym for NonRepudiation used in newer x509 certificates
	CertificateUsageContentCommitment CertificateUsage = "contentCommitment"
	// CertificateUsageDataEncipherment - This certificate can be used to decrypt a private or secret key
	CertificateUsageDataEncipherment CertificateUsage = "dataEncipherment"
	// CertificateUsageDecipherOnly - This certificate can only be used to decrypt data
	CertificateUsageDecipherOnly CertificateUsage = "decipherOnly"
	// CertificateUsageDigitalSignature - This certificate can be used to add a signature to a message
	CertificateUsageDigitalSignature CertificateUsage = "digitalSignature"
	// CertificateUsageEmailProtection - This certificate can be used to authenticate an email address
	CertificateUsageEmailProtection CertificateUsage = "emailProtection"
	// CertificateUsageEncipherOnly - This certificate can be only be used to encrypt data
	CertificateUsageEncipherOnly CertificateUsage = "encipherOnly"
	// CertificateUsageKeyAgreement - This certificate can be used to perform a key agreement, such as with a Diffie-Hellman key
	// exchange
	CertificateUsageKeyAgreement CertificateUsage = "keyAgreement"
	// CertificateUsageKeyCertSign - This certificate can be used to verify a other public keys
	CertificateUsageKeyCertSign CertificateUsage = "keyCertSign"
	// CertificateUsageKeyEncipherment - This certificate can be used to encrypt a private or secret key
	CertificateUsageKeyEncipherment CertificateUsage = "keyEncipherment"
	// CertificateUsageNonRepudiation - This certificates provides a non-repudiation service that protects against false denial
	// of a message
	CertificateUsageNonRepudiation CertificateUsage = "nonRepudiation"
	// CertificateUsageOCSPSigning - This certificate can be used to sign OCSP responses
	CertificateUsageOCSPSigning CertificateUsage = "ocspSigning"
	// CertificateUsageServerAuthentication - This certificate can be used to authenticate a server in a TLS/SSL connection
	CertificateUsageServerAuthentication CertificateUsage = "serverAuth"
	// CertificateUsageTimeStamping - This certificate binds the hash of an object to a time
	CertificateUsageTimeStamping CertificateUsage = "timeStamping"
)

// PossibleCertificateUsageValues returns the possible values for the CertificateUsage const type.
func PossibleCertificateUsageValues() []CertificateUsage {
	return []CertificateUsage{
		CertificateUsageCRLSign,
		CertificateUsageClientAuthentication,
		CertificateUsageCodeSigning,
		CertificateUsageContentCommitment,
		CertificateUsageDataEncipherment,
		CertificateUsageDecipherOnly,
		CertificateUsageDigitalSignature,
		CertificateUsageEmailProtection,
		CertificateUsageEncipherOnly,
		CertificateUsageKeyAgreement,
		CertificateUsageKeyCertSign,
		CertificateUsageKeyEncipherment,
		CertificateUsageNonRepudiation,
		CertificateUsageOCSPSigning,
		CertificateUsageServerAuthentication,
		CertificateUsageTimeStamping,
	}
}

// CreatedByType - The kind of entity that created the resource.
type CreatedByType string

const (
	// CreatedByTypeApplication - The entity was created by an application.
	CreatedByTypeApplication CreatedByType = "Application"
	// CreatedByTypeKey - The entity was created by a key.
	CreatedByTypeKey CreatedByType = "Key"
	// CreatedByTypeManagedIdentity - The entity was created by a managed identity.
	CreatedByTypeManagedIdentity CreatedByType = "ManagedIdentity"
	// CreatedByTypeUser - The entity was created by a user.
	CreatedByTypeUser CreatedByType = "User"
)

// PossibleCreatedByTypeValues returns the possible values for the CreatedByType const type.
func PossibleCreatedByTypeValues() []CreatedByType {
	return []CreatedByType{
		CreatedByTypeApplication,
		CreatedByTypeKey,
		CreatedByTypeManagedIdentity,
		CreatedByTypeUser,
	}
}

// CryptoKeyType - Different types of cryptographic keys.
type CryptoKeyType string

const (
	// CryptoKeyTypePrivate - The key is an asymmetric private key.
	CryptoKeyTypePrivate CryptoKeyType = "Private"
	// CryptoKeyTypePublic - The key is an asymmetric public key.
	CryptoKeyTypePublic CryptoKeyType = "Public"
)

// PossibleCryptoKeyTypeValues returns the possible values for the CryptoKeyType const type.
func PossibleCryptoKeyTypeValues() []CryptoKeyType {
	return []CryptoKeyType{
		CryptoKeyTypePrivate,
		CryptoKeyTypePublic,
	}
}

// ExecutableClass - String to indicate if the executable is 32 or 64 bit.
type ExecutableClass string

const (
	// ExecutableClassX64 - The binary is 64-bit.
	ExecutableClassX64 ExecutableClass = "x64"
	// ExecutableClassX86 - The binary is 32-bit.
	ExecutableClassX86 ExecutableClass = "x86"
)

// PossibleExecutableClassValues returns the possible values for the ExecutableClass const type.
func PossibleExecutableClassValues() []ExecutableClass {
	return []ExecutableClass{
		ExecutableClassX64,
		ExecutableClassX86,
	}
}

// Origin - The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default
// value is "user,system"
type Origin string

const (
	// OriginSystem - Indicates the operation is initiated by a system.
	OriginSystem Origin = "system"
	// OriginUser - Indicates the operation is initiated by a user.
	OriginUser Origin = "user"
	// OriginUserSystem - Indicates the operation is initiated by a user or system.
	OriginUserSystem Origin = "user,system"
)

// PossibleOriginValues returns the possible values for the Origin const type.
func PossibleOriginValues() []Origin {
	return []Origin{
		OriginSystem,
		OriginUser,
		OriginUserSystem,
	}
}

// ProvisioningState - The status of a firmware analysis job.
type ProvisioningState string

const (
	// ProvisioningStateAnalyzing - Analysis is being run on the firmware
	ProvisioningStateAnalyzing ProvisioningState = "Analyzing"
	// ProvisioningStateCanceled - The request was canceled.
	ProvisioningStateCanceled ProvisioningState = "Canceled"
	// ProvisioningStateExtracting - The Firmware is currently being extracted.
	ProvisioningStateExtracting ProvisioningState = "Extracting"
	// ProvisioningStateFailed - There was an error during the request.
	ProvisioningStateFailed ProvisioningState = "Failed"
	// ProvisioningStatePending - The request is queued and awaiting execution
	ProvisioningStatePending ProvisioningState = "Pending"
	// ProvisioningStateSucceeded - The request has successfully completed.
	ProvisioningStateSucceeded ProvisioningState = "Succeeded"
)

// PossibleProvisioningStateValues returns the possible values for the ProvisioningState const type.
func PossibleProvisioningStateValues() []ProvisioningState {
	return []ProvisioningState{
		ProvisioningStateAnalyzing,
		ProvisioningStateCanceled,
		ProvisioningStateExtracting,
		ProvisioningStateFailed,
		ProvisioningStatePending,
		ProvisioningStateSucceeded,
	}
}

// SKUTier - This field is required to be implemented by the Resource Provider if the service has more than one tier, but
// is not required on a PUT.
type SKUTier string

const (
	// SKUTierBasic - The Basic service tier.
	SKUTierBasic SKUTier = "Basic"
	// SKUTierFree - The Free service tier.
	SKUTierFree SKUTier = "Free"
	// SKUTierPremium - The Premium service tier.
	SKUTierPremium SKUTier = "Premium"
	// SKUTierStandard - The Standard service tier.
	SKUTierStandard SKUTier = "Standard"
)

// PossibleSKUTierValues returns the possible values for the SKUTier const type.
func PossibleSKUTierValues() []SKUTier {
	return []SKUTier{
		SKUTierBasic,
		SKUTierFree,
		SKUTierPremium,
		SKUTierStandard,
	}
}

// Status - The status of a firmware analysis job.
type Status string

const (
	// StatusAnalyzing - Analysis is being run on the firmware
	StatusAnalyzing Status = "Analyzing"
	// StatusError - An error occurred while running firmware analysis
	StatusError Status = "Error"
	// StatusExtracting - The firmware is currently being extracted
	StatusExtracting Status = "Extracting"
	// StatusPending - The analysis job is queued
	StatusPending Status = "Pending"
	// StatusReady - Analysis job results are ready
	StatusReady Status = "Ready"
)

// PossibleStatusValues returns the possible values for the Status const type.
func PossibleStatusValues() []Status {
	return []Status{
		StatusAnalyzing,
		StatusError,
		StatusExtracting,
		StatusPending,
		StatusReady,
	}
}

// SummaryType - Describes the type of summary.
type SummaryType string

const (
	// SummaryTypeBinaryHardening - The summary contains information about the binary hardening analysis results
	SummaryTypeBinaryHardening SummaryType = "BinaryHardening"
	// SummaryTypeCommonVulnerabilitiesAndExposures - The summary contains information about the Common Vulnerabilities and Exposures
	// analysis results
	SummaryTypeCommonVulnerabilitiesAndExposures SummaryType = "CommonVulnerabilitiesAndExposures"
	// SummaryTypeCryptoCertificate - The summary contains information about the cryptographic certificate analysis results
	SummaryTypeCryptoCertificate SummaryType = "CryptoCertificate"
	// SummaryTypeCryptoKey - The summary contains information about the cryptographic key analysis results
	SummaryTypeCryptoKey SummaryType = "CryptoKey"
	// SummaryTypeFirmware - The summary contains information about the submitted firmware
	SummaryTypeFirmware SummaryType = "Firmware"
)

// PossibleSummaryTypeValues returns the possible values for the SummaryType const type.
func PossibleSummaryTypeValues() []SummaryType {
	return []SummaryType{
		SummaryTypeBinaryHardening,
		SummaryTypeCommonVulnerabilitiesAndExposures,
		SummaryTypeCryptoCertificate,
		SummaryTypeCryptoKey,
		SummaryTypeFirmware,
	}
}
