public async Task <IActionResult> SignUsingAuthenticode(SignRequest request) { var(token, tokenConfig, tokenError) = _utils.TryGetAccessToken(request); if (tokenError != null) { return(tokenError); } var cert = _secretStorage.LoadAuthenticodeCertificate(token.KeyName, token.Code); var(artifact, artifactError, fileExtention) = await _utils.GetFileFromPayloadAsync(token, tokenConfig, request); if (artifactError != null) { return(artifactError); } var signed = await _signer.SignAsync(artifact, cert, tokenConfig.SignDescription, tokenConfig.SignUrl, fileExtention); return(File(signed, "application/octet-stream")); }
public async Task <IActionResult> SignUsingAuthenticode(AuthenticodeSignRequest request) { AccessToken token; try { token = _accessTokenSerializer.Deserialize(request.AccessToken); } catch (Exception ex) { _logger.LogInformation(ex, "Access token could not be decrypted"); return(Unauthorized()); } if (!_accessTokenConfig.TryGetValue(token.Id, out var tokenConfig) || !tokenConfig.Valid) { _logger.LogWarning("Access token not in config file, or marked as invalid: {Id}", token.Id); return(Unauthorized()); } var cert = _secretStorage.LoadAuthenticodeCertificate(token.KeyName, token.Code); byte[] artifact; try { artifact = await GetFileFromPayloadAsync(token, tokenConfig, request); } catch (Exception ex) { _logger.LogError(ex, "Could not retrieve artifact to sign"); return(BadRequest(ex.Message)); } var signed = await _signer.SignAsync(artifact, cert, tokenConfig.SignDescription, tokenConfig.SignUrl); return(File(signed, "application/octet-stream")); }