Private/New-NSPSslDerElement.ps1
|
function New-NSPSslDerElement { # One DER element: tag, definite length, content. Enough ASN.1 to write an RSA private key. [CmdletBinding()] [OutputType([byte[]])] param( [Parameter(Mandatory)][byte]$Tag, [Parameter(Mandatory)][AllowEmptyCollection()][byte[]]$Content ) $length = $Content.Length if ($length -lt 0x80) { $header = [byte[]]@($Tag, $length) } else { $lengthBytes = [Collections.Generic.List[byte]]::new() while ($length -gt 0) { $lengthBytes.Insert(0, [byte]($length -band 0xFF)); $length = $length -shr 8 } $header = [byte[]](@($Tag, (0x80 -bor $lengthBytes.Count)) + $lengthBytes.ToArray()) } , [byte[]]($header + $Content) } |