From c33b6513f38d4ce7761b3b80c7edea0ef8b5dbe1 Mon Sep 17 00:00:00 2001 From: Aaron Jensen Date: Mon, 11 Mar 2024 11:36:07 -0700 Subject: [PATCH] Renaming to Carbon.Security. --- .gitignore | 10 ++-- CHANGELOG.md | 53 ++---------------- .../en-US/about_Carbon.Permissions.help.txt | 38 ------------- .../Carbon.Security.psd1 | 19 +++---- .../Carbon.Security.psm1 | 0 .../Functions/Get-CAcl.ps1 | 0 .../Functions/Get-CPermission.ps1 | 0 .../Functions/Grant-CPermission.ps1 | 0 .../Functions/Resolve-Arg.ps1 | 0 .../Functions/Revoke-CPermission.ps1 | 0 .../Functions/Test-CPermission.ps1 | 0 .../Functions/Use-CallerPreference.ps1 | 0 .../en-US/about_Carbon.Permissions.help.txt | 30 ++++++++++ .../prism.json | 0 .../prism.lock.json | 0 NOTICE.txt | 2 +- README.md | 19 ++----- ...ns.Tests.ps1 => Carbon.Security.Tests.ps1} | 8 +-- .../Carbon.SecurityTestHelper.psm1} | 0 Tests/Certificates/CarbonRsaCng.cer | 28 --------- Tests/Certificates/CarbonRsaCng.pfx | Bin 4182 -> 0 bytes Tests/Certificates/CarbonTestPrivateKey.pfx | Bin 4438 -> 0 bytes Tests/Grant-CPermission.Tests.ps1 | 10 ++-- Tests/Initialize-Test.ps1 | 4 +- Tests/Revoke-CPermission.Tests.ps1 | 4 +- init.ps1 | 4 +- whiskey.yml | 24 ++++---- 27 files changed, 81 insertions(+), 172 deletions(-) delete mode 100644 Carbon.Permissions/en-US/about_Carbon.Permissions.help.txt rename Carbon.Permissions/Carbon.Permissions.psd1 => Carbon.Security/Carbon.Security.psd1 (82%) rename Carbon.Permissions/Carbon.Permissions.psm1 => Carbon.Security/Carbon.Security.psm1 (100%) rename {Carbon.Permissions => Carbon.Security}/Functions/Get-CAcl.ps1 (100%) rename {Carbon.Permissions => Carbon.Security}/Functions/Get-CPermission.ps1 (100%) rename {Carbon.Permissions => Carbon.Security}/Functions/Grant-CPermission.ps1 (100%) rename {Carbon.Permissions => Carbon.Security}/Functions/Resolve-Arg.ps1 (100%) rename {Carbon.Permissions => Carbon.Security}/Functions/Revoke-CPermission.ps1 (100%) rename {Carbon.Permissions => Carbon.Security}/Functions/Test-CPermission.ps1 (100%) rename {Carbon.Permissions => Carbon.Security}/Functions/Use-CallerPreference.ps1 (100%) create mode 100644 Carbon.Security/en-US/about_Carbon.Permissions.help.txt rename {Carbon.Permissions => Carbon.Security}/prism.json (100%) rename {Carbon.Permissions => Carbon.Security}/prism.lock.json (100%) rename Tests/{Carbon.Permissions.Tests.ps1 => Carbon.Security.Tests.ps1} (84%) rename Tests/{Carbon.PermissionsTestHelper/Carbon.PermissionsTestHelper.psm1 => Carbon.SecurityTestHelper/Carbon.SecurityTestHelper.psm1} (100%) delete mode 100644 Tests/Certificates/CarbonRsaCng.cer delete mode 100644 Tests/Certificates/CarbonRsaCng.pfx delete mode 100644 Tests/Certificates/CarbonTestPrivateKey.pfx diff --git a/.gitignore b/.gitignore index 79f71f2..ece3e42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,8 @@ /.output /PSModules /.vscode -/Carbon.Permissions/CHANGELOG.md -/Carbon.Permissions/LICENSE.txt -/Carbon.Permissions/NOTICE.txt -/Carbon.Permissions/README.md -/Carbon.Permissions/Modules/ \ No newline at end of file +/Carbon.Security/CHANGELOG.md +/Carbon.Security/LICENSE.txt +/Carbon.Security/NOTICE.txt +/Carbon.Security/README.md +/Carbon.Security/Modules/ \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 36d05e9..df28624 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,12 @@ -# Carbon.Permissions Changelog +# Carbon.Security Changelog ## 1.0.0 ### Upgrade Instructions This is not the upgrade path you want, if switching from Carbon. The `Get-CPermission`, `Grant-CPermission`, -`Revoke-CPermission`, and `Test-CPermission` functions were migrated to the following modules with the following -function names. +`Revoke-CPermission`, and `Test-CPermission` functions were migrated to the following provider-specific modules with the +following function names: `Carbon.FileSystem`: @@ -31,52 +31,7 @@ function names. * `Revoke-CPrivateKeyPermission` * `Test-CPrivateKeyPath` -You *must* switch to `Carbon.Cryptography` if managing permissions on private keys/key containers. `Carbon.Permissions` -only manages permissions on files, directories, and registry keys. - -Replace usages of the `Grant-CPermission` and `Test-CPermission` functions' `ApplyTo` parameter with new parameter -values and a new `OnlyApplyToChildren` switch: - -| Old Parameters | New Parameters -| -------------------------------------------------- | -------------- -| -ApplyTo Container | -ApplyTo ContainerOnly -| -ApplyTo SubContainers | -ApplyTo SubcontainersOnly -| -ApplyTo Leaves | -ApplyTo LeavesOnly -| -ApplyTo ChildContainers | -ApplyTo SubcontainersOnly -OnlyApplyToChildren -| -ApplyTo ChildLeaves | -ApplyTo LeavesOnly -OnlyApplyToChildren -| -ApplyTo ContainerAndSubContainers | -ApplyTo ContainerAndSubcontainers -| -ApplyTo ContainerAndLeaves | -ApplyTo ContainerAndLeaves -| -ApplyTo SubContainerAndLeaves | -ApplyTo SubcontainersAndLeavesOnly -| -ApplyTo ContainerAndChildContainers | -ApplyTo ContainerAndSubcontainers -OnlyApplyToChildren -| -ApplyTo ContainerAndChildLeaves | -ApplyTo ContainerAndLeaves -OnlyApplyToChildren -| -ApplyTo ContainerAndChildContainersAndChildLeaves | -ApplyTo ContainerSubcontainersAndLeaves -OnlyApplyToChildren -| -ApplyTo ContainerAndSubContainersAndLeaves | -ApplyTo ContainerSubcontainersAndLeaves -| -ApplyTo ChildContainersAndChildLeaves | -ApplyTo SubcontainersAndLeavesOnly -OnlyApplyToChildren - -Replace usages of `Get-Permissions` with `Get-CPermission`. - -Replace usages of `Grant-Permissions` with `Grant-CPermission`. - -Rename usages of the `Get-CPermission` and `Test-CPermission` functions' `Exact` switch to `Strict`. - ### Added -* Function `Get-CPermission`, migrated from Carbon. -* Function `Grant-CPermission`, migrated from Carbon. -* Function `Revoke-CPermission`, migrated from Carbon. -* Function `Test-CPermission`, migrated from Carbon. * Function `Get-CAcl` to get the access control (i.e. security descriptor) for a registry key, file, or directory. -Supports getting only specific sections/parts of the security descriptor, too. - -### Changed - -* Switch `Exact` renamed to `Strict` on the `Get-CPermission` and `Test-CPermission` functions. - -### Removed - -* Alias `Get-Permissions`. Use `Get-CPermission` instead. -* Alias `Grant-Permissions`. Use `Grant-CPermission` instead. -* Private key/key container support from `Get-CPermission`, `Grant-CPermission`, `Revoke-CPermission`, and -`Test-CPermission`. Switch to the `Carbon.Cryptography` module's `Get-CPrivateKey`, `Get-CPrivateKeyPermission`, -`Grant-CPrivateKeyPermission`, `Resolve-CPrivateKeyPath`, `Revoke-CPrivateKeyPermission`, and `Test-CPrivateKeyPath` -instead. \ No newline at end of file +Supports getting only specific sections/parts of the security descriptor, too. Works across PowerShell editions. diff --git a/Carbon.Permissions/en-US/about_Carbon.Permissions.help.txt b/Carbon.Permissions/en-US/about_Carbon.Permissions.help.txt deleted file mode 100644 index 869a55f..0000000 --- a/Carbon.Permissions/en-US/about_Carbon.Permissions.help.txt +++ /dev/null @@ -1,38 +0,0 @@ -TOPIC - about_Carbon.Permissions - -SHORT DESCRIPTION - The "Carbon.Permissions" module manages permissions on files, directories, registry keys, and certificate private - keys/key containers. - -LONG DESCRIPTION - SYSTEM REQUIREMENTS - - * Windows PowerShell 5.1 and .NET 4.6.1+ - * PowerShell 7+ - - - INSTALLING - - To install globally: - - Install-Module -Name 'Carbon.Permissions' - Import-Module -Name 'Carbon.Permissions' - - To install privately: - - Save-Module -Name 'Carbon.Permissions' -Path '.' - Import-Module -Name '.\Carbon.Permissions' - - - COMMANDS - - * `Get-CAcl`: Gets the access control (i.e. security descriptor) for a file, directory, or registry key. - * `Get-CPermission`: Gets the permissions (access control rules) for a file, directory, registry key, or certificate - private key/key container. - * `Grant-CPermission`: Grants permissions on a file, directory, registry key, or certificate private key/key - container. - * `Revoke-CPermission`: Revokes permissions on a file, directory, registry key, or certificate private key/key - container. - * `Test-CPermission`: Tests permissions on a file, directory, registry key, or certificate private key/key - container. diff --git a/Carbon.Permissions/Carbon.Permissions.psd1 b/Carbon.Security/Carbon.Security.psd1 similarity index 82% rename from Carbon.Permissions/Carbon.Permissions.psd1 rename to Carbon.Security/Carbon.Security.psd1 index 0aef08d..713e953 100644 --- a/Carbon.Permissions/Carbon.Permissions.psd1 +++ b/Carbon.Security/Carbon.Security.psd1 @@ -15,7 +15,7 @@ @{ # Script module or binary module file associated with this manifest. - RootModule = 'Carbon.Permissions.psm1' + RootModule = 'Carbon.Security.psm1' # Version number of this module. ModuleVersion = '1.0.0' @@ -36,7 +36,7 @@ Copyright = '(c) WebMD Health Services.' # Description of the functionality provided by this module - Description = 'Managing file system, registry, and private key permissions.' + Description = 'Manages security.' # Minimum version of the Windows PowerShell engine required by this module PowerShellVersion = '5.1' @@ -101,23 +101,20 @@ # List of all files packaged with this module # FileList = @() - # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. + # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData + # hashtable with additional module metadata used by PowerShell. PrivateData = @{ PSData = @{ - # Tags applied to this module. These help with module discovery in online galleries. - Tags = @( - 'Desktop', 'Core', 'permission', 'accesscontrol', 'access', 'control', 'securitydescriptor', - 'security', 'descriptor', 'acl', 'file', 'directory', 'registry', 'acl', 'icacls', 'certificate', - 'crypto', 'key', 'cryptokey', 'cryptokeysecrurity', 'private', 'cng', 'privatekey', 'grant', 'revoke' - ) + # Tags applied to this module. We don't want people to find this module. + Tags = @( 'Desktop', 'Core', 'acl' ) # A URL to the license for this module. LicenseUri = 'http://www.apache.org/licenses/LICENSE-2.0' # A URL to the main website for this project. - ProjectUri = 'https://github.com/webmd-health-services/Carbon.Permissions' + ProjectUri = 'https://github.com/webmd-health-services/Carbon.Security' # A URL to an icon representing this module. # IconUri = '' @@ -125,7 +122,7 @@ Prerelease = '' # ReleaseNotes of this module - ReleaseNotes = 'https://github.com/webmd-health-services/Carbon.Permissions/blob/main/CHANGELOG.md' + ReleaseNotes = 'https://github.com/webmd-health-services/Carbon.Security/blob/main/CHANGELOG.md' } # End of PSData hashtable } # End of PrivateData hashtable diff --git a/Carbon.Permissions/Carbon.Permissions.psm1 b/Carbon.Security/Carbon.Security.psm1 similarity index 100% rename from Carbon.Permissions/Carbon.Permissions.psm1 rename to Carbon.Security/Carbon.Security.psm1 diff --git a/Carbon.Permissions/Functions/Get-CAcl.ps1 b/Carbon.Security/Functions/Get-CAcl.ps1 similarity index 100% rename from Carbon.Permissions/Functions/Get-CAcl.ps1 rename to Carbon.Security/Functions/Get-CAcl.ps1 diff --git a/Carbon.Permissions/Functions/Get-CPermission.ps1 b/Carbon.Security/Functions/Get-CPermission.ps1 similarity index 100% rename from Carbon.Permissions/Functions/Get-CPermission.ps1 rename to Carbon.Security/Functions/Get-CPermission.ps1 diff --git a/Carbon.Permissions/Functions/Grant-CPermission.ps1 b/Carbon.Security/Functions/Grant-CPermission.ps1 similarity index 100% rename from Carbon.Permissions/Functions/Grant-CPermission.ps1 rename to Carbon.Security/Functions/Grant-CPermission.ps1 diff --git a/Carbon.Permissions/Functions/Resolve-Arg.ps1 b/Carbon.Security/Functions/Resolve-Arg.ps1 similarity index 100% rename from Carbon.Permissions/Functions/Resolve-Arg.ps1 rename to Carbon.Security/Functions/Resolve-Arg.ps1 diff --git a/Carbon.Permissions/Functions/Revoke-CPermission.ps1 b/Carbon.Security/Functions/Revoke-CPermission.ps1 similarity index 100% rename from Carbon.Permissions/Functions/Revoke-CPermission.ps1 rename to Carbon.Security/Functions/Revoke-CPermission.ps1 diff --git a/Carbon.Permissions/Functions/Test-CPermission.ps1 b/Carbon.Security/Functions/Test-CPermission.ps1 similarity index 100% rename from Carbon.Permissions/Functions/Test-CPermission.ps1 rename to Carbon.Security/Functions/Test-CPermission.ps1 diff --git a/Carbon.Permissions/Functions/Use-CallerPreference.ps1 b/Carbon.Security/Functions/Use-CallerPreference.ps1 similarity index 100% rename from Carbon.Permissions/Functions/Use-CallerPreference.ps1 rename to Carbon.Security/Functions/Use-CallerPreference.ps1 diff --git a/Carbon.Security/en-US/about_Carbon.Permissions.help.txt b/Carbon.Security/en-US/about_Carbon.Permissions.help.txt new file mode 100644 index 0000000..912d16c --- /dev/null +++ b/Carbon.Security/en-US/about_Carbon.Permissions.help.txt @@ -0,0 +1,30 @@ +TOPIC + about_Carbon.Security + +SHORT DESCRIPTION + The "Carbon.Security" module has a `Get-CAcl` function that gets an item's ACL that works across PowerShell + editions. + +LONG DESCRIPTION + SYSTEM REQUIREMENTS + + * Windows PowerShell 5.1 and .NET 4.6.1+ + * PowerShell 7+ + + + INSTALLING + + To install globally: + + Install-Module -Name 'Carbon.Security' + Import-Module -Name 'Carbon.Security' + + To install privately: + + Save-Module -Name 'Carbon.Security' -Path '.' + Import-Module -Name '.\Carbon.Security' + + + COMMANDS + + * `Get-CAcl`: Gets the access control (i.e. security descriptor) for a file, directory, or registry key. diff --git a/Carbon.Permissions/prism.json b/Carbon.Security/prism.json similarity index 100% rename from Carbon.Permissions/prism.json rename to Carbon.Security/prism.json diff --git a/Carbon.Permissions/prism.lock.json b/Carbon.Security/prism.lock.json similarity index 100% rename from Carbon.Permissions/prism.lock.json rename to Carbon.Security/prism.lock.json diff --git a/NOTICE.txt b/NOTICE.txt index f1ecd8c..fdf0acd 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1,4 +1,4 @@ -Carbon.Permissions +Carbon.Security Copyright 2023 WebMD Health Services diff --git a/README.md b/README.md index 89e6b03..355ee34 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,10 @@ -# Carbon.Permissions PowerShell Module +# Carbon.Security PowerShell Module ## Overview -The "Carbon.Permissions" module manages permissions on files, directories, registry keys, and certificate private -keys/key containers. +The "Carbon.Security" module has a function get an ACLs that works across PowerShell editions. ## System Requirements @@ -19,23 +18,17 @@ keys/key containers. To install globally: ```powershell -Install-Module -Name 'Carbon.Permissions' -Import-Module -Name 'Carbon.Permissions' +Install-Module -Name 'Carbon.Security' +Import-Module -Name 'Carbon.Security' ``` To install privately: ```powershell -Save-Module -Name 'Carbon.Permissions' -Path '.' -Import-Module -Name '.\Carbon.Permissions' +Save-Module -Name 'Carbon.Security' -Path '.' +Import-Module -Name '.\Carbon.Security' ``` ## Commands * `Get-CAcl`: Gets the access control (i.e. security descriptor) for a file, directory, or registry key. -* `Get-CPermission`: Gets the permissions (access control rules) for a file, directory, registry key, or certificate - private key/key container. -* `Grant-CPermission`: Grants permissions on a file, directory, registry key, or certificate private key/key container. -* `Revoke-CPermission`: Revokes permissions on a file, directory, registry key, or certificate private key/key - container. -* `Test-CPermission`: Tests permissions on a file, directory, registry key, or certificate private key/key container. diff --git a/Tests/Carbon.Permissions.Tests.ps1 b/Tests/Carbon.Security.Tests.ps1 similarity index 84% rename from Tests/Carbon.Permissions.Tests.ps1 rename to Tests/Carbon.Security.Tests.ps1 index 6267acd..1c4a989 100644 --- a/Tests/Carbon.Permissions.Tests.ps1 +++ b/Tests/Carbon.Security.Tests.ps1 @@ -17,7 +17,7 @@ BeforeAll { ) $verbs = - Get-Command -Module 'Carbon.Permissions'| + Get-Command -Module 'Carbon.Security'| Where-Object { $_ -isnot [Management.Automation.AliasInfo] } | Select-Object -ExpandProperty Verb | Select-Object -Unique @@ -64,10 +64,10 @@ BeforeAll { } } -Describe 'Carbon.Permissions' { +Describe 'Carbon.Security' { It 'should have about help topic' { GivenModuleImported - ThenHelpTopic 'about_Carbon.Permissions' -Exists + ThenHelpTopic 'about_Carbon.Security' -Exists } It 'should only use approved verbs' { @@ -77,7 +77,7 @@ Describe 'Carbon.Permissions' { It 'should have a help topic for each command' { GivenModuleImported - foreach( $cmd in (Get-Command -Module 'Carbon.Permissions' -CommandType Function,Cmdlet,Filter)) + foreach( $cmd in (Get-Command -Module 'Carbon.Security' -CommandType Function,Cmdlet,Filter)) { ThenHelpTopic $cmd.Name -Exists -HasSynopsis -HasDescription -HasExamples } diff --git a/Tests/Carbon.PermissionsTestHelper/Carbon.PermissionsTestHelper.psm1 b/Tests/Carbon.SecurityTestHelper/Carbon.SecurityTestHelper.psm1 similarity index 100% rename from Tests/Carbon.PermissionsTestHelper/Carbon.PermissionsTestHelper.psm1 rename to Tests/Carbon.SecurityTestHelper/Carbon.SecurityTestHelper.psm1 diff --git a/Tests/Certificates/CarbonRsaCng.cer b/Tests/Certificates/CarbonRsaCng.cer deleted file mode 100644 index a6ec4fc..0000000 --- a/Tests/Certificates/CarbonRsaCng.cer +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN NEW CERTIFICATE REQUEST----- -MIIE2zCCAsOgAwIBAgIQI26HrbEZ9pZPLS+97Qw3KDANBgkqhkiG9w0BAQ0FADAX -MRUwEwYDVQQDDAxDYXJib25Sc2FDbmcwIBcNMjMwNTA1MTkxNDQ5WhgPOTk5OTEy -MzExOTI0NDhaMBcxFTATBgNVBAMMDENhcmJvblJzYUNuZzCCAiIwDQYJKoZIhvcN -AQEBBQADggIPADCCAgoCggIBALI2srWiasnbNaOCgml0nLj5FrzVA2gCqwYQjS2h -um/qjbeU5Z0PVAaGHNEZU7E3YxvCHOrBeN2whLUIDr2aWkcoI7eao97kCeetcyV/ -HdbYBjYlbakf3+YV+URy1G/sGiedYOiMZ4QN7rjssHw49bHb8y8ymo7koGtV0Kii -yhxLG+aj1G2jfLl9g7y+uep89tKTiUUNerWF0y90Upf171oN75+UJSr6rzAqf3J3 -4wLRKRP+5e09WohgqOTEvgR4ymrAFHDyU1GODOdLi+tP+4ZnUJEpvJ7NohpEUNvx -9/7q/lVn7B6lF/d9xqLtYfFtmh2yUemW0rRBtKSVmIMwKCl5qP7WU15FJ6Yg6X0z -6mMEtMyGfr+C5GfQ3/txqO2ArX5dd1hSkUIuKYriw0V2D3Sg3e2Msn7iy/2zTBam -olFErv99AqFLBtEQjtyStvKi9kcF6kKswbdF2LzYo0D5CR43w0R23edFUMQGYDXW -rX7ZqNt3zmVS49Fa/ZvIU97domjATOELafuS8ta82ZCy0bZAMw7S9/NgOx2QecEu -O9RInzYH+V8f7gprbSqNirzAVOpIPzTDTk9phiGwwqOyy8kMB7ZSKIPxYmjabyb6 -dvN6KwvTLkkLgl6vnJYAabeWQB50zQSarQXalkVX330VI4pOKlWuISy4nRdttdlu -h0gxAgMBAAGjITAfMB0GA1UdDgQWBBS2H/5rZAs10jqvjy3d5LvNUK0hGzANBgkq -hkiG9w0BAQ0FAAOCAgEAioj3IBeHdV42Z3QwwR4CpJkI5L5yKt04LKKOApjC0YXY -1/0tr14ws2MU7d8TQVdj0stT4q81oDqeOKKYccXef/qiu7uTlQWNmsr5xgumtwLe -0uNCh1GKkwn/+O0iU8tc/oS+JB4aLATnZvEWWIbpvNiYjwbodXzGvtOo3ioGJrkS -3RTBdngrbsnd9ygjyTz9jlm+dtcMtN36xaC9PQi0ma4ZFq8DogZSMOaFpWQdmimK -FdDFSTHb59Qix4QiQTHUU/QLin8KI4L5nJZtYR+hgNvy1FRLA3grtbzI3PRAhlic -N2OXKrtWFwfJoDiTZEYmnB/m5Dkti4cio+JhsZGdvcCh0/20WwPS0xArWMnuWKjF -r+GlJbO3sYa7Gyy/H2wSWRVatXJlNey7zqO2ZHYdWtzk10g7G3h4C6li0Qb9/btC -DQCszeVd5VDVyiO0G4aov7IvZbiTHqAFCdGZp+jtTdN8b5arrdCs9l6MNlOFG1/J -SCQIDX1gbyt1A9g9fWbquzQVvuFTyecMx8Wu+iwW0yKm3bALST3ZgAcQXiDUvlZr -/rb4Lr3bhXa16YF6qhElzPXqLHMEi1UbRaEZ+yjImYOnoYBoVEq/zmBZh99ztZRw -gjiyLRA+nEZSEmf60KKP4+pHDMUoXdS2CasunNDhKLpWxagWH9PZpsYnbDhD9yk= ------END NEW CERTIFICATE REQUEST----- diff --git a/Tests/Certificates/CarbonRsaCng.pfx b/Tests/Certificates/CarbonRsaCng.pfx deleted file mode 100644 index d71f04dce372b78a49bd5e62347b40797da03604..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4182 zcmZWrXEYpaw;hbZV6-91=sh7uj}SpbMD$_wD5GWc8iZh!XwgN~(TP`o2~nc=9yJq; zXwiv?PVRi~`tJ9wyY4#coadaq*WSsbemq17iQB7tLQAs~v|k?N7B)I?-Nc^H~M zKn%?#97A&o$AClr4+ZuBV!$p0_yr;DK$QPhQGtnw^Dq>z;TVblI1B{-UzlJH0g@ZO zyoKXl`mIDvOf~_;P#A9~t$GLKhH7i?n)%AD7#iYk$IHvIaKy@@rJ&Nfr5%pHx!S_w z*ZY%hXx!)KCkIO6%0W}Ad*|M5UkpZNG>!i#Xe;GmwLS~5z#*5tk>e=b`sH!I6dglx zk^4&P$jN-=<{)!T>2)rInofvY0GisDp=|3dcnqWT?{HA@%$5%*W-+!!Y7wRDp0GP7 zbZ@R*%bg|;XQou;y%{QO{1D|c`YrWzJGZzfMM7h~$Rr|5%#Z5_%F-5x4W|d&%&%pt z*xC1;_g}}UP(sjO;6vNVp27(ul|2Wqo!z$JS6bDYaV02|6w~7&ymV(ob5@woqaASC zvpqTEL?`b<8~pnewep&BLCr6uT`9pOCW+9-U(CSkUvhQgC2saSCSZ9=oYD`($ZCGj z%r}Y{neS+42Z)NS=xA5xnT`{yU74VVR`k?qQABWH(Bp#8w7I8c#SDYa zaSN#ZHFt4X>tGtv*vA=dX@Z+1$w@9CE13BFq2jaeK}9@C2lBT|$H`WeR{4Wh!(VKA zsz=gg(g4*HZk9=TR+lDu{Ymfd1VoOJS8365J*N}S`hFQT*lkbOdT(W*{^69;(S)ZF zq9R@7WMPBq>RomL+hiH;cn)>dY^+x{20@vcbF((pT+!<5z>+fJTN3%yA9cvO{vEJ3?Rm-?eRY13)G4-7U#GCembB*FAmI)p#!gR<92VF@NqQ&gSWEDBMUD?l;R3p!zA1|A1rFiZ&q^ zLeHXUY6A@GmbzGb;lJ|0V)~6ZB{2z4iS@0M#RX@@oAc}4DYL598KB$~?O?Zy? zZ8p_?u&NBLF{FAbEalb8bT@+5ty(fcg-j|q)w+KCw#%3~X$w%KZCjYvqeP{B;IQn0 z&4hn%mz_8pIhm&QtQaNg-mjWHpcHPz|*AgDoJx( zF)6RpD6!;c^)RZBRGObU);lKdcq);3rMxl&8Dn$rQ--+GLe&?FHG3XUBs!thy0LS3 zc8i*#T{NKqpSEV?*me3z8D=^P(B_EiibQYoQ?Fq;sd@xArZ#%9(`+veBW{%GG~!!V zxY2`u?RWAuS21l4>=$l3-5muWZs)KabXQH@G|V3Sa<8w4k?xc(FAnuyimxNElZbF3 zN1ajpYIf8OY8D*@@MIeQfFe3p)RODa;CNGUvRj`zn)g zD+|)!4l%df+N;wjiEnn{SD@a3^}W`6*vR{$evhM)U6R-o)Am!0Sl=K)rr&X-y6z=g z^!=81YwsZM#q~XO4VakK*SgPm;vXV5l@qQ%7Ycm!v#wRPV6s7n%jV)@G^bA4;>QFst3o2cztR*Yp!t3sEBaM>1 zW1jzUBHGY#vg~u50oHp0ylyjv>PqP=#?l>m(8n1ZmVDJ#3>WWF4OJ}DCXJ%p9P-aO z%xX_7<65tB`?hv}dy2H)~g)Z!Zc?vD$hz zvi`MW(hk5oq@JSH>Nd+4T#y(pw0qny$;bUt_hB7Dj7E#6x9;u7dwExgaAa=aB&$Gl z;q4>A>O&;G!_leUcYLCP?d zoj}i7-0+*L;b(Xy@^D88?rg~1kvoViyW3X|v|0VzHKX-H?#Fdg)ul+76%|Zu)iT;! zn|p1P=S-gL+KPNeRXHku3%Eh{Ha09^EJ#8P8%v+GH61BAHJ?+gZRuDfVg9#WNdL}) zNz<<|(MKKH314NpUW(U=-H=AudZaZ;e75WVLwn*Rl1RHMFb8r&>en0=jSa9g<>dti zW;8wxoZ%FUdi!z_q36n>#F3(BD&w&fv4u-Vd(cE`(cYT7sCQt@(tn0ve(ylpyDI%6 z`J=(XVKe(KL)z(#|D@@>cA46E&s8s?2-2_;`Te2t9dmW4fyv_Y`di5 z0gIkXPhZbux7Y2oK-I^3$gAv+J7cN;YHgp)AEjSsKIIu<3TMr%k&E#ugX(8t1;TnV zKS;1mG>yGz8A_oGOP_`5(PnkZW}TN)thT&b06uHzJ20E#XHf{(O)Dg=R;xL=o2@Sm z-D)*4%a1M{bpC6|2recbIt6F=&$>pzC=LPwi2wiq+~U6=R9u%s8{iG_0Ehx42!R5~ z0N{j_By^$xaYB_MgeW2H0k#B26ktv0?EupMbkc;$79b0dBVcfX22N1e{>%OjhzLl8 zk)IEK{iKkp|4bb_{UxsM^pd1*Nv+UCyc#di%0PjgtErvwM!{W%6k z-q#doRyc|saR&Q=^XPHD=$~@^_8%Ad%Q^BhH^%pU#K~dFU-^@W-0&Z*rY9a++z!^`X1<&zg7#aO|F5HB?t>B zo7KJc6SC6Jo6DtoB-`<7s67%vi5IK~>17Q#w=mSnFWr!!d&UMf{N{6|@crKbWoWgu=hAKqvJ#>XPI!gM_dl{r z%cEv^rGBv?X^y|k=Q;3SvG0WUjpRq(RaIFqsNS(OeamR~+x6kCQN+FQeJ(4#A41#@ zB1fgOV#TkD(s?fff?oH9d@f(Sv%~SJokldptJI^x1%H0D{nVZr^#yf~8AeT{CjiH5 zCf<@+9ygLQ%>`clQfhpZ!O2vw1+)5cM}ePFhrDfI)zk_Q-$L_5*>C2yx>8OB>vqzg zVmaP1yr)&Am$caygP|PDl!E{u!W5d1u7*uDF`J0D-mV<-QFVKMWlsKSiRZpf@CKca zHl>B2MTSedGJDEF(vc?)s||-!sf_*?!Sw3T)7fq`Y4la zxoUe+5w-d7eG2~@Ed#Vy*$%N+-?b1RP(+8=DH*`nKeh^Gj8Q%}v~@M-pw2F={B(>! zgz~bSg>AZ>SxoaiwMzd{|6PuEFr_PLdIziGQ^ujjV1+bk8j+dmg0W2W&qP|^Qe1L_ zOSn2KkSGZ{PD#l0OK}(mq@)XLdlaNKo%~*X%F*tNdyuIE58nU&!$>QSmUiiQK}NHi z0?4a)?q|Fh*qB06zNAKbQJUATB|C$Ulyq#D`fmIzfI>3+9*xt@_JUp_Z@Jh!c`*uC zdUhDyVBUWJ`KHEg!EvB%(F!Lrn8TF8niAe2Ewe(3ju#_q!>M0L-DB)aK+Jfsn&L^1 zp6Qtl#PPIw)1s5T6n;&^<>8!gG7#w<2njJO5Sl#?iY+UyweuIyiY*G#jQwU~js`;4 b7s#K)pTHOB0CEGFk9+hT+&W+W>!bZ2(=@DJ diff --git a/Tests/Certificates/CarbonTestPrivateKey.pfx b/Tests/Certificates/CarbonTestPrivateKey.pfx deleted file mode 100644 index 34b30fd45596fcd5d55d1b1f0ae5f069bcaf7aab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4438 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