// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.gcp.identityplatform.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Integer;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class ProjectDefaultConfigSignInHashConfigArgs extends com.pulumi.resources.ResourceArgs {

    public static final ProjectDefaultConfigSignInHashConfigArgs Empty = new ProjectDefaultConfigSignInHashConfigArgs();

    /**
     * (Output)
     * Different password hash algorithms used in Identity Toolkit.
     * 
     */
    @Import(name="algorithm")
    private @Nullable Output<String> algorithm;

    /**
     * @return (Output)
     * Different password hash algorithms used in Identity Toolkit.
     * 
     */
    public Optional<Output<String>> algorithm() {
        return Optional.ofNullable(this.algorithm);
    }

    /**
     * (Output)
     * Memory cost for hash calculation. Used by scrypt and other similar password derivation algorithms. See https://tools.ietf.org/html/rfc7914 for explanation of field.
     * 
     */
    @Import(name="memoryCost")
    private @Nullable Output<Integer> memoryCost;

    /**
     * @return (Output)
     * Memory cost for hash calculation. Used by scrypt and other similar password derivation algorithms. See https://tools.ietf.org/html/rfc7914 for explanation of field.
     * 
     */
    public Optional<Output<Integer>> memoryCost() {
        return Optional.ofNullable(this.memoryCost);
    }

    /**
     * (Output)
     * How many rounds for hash calculation. Used by scrypt and other similar password derivation algorithms.
     * 
     */
    @Import(name="rounds")
    private @Nullable Output<Integer> rounds;

    /**
     * @return (Output)
     * How many rounds for hash calculation. Used by scrypt and other similar password derivation algorithms.
     * 
     */
    public Optional<Output<Integer>> rounds() {
        return Optional.ofNullable(this.rounds);
    }

    /**
     * (Output)
     * Non-printable character to be inserted between the salt and plain text password in base64.
     * 
     */
    @Import(name="saltSeparator")
    private @Nullable Output<String> saltSeparator;

    /**
     * @return (Output)
     * Non-printable character to be inserted between the salt and plain text password in base64.
     * 
     */
    public Optional<Output<String>> saltSeparator() {
        return Optional.ofNullable(this.saltSeparator);
    }

    /**
     * (Output)
     * Signer key in base64.
     * 
     */
    @Import(name="signerKey")
    private @Nullable Output<String> signerKey;

    /**
     * @return (Output)
     * Signer key in base64.
     * 
     */
    public Optional<Output<String>> signerKey() {
        return Optional.ofNullable(this.signerKey);
    }

    private ProjectDefaultConfigSignInHashConfigArgs() {}

    private ProjectDefaultConfigSignInHashConfigArgs(ProjectDefaultConfigSignInHashConfigArgs $) {
        this.algorithm = $.algorithm;
        this.memoryCost = $.memoryCost;
        this.rounds = $.rounds;
        this.saltSeparator = $.saltSeparator;
        this.signerKey = $.signerKey;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(ProjectDefaultConfigSignInHashConfigArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private ProjectDefaultConfigSignInHashConfigArgs $;

        public Builder() {
            $ = new ProjectDefaultConfigSignInHashConfigArgs();
        }

        public Builder(ProjectDefaultConfigSignInHashConfigArgs defaults) {
            $ = new ProjectDefaultConfigSignInHashConfigArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param algorithm (Output)
         * Different password hash algorithms used in Identity Toolkit.
         * 
         * @return builder
         * 
         */
        public Builder algorithm(@Nullable Output<String> algorithm) {
            $.algorithm = algorithm;
            return this;
        }

        /**
         * @param algorithm (Output)
         * Different password hash algorithms used in Identity Toolkit.
         * 
         * @return builder
         * 
         */
        public Builder algorithm(String algorithm) {
            return algorithm(Output.of(algorithm));
        }

        /**
         * @param memoryCost (Output)
         * Memory cost for hash calculation. Used by scrypt and other similar password derivation algorithms. See https://tools.ietf.org/html/rfc7914 for explanation of field.
         * 
         * @return builder
         * 
         */
        public Builder memoryCost(@Nullable Output<Integer> memoryCost) {
            $.memoryCost = memoryCost;
            return this;
        }

        /**
         * @param memoryCost (Output)
         * Memory cost for hash calculation. Used by scrypt and other similar password derivation algorithms. See https://tools.ietf.org/html/rfc7914 for explanation of field.
         * 
         * @return builder
         * 
         */
        public Builder memoryCost(Integer memoryCost) {
            return memoryCost(Output.of(memoryCost));
        }

        /**
         * @param rounds (Output)
         * How many rounds for hash calculation. Used by scrypt and other similar password derivation algorithms.
         * 
         * @return builder
         * 
         */
        public Builder rounds(@Nullable Output<Integer> rounds) {
            $.rounds = rounds;
            return this;
        }

        /**
         * @param rounds (Output)
         * How many rounds for hash calculation. Used by scrypt and other similar password derivation algorithms.
         * 
         * @return builder
         * 
         */
        public Builder rounds(Integer rounds) {
            return rounds(Output.of(rounds));
        }

        /**
         * @param saltSeparator (Output)
         * Non-printable character to be inserted between the salt and plain text password in base64.
         * 
         * @return builder
         * 
         */
        public Builder saltSeparator(@Nullable Output<String> saltSeparator) {
            $.saltSeparator = saltSeparator;
            return this;
        }

        /**
         * @param saltSeparator (Output)
         * Non-printable character to be inserted between the salt and plain text password in base64.
         * 
         * @return builder
         * 
         */
        public Builder saltSeparator(String saltSeparator) {
            return saltSeparator(Output.of(saltSeparator));
        }

        /**
         * @param signerKey (Output)
         * Signer key in base64.
         * 
         * @return builder
         * 
         */
        public Builder signerKey(@Nullable Output<String> signerKey) {
            $.signerKey = signerKey;
            return this;
        }

        /**
         * @param signerKey (Output)
         * Signer key in base64.
         * 
         * @return builder
         * 
         */
        public Builder signerKey(String signerKey) {
            return signerKey(Output.of(signerKey));
        }

        public ProjectDefaultConfigSignInHashConfigArgs build() {
            return $;
        }
    }

}
