Skip to content

Cloud Secrets Storage#9

Merged
Redth merged 3 commits into
mainfrom
feature/ci-secrets-export
Feb 4, 2026
Merged

Cloud Secrets Storage#9
Redth merged 3 commits into
mainfrom
feature/ci-secrets-export

Conversation

@Redth

@Redth Redth commented Feb 4, 2026

Copy link
Copy Markdown
Owner

This pull request adds support for multiple cloud secrets providers to the project, enabling secure storage and retrieval of secrets from AWS Secrets Manager, Azure Key Vault, Google Secret Manager, and Infisical. It introduces new provider classes, updates dependencies, and improves logging for certificate management.

Cloud Secrets Provider Integrations:

  • Added AwsSecretsManagerProvider class implementing ICloudSecretsProvider, allowing secret operations (store, retrieve, delete, list, existence check) using AWS Secrets Manager. This includes credential configuration, secret name sanitization, and metadata support. (src/MauiSherpa.Core/Services/AwsSecretsManagerProvider.cs)
  • Added AzureKeyVaultProvider class implementing ICloudSecretsProvider, supporting secret operations via Azure Key Vault with client credentials, base64 encoding for binary values, and key sanitization. (src/MauiSherpa.Core/Services/AzureKeyVaultProvider.cs)

Dependency Updates:

  • Added NuGet package references for AWSSDK.SecretsManager, Azure.Identity, Azure.Security.KeyVault.Secrets, Google.Cloud.SecretManager.V1, and Infisical.Sdk to enable integration with respective cloud providers. (src/MauiSherpa.Core/MauiSherpa.Core.csproj)

Certificate Management Logging:

  • Improved logging in GetCertificatesAsync to include certificate platform information and updated platform assignment logic for certificates. (src/MauiSherpa.Core/Services/AppleConnectService.cs)

Redth added 3 commits February 4, 2026 11:52
Introduce local keychain certificate support and a CI Secrets Wizard UI. Adds new records/enums and ILocalCertificateService to Core.Interfaces for representing local signing identities and CI wizard state. Implements LocalCertificateService which queries the macOS `security` tool, caches identities, matches API certificates to local identities, and can export P12 files (platform-limited; uses macOS security CLI).

Adds a large Blazor component CISecretsWizard.razor that provides a multi-step wizard to select platform, distribution, bundle id, certificates, profiles and export CI secrets (including placeholders for P12 export and profile encoding). Updates MauiProgram and ProvisioningProfiles to integrate the new wizard/service (wiring and minor changes to provisioning UI). Includes TODOs/placeholder behavior for P12 export and profile base64 encoding that should be implemented when signing/export flow is completed.
Introduce cloud secrets storage abstractions and implementations and add certificate sync support.

- Add cloud secrets abstractions (ICloudSecretsProvider, ICloudSecretsService, ICloudSecretsProviderFactory) and related types (CloudSecretsProviderConfig, provider enums, secret metadata/status records).
- Implement providers for AWS Secrets Manager and Azure Key Vault (AwsSecretsManagerProvider, AzureKeyVaultProvider) and add factory (CloudSecretsProviderFactory) and service (CloudSecretsService) to manage provider configs and operations.
- Add CertificateSyncService to upload/download P12s, manage per-certificate cloud keys/passwords/metadata, and helpers to import P12 into the local keychain.
- Update core interfaces: added optional defaultFileName to IDialogService.ShowFileDialogAsync; added Hash to LocalSigningIdentity; extend ILocalCertificateService with ExportCertificateAsync, DeleteCertificateAsync and InvalidateCache.
- Add package references for AWS, Azure, Google Secret Manager and Infisical to the MauiSherpa.Core project file.

These changes enable syncing and managing certificate private keys in cloud secret stores and provide pluggable provider support.
Updates CI secrets wizard and certificate pages; minor AppleConnect logging tweak.

- AppleConnectService: default certificate platform is now empty string when missing and log line includes platform for easier debugging.
- CISecretsWizard.razor: major enhancements:
  - Conditional installer step support (ShowInstallerStep) and step validation adjustments.
  - Added P12 export password input and state (p12ExportPassword).
  - New Build Command section with shell tabs (bash, PowerShell, GitHub Actions), copy button, and generated commands for each shell.
  - CSS/layout tweaks for search box and new build command styles.
  - Improved secret generation: attempts to export signing/installer P12s via LocalCertService.ExportP12Async using the provided export password, includes error handling and adds corresponding password and identity secrets; shows loading messages when downloading/exporting and downloads provisioning profile for export.
  - Helpers added: GetShellLabel, GetBuildCommand, GetTargetFramework, GetMSBuildProperties, GenerateBashCommand, GeneratePowerShellCommand, GenerateGitHubActionsCommand, and CopyBuildCommand.
  - Reset logic now clears selected shell and P12 password.
- Certificates.razor: platform formatting improved (FormatPlatform made instance method), better handling of unknown/empty platforms, added mappings for TV and Vision OS, and adjusted badge ordering/visibility.

These changes add CI-friendly outputs, allow exporting protected P12 artifacts for CI use, and improve platform display and logging for certificates.
@Redth
Redth merged commit 7ffd029 into main Feb 4, 2026
0 of 2 checks passed
@Redth
Redth deleted the feature/ci-secrets-export branch February 4, 2026 23:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant