|
15 | 15 |
|
16 | 16 | namespace SendSafely.Utilities |
17 | 17 | { |
| 18 | + public enum KeySize |
| 19 | + { |
| 20 | + SIZE_2048 = 2048, |
| 21 | + SIZE_4096 = 4096 |
| 22 | + } |
| 23 | + |
18 | 24 | public class CryptUtility |
19 | 25 | { |
20 | 26 | public String GenerateToken() |
@@ -323,21 +329,30 @@ public String DecryptKeycode(String privateKeyStr, String encryptedKeycode) |
323 | 329 |
|
324 | 330 | public Keypair GenerateKeyPair(String email) |
325 | 331 | { |
326 | | - AsymmetricCipherKeyPair keyPair = generateAsymmetricCipherKeyPair(); |
327 | | - Keypair pair = Armor(keyPair, email); |
| 332 | + AsymmetricCipherKeyPair keyPair = generateAsymmetricCipherKeyPair(2048); |
| 333 | + Keypair pair = Armor(keyPair, email, 2048); |
| 334 | + |
| 335 | + return pair; |
| 336 | + } |
| 337 | + |
| 338 | + public Keypair GenerateKeyPair(String email, KeySize keySize) |
| 339 | + { |
| 340 | + int keySizeVal = (int)keySize; |
| 341 | + AsymmetricCipherKeyPair keyPair = generateAsymmetricCipherKeyPair(keySizeVal); |
| 342 | + Keypair pair = Armor(keyPair, email, keySizeVal); |
328 | 343 |
|
329 | 344 | return pair; |
330 | 345 | } |
331 | 346 |
|
332 | | - private Keypair Armor(AsymmetricCipherKeyPair keyPair, String email) |
| 347 | + private Keypair Armor(AsymmetricCipherKeyPair keyPair, String email, int keySize) |
333 | 348 | { |
334 | 349 | AsymmetricKeyParameter privateKey = keyPair.Private; |
335 | 350 | AsymmetricKeyParameter publicKey = keyPair.Public; |
336 | 351 |
|
337 | 352 | MemoryStream memOut = new MemoryStream(); |
338 | 353 | ArmoredOutputStream secretOut = new ArmoredOutputStream(memOut); |
339 | 354 |
|
340 | | - AsymmetricCipherKeyPair subKeyPair = generateAsymmetricCipherKeyPair(); |
| 355 | + AsymmetricCipherKeyPair subKeyPair = generateAsymmetricCipherKeyPair(keySize); |
341 | 356 | PgpSignatureSubpacketGenerator subPackets = new PgpSignatureSubpacketGenerator(); |
342 | 357 | subPackets.SetKeyFlags(false,KeyFlags.CertifyOther | KeyFlags.SignData); |
343 | 358 | subPackets.SetKeyExpirationTime(false, 0); |
@@ -384,10 +399,10 @@ private Keypair Armor(AsymmetricCipherKeyPair keyPair, String email) |
384 | 399 | return pair; |
385 | 400 | } |
386 | 401 |
|
387 | | - private AsymmetricCipherKeyPair generateAsymmetricCipherKeyPair() |
| 402 | + private AsymmetricCipherKeyPair generateAsymmetricCipherKeyPair(int keySize) |
388 | 403 | { |
389 | 404 | RsaKeyPairGenerator kpgen = new RsaKeyPairGenerator(); |
390 | | - kpgen.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), 2048)); |
| 405 | + kpgen.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), keySize)); |
391 | 406 | AsymmetricCipherKeyPair keyPair = kpgen.GenerateKeyPair(); |
392 | 407 | return keyPair; |
393 | 408 | } |
|
0 commit comments