import { FormGroup, Select, SelectOption, SelectVariant, } from "@patternfly/react-core"; import { useState } from "react"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; import { HelpItem } from "ui-shared"; import { convertAttributeNameToForm } from "../../util"; import { FormFields } from "../ClientDetails"; import { Toggle } from "./SamlConfig"; const SIGNATURE_ALGORITHMS = [ "RSA_SHA1", "RSA_SHA256", "RSA_SHA256_MGF1", "RSA_SHA512", "RSA_SHA512_MGF1", "DSA_SHA1", ] as const; const KEYNAME_TRANSFORMER = ["NONE", "KEY_ID", "CERT_SUBJECT"] as const; const CANONICALIZATION = [ { name: "EXCLUSIVE", value: "http://www.w3.org/2001/10/xml-exc-c14n#" }, { name: "EXCLUSIVE_WITH_COMMENTS", value: "http://www.w3.org/2001/10/xml-exc-c14n#WithComments", }, { name: "INCLUSIVE", value: "http://www.w3.org/TR/2001/REC-xml-c14n-20010315", }, { name: "INCLUSIVE_WITH_COMMENTS", value: "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments", }, ] as const; export const SamlSignature = () => { const { t } = useTranslation("clients"); const [algOpen, setAlgOpen] = useState(false); const [keyOpen, setKeyOpen] = useState(false); const [canOpen, setCanOpen] = useState(false); const { control, watch } = useFormContext(); const signDocs = watch( convertAttributeNameToForm("attributes.saml.server.signature") ); const signAssertion = watch( convertAttributeNameToForm( "attributes.saml.assertion.signature" ) ); return ( {(signDocs === "true" || signAssertion === "true") && ( <> } > ( "attributes.saml.signature.algorithm" )} defaultValue={SIGNATURE_ALGORITHMS[0]} control={control} render={({ field }) => ( )} /> } > ( "attributes.saml.server.signature.keyinfo.xmlSigKeyInfoKeyNameTransformer" )} defaultValue={KEYNAME_TRANSFORMER[0]} control={control} render={({ field }) => ( )} /> } > ( )} /> )} ); };