// *** WARNING: this file was generated by Pulumi SDK Generator. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.ComponentModel;
using Pulumi;

namespace Pulumi.TlsSelfSignedCert
{
    [EnumType]
    public readonly struct Algorithm : IEquatable<Algorithm>
    {
        private readonly string _value;

        private Algorithm(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static Algorithm RSA { get; } = new Algorithm("RSA");
        public static Algorithm ECDSA { get; } = new Algorithm("ECDSA");
        public static Algorithm ED25519 { get; } = new Algorithm("ED25519");

        public static bool operator ==(Algorithm left, Algorithm right) => left.Equals(right);
        public static bool operator !=(Algorithm left, Algorithm right) => !left.Equals(right);

        public static explicit operator string(Algorithm value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is Algorithm other && Equals(other);
        public bool Equals(Algorithm other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct AllowedUses : IEquatable<AllowedUses>
    {
        private readonly string _value;

        private AllowedUses(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static AllowedUses Any_extended { get; } = new AllowedUses("any_extended");
        public static AllowedUses Cert_signing { get; } = new AllowedUses("cert_signing");
        public static AllowedUses Client_auth { get; } = new AllowedUses("client_auth");
        public static AllowedUses Code_signing { get; } = new AllowedUses("code_signing");
        public static AllowedUses Content_commitment { get; } = new AllowedUses("content_commitment");
        public static AllowedUses Crl_signing { get; } = new AllowedUses("crl_signing");
        public static AllowedUses Data_encipherment { get; } = new AllowedUses("data_encipherment");
        public static AllowedUses Decipher_only { get; } = new AllowedUses("decipher_only");
        public static AllowedUses Digital_signature { get; } = new AllowedUses("digital_signature");
        public static AllowedUses Email_protection { get; } = new AllowedUses("email_protection");
        public static AllowedUses Encipher_only { get; } = new AllowedUses("encipher_only");
        public static AllowedUses Ipsec_end_system { get; } = new AllowedUses("ipsec_end_system");
        public static AllowedUses Ipsec_tunnel { get; } = new AllowedUses("ipsec_tunnel");
        public static AllowedUses Ipsec_user { get; } = new AllowedUses("ipsec_user");
        public static AllowedUses Key_agreement { get; } = new AllowedUses("key_agreement");
        public static AllowedUses Key_encipherment { get; } = new AllowedUses("key_encipherment");
        public static AllowedUses Microsoft_commercial_code_signing { get; } = new AllowedUses("microsoft_commercial_code_signing");
        public static AllowedUses Microsoft_kernel_code_signing { get; } = new AllowedUses("microsoft_kernel_code_signing");
        public static AllowedUses Microsoft_server_gated_crypto { get; } = new AllowedUses("microsoft_server_gated_crypto");
        public static AllowedUses Netscape_server_gated_crypto { get; } = new AllowedUses("netscape_server_gated_crypto");
        public static AllowedUses Ocsp_signing { get; } = new AllowedUses("ocsp_signing");
        public static AllowedUses Server_auth { get; } = new AllowedUses("server_auth");
        public static AllowedUses Timestamping { get; } = new AllowedUses("timestamping");

        public static bool operator ==(AllowedUses left, AllowedUses right) => left.Equals(right);
        public static bool operator !=(AllowedUses left, AllowedUses right) => !left.Equals(right);

        public static explicit operator string(AllowedUses value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is AllowedUses other && Equals(other);
        public bool Equals(AllowedUses other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }

    [EnumType]
    public readonly struct EcdsaCurve : IEquatable<EcdsaCurve>
    {
        private readonly string _value;

        private EcdsaCurve(string value)
        {
            _value = value ?? throw new ArgumentNullException(nameof(value));
        }

        public static EcdsaCurve P224 { get; } = new EcdsaCurve("P224");
        public static EcdsaCurve P256 { get; } = new EcdsaCurve("P256");
        public static EcdsaCurve P384 { get; } = new EcdsaCurve("P384");
        public static EcdsaCurve P521 { get; } = new EcdsaCurve("P521");

        public static bool operator ==(EcdsaCurve left, EcdsaCurve right) => left.Equals(right);
        public static bool operator !=(EcdsaCurve left, EcdsaCurve right) => !left.Equals(right);

        public static explicit operator string(EcdsaCurve value) => value._value;

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object? obj) => obj is EcdsaCurve other && Equals(other);
        public bool Equals(EcdsaCurve other) => string.Equals(_value, other._value, StringComparison.Ordinal);

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode() => _value?.GetHashCode() ?? 0;

        public override string ToString() => _value;
    }
}
