Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. function Invoke-DecryptWithCert{
  2. param(
  3. [parameter(mandatory=$True,Position=0)]
  4. $CipherText,
  5. [System.Security.Cryptography.X509Certificates.X509Certificate]$Certificate
  6. )
  7.  
  8. if(!$Certificate){
  9. $Certificate = Get-ChildItem Cert:\CurrentUser\My
  10. if($Certificate.Count -gt 1){ Write-Error -Message "Multiple Certificates detected. Please pass one as a parameter"}
  11. }elseif($Certificate.GetType().BaseType.Name -ne "X509Certificate"){
  12. Write-Error -Category InvalidArgument -Message "Certificate not valid"
  13. Return $Null
  14. }
  15. $type = $CipherText.GetType().Name
  16. if($type -ne "String"){
  17. Write-Error -Category InvalidArgument -Message "Input must be a string"
  18. }
  19. $EncryptedBytes = [System.Convert]::FromBase64String($CipherText)
  20. $DecryptedBytes = $Certificate.PrivateKey.Decrypt($EncryptedBytes, $true)
  21. $DecryptedTXT = [system.text.encoding]::UTF8.GetString($DecryptedBytes)
  22. Return $DecryptedTXT
  23. }
  24.  
  25. function Invoke-EncryptWithCert{
  26. param(
  27. [parameter(mandatory=$True,Position=0)]
  28. $Input,
  29. [System.Security.Cryptography.X509Certificates.X509Certificate]$Certificate
  30. )
  31.  
  32. if(!$Certificate){
  33. $Certificate = Get-ChildItem Cert:\CurrentUser\My
  34. if($Certificate.Count -gt 1){ Write-Error -Message "Multiple Certificates detected. Please pass one as a parameter"}
  35. }elseif($Certificate.GetType().BaseType.Name -ne "X509Certificate"){
  36. Write-Error -Category InvalidArgument -Message "Certificate not valid"
  37. Return $Null
  38. }
  39.  
  40. if($Input.GetType().Name -eq "PSCredential"){
  41. $EncodedTXT = [System.Text.Encoding]::UTF8.GetBytes($Input.GetNetworkCredential().Password)
  42. }elseif($Input.GetType().Name -eq "String"){
  43. $EncodedTXT = [System.Text.Encoding]::UTF8.GetBytes($Input)
  44. }else{
  45. Write-Error -Category InvalidArgument -Message "Input must be either credential or a String type"
  46. Return $Null
  47. }
  48.  
  49. $EncryptedBytes = $Certificate.PublicKey.Key.Encrypt($EncodedTXT, $true)
  50. $EncryptedTXT = [System.Convert]::ToBase64String($EncryptedBytes)
  51. Return $EncryptedTXT
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement