Internals/Internals-AadConversions.ps1
# ############################################################################ Function Convert-AadThumbprintToByteArray { [cmdletbinding()] param( [parameter(Mandatory=$true)] [String] $Thumbprint ) Write-Verbose "Converting thumbrpint '$Thumbprint' to ByteArray" $Bytes = [byte[]]::new($Thumbprint.Length / 2) For($i=0; $i -lt $Thumbprint.Length; $i+=2){ $Bytes[$i/2] = [convert]::ToByte($Thumbprint.Substring($i, 2), 16) } return $Bytes } # ############################################################################ Function Convert-ByteArrayToThumbprint { [cmdletbinding()] param( [parameter(Mandatory=$true)] [Byte[]] $Bytes ) $Thumbprint = [System.Text.StringBuilder]::new($Bytes.Length * 2) ForEach($byte in $Bytes){ $Thumbprint.AppendFormat("{0:x2}", $byte) | Out-Null } return $Thumbprint.ToString() } function Base64UrlEncode($Value) { return $Value.Replace("=", [String]::Empty).Replace('+', '-').Replace('/', '_') } function Base64UrlDecode($Value) { while($Value.Length % 4 -ne 0) { $Value += "=" } return $Value.Replace('-', '+').Replace('_', '/') } function ConvertFrom-Base64String { param ( [Parameter(Mandatory=$true)] [string]$base64string ) return [System.Text.Encoding]::UTF8.GetString(([System.Convert]::FromBase64String($base64string))) } |