private static PublicKey toDSAPublicKey(byte[] keyBytes) // throws IOException, GeneralSecurityException, MalformedKeyException { DNSInput @in = new DNSInput(keyBytes); int t = @in.readU8(); if (t > 8) { throw new MalformedKeyException(keyBytes, ARSoft.Tools.Net.Dns.DnsSecAlgorithm.Dsa); } Org.BouncyCastle.Math.BigInteger q = Helpers.readBigInteger(@in, 20); Org.BouncyCastle.Math.BigInteger p = Helpers.readBigInteger(@in, 64 + t * 8); Org.BouncyCastle.Math.BigInteger g = Helpers.readBigInteger(@in, 64 + t * 8); Org.BouncyCastle.Math.BigInteger y = Helpers.readBigInteger(@in, 64 + t * 8); /* * KeyFactory factory = KeyFactory.getInstance("DSA"); * return factory.generatePublic(new DSAPublicKeySpec(y, p, q, g)); */ Org.BouncyCastle.Crypto.Parameters.DsaParameters para = new Org.BouncyCastle.Crypto.Parameters.DsaParameters(p, q, g); Org.BouncyCastle.Crypto.Parameters.DsaPublicKeyParameters dp = new Org.BouncyCastle.Crypto.Parameters.DsaPublicKeyParameters(y, para); return(PublicKey.CreateInstance(dp)); }
private static PublicKey toRSAPublicKey(byte[] keyBytes) // throws IOException, GeneralSecurityException { DNSInput @in = new DNSInput(keyBytes); int exponentLength = @in.readU8(); if (exponentLength == 0) { exponentLength = @in.readU16(); } Org.BouncyCastle.Math.BigInteger exponent = Helpers.readBigInteger(@in, exponentLength); Org.BouncyCastle.Math.BigInteger modulus = Helpers.readBigInteger(@in); /* * KeyFactory factory = KeyFactory.getInstance("RSA"); * return factory.generatePublic(new RSAPublicKeySpec(modulus, exponent)); */ Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters kp = new Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters(false, modulus, exponent); return(PublicKey.CreateInstance(kp)); }