public async Task SetWorkspaceConfig()

in src/ccf/ccf-provider-client/Controllers/WorkspacesController.cs [40:102]


    public async Task<IActionResult> SetWorkspaceConfig(
        [FromForm] WorkspaceConfigurationModel model)
    {
        if (model.SigningCertPemFile == null && string.IsNullOrEmpty(model.SigningCertId))
        {
            return this.BadRequest("Either SigningCertPemFile or SigningCertId must be specified");
        }

        if (model.SigningCertPemFile != null && !string.IsNullOrEmpty(model.SigningCertId))
        {
            return this.BadRequest(
                "Only one of SigningCertPemFile or SigningCertId must be specified");
        }

        CoseSignKey coseSignKey;
        if (model.SigningCertPemFile != null)
        {
            if (model.SigningCertPemFile.Length <= 0)
            {
                return this.BadRequest("No signing cert file was uploaded.");
            }

            if (model.SigningKeyPemFile == null || model.SigningKeyPemFile.Length <= 0)
            {
                return this.BadRequest("No signing key file was uploaded.");
            }

            string signingCert;
            using var reader = new StreamReader(model.SigningCertPemFile.OpenReadStream());
            signingCert = await reader.ReadToEndAsync();

            string signingKey;
            using var reader2 = new StreamReader(model.SigningKeyPemFile.OpenReadStream());
            signingKey = await reader2.ReadToEndAsync();

            coseSignKey = new CoseSignKey(signingCert, signingKey);
        }
        else
        {
            Uri signingCertId;
            try
            {
                signingCertId = new Uri(model.SigningCertId!);
            }
            catch (Exception e)
            {
                return this.BadRequest($"Invalid signingKid value: {e.Message}.");
            }

            var creds = new DefaultAzureCredential();
            coseSignKey = await CoseSignKey.FromKeyVault(signingCertId, creds);
        }

        this.ccfClientManager.SetSigningConfig(new SigningConfiguration
        {
            CoseSignKey = coseSignKey
        });
        this.agentClientManager.SetSigningConfig(new SigningConfiguration
        {
            CoseSignKey = coseSignKey
        });
        return this.Ok("Workspace details configured successfully.");
    }