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.");
}