Skip to content

Commit acc7bb0

Browse files
authored
[KeyVault]Change encoding way from ASCII/Default to UTF8 (#21753)
* [KeyVault]Change encoding way from ASCII/Default to UTF8 * Update Invoke-AzKeyVaultKeyOperation.md * [KeyVault]Change encoding way from ASCII/Default to UTF8 for MHSM * Remove breaking change message * Update ChangeLog.md * Update ChangeLog.md * Update ChangeLog.md * Remove RawResult * Remove RawResult from help file * Update Invoke-AzKeyVaultKeyOperation.md
1 parent 3504d69 commit acc7bb0

File tree

4 files changed

+27
-36
lines changed

4 files changed

+27
-36
lines changed

src/KeyVault/KeyVault/ChangeLog.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@
1818
- Additional information about change #1
1919
-->
2020
## Upcoming Release
21+
* Changed the encoding way from a string into byte array in `Invoke-AzKeyVaultKeyOperation` from ASCII to UTF8. UTF8 is backward-compatible with ASCII. [#21269]
22+
* Bug fix: Changed the decoding way from byte array into a string from system default encoding to UTF8 to match encoding way. [#21269]
2123
* Added parameter `PolicyPath` and `PolicyObject` in `Import-AzKeyVaultCertificate` to support custom policy [#20780]
2224

2325
## Version 4.9.3
24-
* Added breaking changes for `Invoke-AzKeyVaultKeyOperation`. The encoded/decoded way between string and bytes in `Invoke-AzKeyVaultKeyOperation` will change to UTF8.
26+
* Added breaking change announcement for `Invoke-AzKeyVaultKeyOperation`. The encoded/decoded way between string and bytes in `Invoke-AzKeyVaultKeyOperation` will change to UTF8.
2527
- This change will take effect on 5/23/2023
2628
- The change is expected to take effect from the version 5.0.0
2729
* Updated Azure.Core to 1.31.0.

src/KeyVault/KeyVault/Commands/Key/InvokeAzureKeyVaultOperation.cs renamed to src/KeyVault/KeyVault/Commands/Key/InvokeAzureKeyVaultKeyOperation.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using Microsoft.Azure.Commands.KeyVault.Models;
22
using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters;
3-
using Microsoft.WindowsAzure.Commands.Common.CustomAttributes;
43

54
using System;
65
using System.Management.Automation;
@@ -15,7 +14,6 @@ namespace Microsoft.Azure.Commands.KeyVault.Commands.Key
1514
/// 3. Wraps a symmetric key using a specified key.
1615
/// 4. Unwraps a symmetric key using the specified key that was initially used for wrapping that key.
1716
/// </summary>
18-
[GenericBreakingChange("The encoded/decoded way between string and bytes will change to UTF8.", "5.0.0", "05/23/2023")]
1917
[Cmdlet(VerbsLifecycle.Invoke, ResourceManager.Common.AzureRMConstants.AzurePrefix + "KeyVaultKeyOperation", SupportsShouldProcess = true, DefaultParameterSetName = ByVaultNameParameterSet)]
2018
[OutputType(typeof(PSKeyOperationResult))]
2119
public class InvokeAzureKeyVaultKeyOperation : KeyVaultKeyCmdletBase
@@ -83,7 +81,7 @@ public override void ExecuteCmdlet()
8381
case Operations.Encrypt:
8482
this.WriteObject(
8583
this.Track2DataClient.Encrypt(VaultName, Name, Version,
86-
Encoding.ASCII.GetBytes(Value.ConvertToString()), Algorithm));
84+
Encoding.UTF8.GetBytes(Value.ConvertToString()), Algorithm));
8785
break;
8886
case Operations.Decrypt:
8987
this.WriteObject(
@@ -93,7 +91,7 @@ public override void ExecuteCmdlet()
9391
case Operations.Wrap:
9492
this.WriteObject(
9593
this.Track2DataClient.WrapKey(VaultName, Name, Version,
96-
Encoding.ASCII.GetBytes(Value.ConvertToString()), Algorithm));
94+
Encoding.UTF8.GetBytes(Value.ConvertToString()), Algorithm));
9795
break;
9896
case Operations.Unwrap:
9997
this.WriteObject(
@@ -111,7 +109,7 @@ public override void ExecuteCmdlet()
111109
case Operations.Encrypt:
112110
this.WriteObject(
113111
this.Track2DataClient.ManagedHsmKeyEncrypt(HsmName, Name, Version,
114-
Encoding.ASCII.GetBytes(Value.ConvertToString()), Algorithm));
112+
Encoding.UTF8.GetBytes(Value.ConvertToString()), Algorithm));
115113
break;
116114
case Operations.Decrypt:
117115
this.WriteObject(
@@ -121,7 +119,7 @@ public override void ExecuteCmdlet()
121119
case Operations.Wrap:
122120
this.WriteObject(
123121
this.Track2DataClient.ManagedHsmWrapKey(HsmName, Name, Version,
124-
Encoding.ASCII.GetBytes(Value.ConvertToString()), Algorithm));
122+
Encoding.UTF8.GetBytes(Value.ConvertToString()), Algorithm));
125123
break;
126124
case Operations.Unwrap:
127125
this.WriteObject(

src/KeyVault/KeyVault/Models/Key/PSKeyOperationResult.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public PSKeyOperationResult(WrapResult wrapResult)
2626
public PSKeyOperationResult(UnwrapResult unwrapResult)
2727
{
2828
this.KeyId = unwrapResult.KeyId;
29-
this.Result = System.Text.Encoding.Default.GetString(unwrapResult.Key);
29+
this.Result = System.Text.Encoding.UTF8.GetString(unwrapResult.Key);
3030
this.Algorithm = unwrapResult.Algorithm.ToString();
3131
}
3232

@@ -40,7 +40,7 @@ public PSKeyOperationResult(EncryptResult encryptResult)
4040
public PSKeyOperationResult(DecryptResult decryptResult)
4141
{
4242
this.KeyId = decryptResult.KeyId;
43-
this.Result = System.Text.Encoding.Default.GetString(decryptResult.Plaintext);
43+
this.Result = System.Text.Encoding.UTF8.GetString(decryptResult.Plaintext);
4444
this.Algorithm = decryptResult.Algorithm.ToString();
4545
}
4646
}

