M10 PKI: add 6 cmdlets (Get-/Search-/ConvertTo-/Install-/Uninstall-/Export-InfisicalCertificate), BouncyCastle-backed PemCertificateBuilder, formatting/type metadata for PKI models, and cert-manager <-> pki route alias fallback via InvokeWithCandidateFallback. Primary CA paths now /api/v1/cert-manager/ca/internal[/{caId}]; legacy /api/v1/pki/* retained as fallback. 190/190 tests passing.

This commit is contained in:
GraceSolutions
2026-06-03 21:24:09 -04:00
parent 2cbd5c2008
commit 1511dc4411
30 changed files with 2092 additions and 9 deletions
@@ -31,5 +31,63 @@
</TableRowEntries>
</TableControl>
</View>
<View>
<Name>PSInfisicalAPI.Models.InfisicalCertificateAuthority</Name>
<ViewSelectedBy>
<TypeName>PSInfisicalAPI.Models.InfisicalCertificateAuthority</TypeName>
</ViewSelectedBy>
<TableControl>
<TableHeaders>
<TableColumnHeader><Label>Name</Label><Width>28</Width></TableColumnHeader>
<TableColumnHeader><Label>CommonName</Label><Width>32</Width></TableColumnHeader>
<TableColumnHeader><Label>Type</Label><Width>10</Width></TableColumnHeader>
<TableColumnHeader><Label>Status</Label><Width>10</Width></TableColumnHeader>
<TableColumnHeader><Label>KeyAlgorithm</Label><Width>14</Width></TableColumnHeader>
<TableColumnHeader><Label>NotAfter</Label><Width>22</Width></TableColumnHeader>
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem><PropertyName>Name</PropertyName></TableColumnItem>
<TableColumnItem><PropertyName>CommonName</PropertyName></TableColumnItem>
<TableColumnItem><PropertyName>Type</PropertyName></TableColumnItem>
<TableColumnItem><PropertyName>Status</PropertyName></TableColumnItem>
<TableColumnItem><PropertyName>KeyAlgorithm</PropertyName></TableColumnItem>
<TableColumnItem><PropertyName>NotAfter</PropertyName></TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>
<View>
<Name>PSInfisicalAPI.Models.InfisicalCertificate</Name>
<ViewSelectedBy>
<TypeName>PSInfisicalAPI.Models.InfisicalCertificate</TypeName>
</ViewSelectedBy>
<TableControl>
<TableHeaders>
<TableColumnHeader><Label>CommonName</Label><Width>32</Width></TableColumnHeader>
<TableColumnHeader><Label>FriendlyName</Label><Width>24</Width></TableColumnHeader>
<TableColumnHeader><Label>Status</Label><Width>10</Width></TableColumnHeader>
<TableColumnHeader><Label>SerialNumber</Label><Width>20</Width></TableColumnHeader>
<TableColumnHeader><Label>NotAfterUtc</Label><Width>22</Width></TableColumnHeader>
<TableColumnHeader><Label>HasKey</Label><Width>6</Width></TableColumnHeader>
<TableColumnHeader><Label>CaName</Label><Width>18</Width></TableColumnHeader>
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem><PropertyName>CommonName</PropertyName></TableColumnItem>
<TableColumnItem><PropertyName>FriendlyName</PropertyName></TableColumnItem>
<TableColumnItem><PropertyName>Status</PropertyName></TableColumnItem>
<TableColumnItem><PropertyName>SerialNumber</PropertyName></TableColumnItem>
<TableColumnItem><PropertyName>NotAfterUtc</PropertyName></TableColumnItem>
<TableColumnItem><PropertyName>HasPrivateKey</PropertyName></TableColumnItem>
<TableColumnItem><PropertyName>CaName</PropertyName></TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>
</ViewDefinitions>
</Configuration>
@@ -46,4 +46,64 @@
</MemberSet>
</Members>
</Type>
<Type>
<Name>PSInfisicalAPI.Models.InfisicalCertificateAuthority</Name>
<Members>
<MemberSet>
<Name>PSStandardMembers</Name>
<Members>
<PropertySet>
<Name>DefaultDisplayPropertySet</Name>
<ReferencedProperties>
<Name>Name</Name>
<Name>CommonName</Name>
<Name>Type</Name>
<Name>Status</Name>
<Name>KeyAlgorithm</Name>
<Name>NotAfter</Name>
<Name>Id</Name>
</ReferencedProperties>
</PropertySet>
</Members>
</MemberSet>
</Members>
</Type>
<Type>
<Name>PSInfisicalAPI.Models.InfisicalCertificate</Name>
<Members>
<MemberSet>
<Name>PSStandardMembers</Name>
<Members>
<PropertySet>
<Name>DefaultDisplayPropertySet</Name>
<ReferencedProperties>
<Name>CommonName</Name>
<Name>FriendlyName</Name>
<Name>Status</Name>
<Name>SerialNumber</Name>
<Name>NotAfterUtc</Name>
<Name>HasPrivateKey</Name>
<Name>CaName</Name>
</ReferencedProperties>
</PropertySet>
</Members>
</MemberSet>
</Members>
</Type>
<Type>
<Name>PSInfisicalAPI.Models.InfisicalCertificateBundle</Name>
<Members>
<MemberSet>
<Name>PSStandardMembers</Name>
<Members>
<PropertySet>
<Name>DefaultDisplayPropertySet</Name>
<ReferencedProperties>
<Name>SerialNumber</Name>
</ReferencedProperties>
</PropertySet>
</Members>
</MemberSet>
</Members>
</Type>
</Types>
+9 -3
View File
@@ -1,6 +1,6 @@
@{
RootModule = 'PSInfisicalAPI.psm1'
ModuleVersion = '2026.06.04.0020'
ModuleVersion = '2026.06.04.0123'
GUID = 'b8a2f3d4-7c51-4d2f-9e6a-1f0c8b3d4e51'
Author = 'Grace Solutions'
CompanyName = 'Grace Solutions'
@@ -39,7 +39,13 @@
'Get-InfisicalTag',
'New-InfisicalTag',
'Update-InfisicalTag',
'Remove-InfisicalTag'
'Remove-InfisicalTag',
'Get-InfisicalCertificateAuthority',
'Search-InfisicalCertificate',
'ConvertTo-InfisicalCertificate',
'Install-InfisicalCertificate',
'Uninstall-InfisicalCertificate',
'Export-InfisicalCertificate'
)
AliasesToExport = @()
VariablesToExport = @()
@@ -51,7 +57,7 @@
LicenseUri = 'https://www.gnu.org/licenses/agpl-3.0.html'
ProjectUri = 'https://prod.git.gracesolution.info/gsadmin/PSInfisicalAPI'
ReleaseNotes = 'See CHANGELOG.md in the project repository for release history.'
CommitHash = '211fbcf34dbb'
CommitHash = '2cbd5c2008f5'
}
}
}
Binary file not shown.