16
16
import com .amazonaws .auth .DefaultAWSCredentialsProviderChain ;
17
17
import com .amazonaws .encryptionsdk .jce .JceMasterKey ;
18
18
import com .amazonaws .encryptionsdk .keyrings .Keyring ;
19
+ import com .amazonaws .encryptionsdk .keyrings .RawRsaKeyringBuilder .RsaPaddingScheme ;
19
20
import com .amazonaws .encryptionsdk .keyrings .StandardKeyrings ;
20
21
import com .amazonaws .encryptionsdk .kms .AwsKmsClientSupplier ;
21
22
import com .amazonaws .encryptionsdk .kms .AwsKmsCmkId ;
@@ -171,15 +172,27 @@ private static TestCase parseTest(String testName, Map<String, Object> data, Map
171
172
.wrappingKey ((SecretKey ) key .key ).build ());
172
173
mks .add (JceMasterKey .getInstance ((SecretKey ) key .key , provId , key .keyId , "AES/GCM/NoPadding" ));
173
174
} else if ("rsa" .equals (algorithm )) {
174
- String transformation = "RSA/ECB/" ;
175
+ final RsaPaddingScheme paddingScheme ;
175
176
final String padding = mkEntry .get ("padding-algorithm" );
176
177
if ("pkcs1" .equals (padding )) {
177
- transformation += "PKCS1Padding" ;
178
+ paddingScheme = RsaPaddingScheme . PKCS1 ;
178
179
} else if ("oaep-mgf1" .equals (padding )) {
179
- final String hashName = mkEntry .get ("padding-hash" )
180
- .replace ("sha" , "sha-" )
181
- .toUpperCase ();
182
- transformation += "OAEPWith" + hashName + "AndMGF1Padding" ;
180
+ switch (mkEntry .get ("padding-hash" )) {
181
+ case "sha1" :
182
+ paddingScheme = RsaPaddingScheme .OAEP_SHA1_MGF1 ;
183
+ break ;
184
+ case "sha256" :
185
+ paddingScheme = RsaPaddingScheme .OAEP_SHA256_MGF1 ;
186
+ break ;
187
+ case "sha384" :
188
+ paddingScheme = RsaPaddingScheme .OAEP_SHA384_MGF1 ;
189
+ break ;
190
+ case "sha512" :
191
+ paddingScheme = RsaPaddingScheme .OAEP_SHA512_MGF1 ;
192
+ break ;
193
+ default :
194
+ throw new IllegalArgumentException ("Unsupported padding hash:" + mkEntry .get ("padding-hash" ));
195
+ }
183
196
} else {
184
197
throw new IllegalArgumentException ("Unsupported padding:" + padding );
185
198
}
@@ -197,8 +210,8 @@ private static TestCase parseTest(String testName, Map<String, Object> data, Map
197
210
.privateKey (unwrappingKey )
198
211
.keyNamespace (provId )
199
212
.keyName (key .keyId )
200
- .wrappingAlgorithm ( transformation ).build ());
201
- mks .add (JceMasterKey .getInstance (wrappingKey , unwrappingKey , provId , key .keyId , transformation ));
213
+ .paddingScheme ( paddingScheme ).build ());
214
+ mks .add (JceMasterKey .getInstance (wrappingKey , unwrappingKey , provId , key .keyId , paddingScheme . getTransformation () ));
202
215
} else {
203
216
throw new IllegalArgumentException ("Unsupported algorithm: " + algorithm );
204
217
}
0 commit comments