src/KeyVault/KeyVault/help/Invoke-AzKeyVaultKeyOperation.md

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -42,51 +42,39 @@ Invoke-AzKeyVaultKeyOperation cmdlet supports
4242

4343
## EXAMPLES
4444

45-
### Encrypts using an encryption key
45+
### Example 1: Encrypts using an encryption key
4646
```powershell
4747
$result = Invoke-AzKeyVaultKeyOperation -Operation Encrypt -Algorithm RSA1_5 -VaultName test-kv -Name test-key -Value (ConvertTo-SecureString -String "test" -AsPlainText -Force)
4848
$result | Format-List
4949
```
5050

5151
```output
52-
KeyId : https://test-kv.vault.azure.net/keys/test-key/375cdf20252043b79c8ca0c57b6c7679
53-
Result : e01HmkipqwCZyQd2QZ5XOTSA3rlZ719qqHHadzepFGtvTSoDwr+sBPmODVqScvq5/MBS9YyT+u6AM5hsFKD+h2FJOB6Pj/nwO5MZ/tZ8F974qAxXXT2qvdNm6pHKhREgPlCHmz+L6xK/8KOF+LS1E9wmuAt8ZPsJ7BtcT2bcvR4VmeOaUhvxcuNMV675nsFpwHBv6GWSfQA+RkDCIpmv6msdpK8NG6+la+fSPA6EKMJkmqF3SZ6RhSOjg00S7jXEWncIzdp6RRKYZFKY+QhqLgFVABL876IW4nDGYgdVSG7KnH0K56QqtK5L4MhvU4XYE69I4WiWbZ7rcVLE3cO/9A==
52+
KeyId : https://test-kv.vault.azure.net/keys/test-key/bd8b77352a2443d4983bd70e9f660bc6
53+
Result : iVlA6rHicEm6F9vtU3jARzxWughOcRK9htj4UMy0ijd4a4hHwYrSy4lSXhiQTKSMpX+Qv3NTaz/fKNWdSoudCAwv2ZX/pYlSqZmDoAHzjUc
54+
4wDQAAVZAUvOxHcpCQf3CrlvQK3XfsZeddeiD9laiUU3iB2Ivh3trX0G/Y29gL54THKsmlwXh5mBhxcXHaUv0erDzEVAGnC73FHlJoHCTdm
55+
7eUMWvsnfhtd/BhcuBb/CeMy1QzHgoBTrByWms4KsTODBEZt41aVkdYxJDREsC8X6a/1vp9EeV+7jm3sZLl+Dm7XOpUjbR+/BUU7HKaw09i
56+
BRQJGhXf7oyZOf3g6EPEQ==
5457
Algorithm : RSA1_5
5558
```
5659

57-
Encrypts string "test" using test-key stored in test-kv. The returned result is Base64 string format.
60+
Encrypts string "test" using test-key stored in test-kv. The `Result` is encrypted result in Base64 string format.
5861

59-
### Decrypt encrypted data
62+
### Example 2: Decrypt encrypted data
6063
```powershell
6164
$result
6265
$result = Invoke-AzKeyVaultKeyOperation -Operation Decrypt -Algorithm RSA1_5 -VaultName test-kv -Name test-key -Value (ConvertTo-SecureString -String $result.Result -AsPlainText -Force)
6366
$result | Format-List
6467
```
6568

6669
```output
67-
KeyId : https://test-kv.vault.azure.net/keys/test-key/375cdf20252043b79c8ca0c57b6c7679
70+
KeyId : https://test-kv.vault.azure.net/keys/test-key/bd8b77352a2443d4983bd70e9f660bc6
6871
Result : test
6972
Algorithm : RSA1_5
7073
```
7174

