Mercurial > 510Connectbot
diff src/ch/ethz/ssh2/signature/RSAPrivateKey.java @ 273:91a31873c42a ganymed
start conversion from trilead to ganymed
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Fri, 18 Jul 2014 11:21:46 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ch/ethz/ssh2/signature/RSAPrivateKey.java Fri Jul 18 11:21:46 2014 -0700 @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2006-2013 Christian Plattner. All rights reserved. + * Please refer to the LICENSE.txt for licensing details. + */ +package ch.ethz.ssh2.signature; + +import java.math.BigInteger; +import java.security.SecureRandom; + +/** + * RSAPrivateKey. + * + * @author Christian Plattner + * @version 2.50, 03/15/10 + */ +public class RSAPrivateKey +{ + private BigInteger d; + private BigInteger e; + private BigInteger n; + + public RSAPrivateKey(BigInteger d, BigInteger e, BigInteger n) + { + this.d = d; + this.e = e; + this.n = n; + } + + public BigInteger getD() + { + return d; + } + + public BigInteger getE() + { + return e; + } + + public BigInteger getN() + { + return n; + } + + public RSAPublicKey getPublicKey() + { + return new RSAPublicKey(e, n); + } + + /** + * Generate an RSA hostkey for testing purposes only. + * + * @param numbits Key length in bits + * @return + */ + public static RSAPrivateKey generateKey(int numbits) + { + return generateKey(new SecureRandom(), numbits); + } + + /** + * Generate an RSA hostkey for testing purposes only. + * + * @param rnd Source for random bits + * @param numbits Key length in bits + * @return + */ + public static RSAPrivateKey generateKey(SecureRandom rnd, int numbits) + { + BigInteger p = BigInteger.probablePrime(numbits / 2, rnd); + BigInteger q = BigInteger.probablePrime(numbits / 2, rnd); + BigInteger phi = (p.subtract(BigInteger.ONE)).multiply(q.subtract(BigInteger.ONE)); + + BigInteger n = p.multiply(q); + BigInteger e = new BigInteger("65537"); + BigInteger d = e.modInverse(phi); + + return new RSAPrivateKey(d, e, n); + } +} \ No newline at end of file