72-
Decrypts encrypted data that is encrypted using test-key stored in test-kv.
73-
74-
### Encrypts using an encryption key
75-
```powershell
76-
$result = Invoke-AzKeyVaultKeyOperation -Operation Encrypt -Algorithm RSA1_5 -VaultName test-kv -Name test-key -Value (ConvertTo-SecureString -String "test" -AsPlainText -Force)
77-
78-
$result | Format-List
79-
```
80-
81-
```output
82-
KeyId : https://test-kv.vault.azure.net/keys/test-key/375cdf20252043b79c8ca0c57b6c7679
83-
Result : e01HmkipqwCZyQd2QZ5XOTSA3rlZ719qqHHadzepFGtvTSoDwr+sBPmODVqScvq5/MBS9YyT+u6AM5hsFKD+h2FJOB6Pj/nwO5MZ/tZ8F974qAxXXT2qvdNm6pHKhREgPlCHmz+L6xK/8KOF+LS1E9wmuAt8ZPsJ7BtcT2bcvR4VmeOaUhvxcuNMV675nsFpwHBv6GWSfQA+RkDCIpmv6msdpK8NG6+la+fSPA6EKMJkmqF3SZ6RhSOjg00S7jXEWncIzdp6RRKYZFKY+QhqLgFVABL876IW4nDGYgdVSG7KnH0K56QqtK5L4MhvU4XYE69I4WiWbZ7rcVLE3cO/9A==
84-
Algorithm : RSA1_5
85-
```
86-
87-
Encrypts string "test" using test-key stored in test-kv. The returned result is Base64 string format.
75+
Decrypts encrypted data that is encrypted using test-key stored in test-kv. The `Result` is a plain string.
8876

89-
### Wraps a symmetric key using a specified key
77+
### Example 3: Wraps a symmetric key using a specified key
9078
```powershell
9179
$result = Invoke-AzKeyVaultKeyOperation -Operation Wrap -Algorithm RSA1_5 -VaultName test-kv -Name test-key -Value (ConvertTo-SecureString -String "ovQIlbB0DgWhZA7sgkPxbg9H-Ly-VlNGPSgGrrZvlIo" -AsPlainText -Force)
9280
@@ -95,13 +83,16 @@ $result | Format-List
9583

9684
```output
9785
KeyId : https://test-kv.vault.azure.net/keys/test-key/375cdf20252043b79c8ca0c57b6c7679
98-
Result : e01HmkipqwCZyQd2QZ5XOTSA3rlZ719qqHHadzepFGtvTSoDwr+sBPmODVqScvq5/MBS9YyT+u6AM5hsFKD+h2FJOB6Pj/nwO5MZ/tZ8F974qAxXXT2qvdNm6pHKhREgPlCHmz+L6xK/8KOF+LS1E9wmuAt8ZPsJ7BtcT2bcvR4VmeOaUhvxcuNMV675nsFpwHBv6GWSfQA+RkDCIpmv6msdpK8NG6+la+fSPA6EKMJkmqF3SZ6RhSOjg00S7jXEWncIzdp6RRKYZFKY+QhqLgFVABL876IW4nDGYgdVSG7KnH0K56QqtK5L4MhvU4XYE69I4WiWbZ7rcVLE3cO/9A==
86+
Result : imHceWcmB5jufcz+qS+HwaXOvPiaeOQ2dF1Bh+2DByuw+AOyoL3wtwDSilP5BlR3DAB3byj4hlUqkEKcoHJpOGnU53mWeV0yhL+Wx0O4T9n
87+
+e54Gtv/sfJD0CcMg+89mssi7hgU0u1IaaowzgSmP7ViRrSVGu8FniAR6hdf7j0JL7ON8IIFMy/+7yq00aJs/dspcESGjcZDry5pLzYphel
88+
x7VAEbjuv1TuiHwu8cJYH/GsvROErOQbQ+aKcKlYTMzZRGdCA07xXltvFrTiCIvzeKE/lTJVIHH/Nv4aRne/ENRC2cx92r9XFhEBID6o5Td
89+
kN09Wdjejo8nLDRw9XbtQ==
9990
Algorithm : RSA1_5
10091
```
10192

102-
Wraps a symmetric key using key named test-key stored in test-kv. The returned result is Base64 string.
93+
Wraps a symmetric key using key named test-key stored in test-kv. The `Result` is wrapped result in Base64 string format.
10394

104-
### Unwraps a symmetric key using a specified key
95+
### Example 4: Unwraps a symmetric key using a specified key
10596
```powershell
10697
Invoke-AzKeyVaultKeyOperation -Operation Unwrap -Algorithm RSA1_5 -VaultName test-kv -Name test-key -Value (ConvertTo-SecureString -String $result.Result -AsPlainText -Force)
10798
```
@@ -112,7 +103,7 @@ Result : ovQIlbB0DgWhZA7sgkPxbg9H-Ly-VlNGPSgGrrZvlIo
112103
Algorithm : RSA1_5
113104
```
114105

115-
Unwraps a symmetric key using a specified key test-key stored in test-kv.
106+
Unwraps a symmetric key using a specified key test-key stored in test-kv. The `Result` is a plain string.
116107

117108
## PARAMETERS
118109

0 commit comments

Comments
 (0)