Exemplo n.º 1
0
        public static byte[] fromDSAPublicKey(DSAPublicKey key)
        {
            DNSOutput @out = new DNSOutput();

            Org.BouncyCastle.Crypto.Parameters.DsaPublicKeyParameters dp = key.PublicKey;


            // BigInteger q = key.getParams().getQ();
            Org.BouncyCastle.Math.BigInteger q = dp.Parameters.Q;
            // BigInteger p = key.getParams().getP();
            Org.BouncyCastle.Math.BigInteger p = dp.Parameters.P;
            // BigInteger g = key.getParams().getG();
            Org.BouncyCastle.Math.BigInteger g = dp.Parameters.G;
            // BigInteger y = key.getY();
            Org.BouncyCastle.Math.BigInteger y = dp.Y;


            int t = (p.ToByteArray().Length - 64) / 8;

            @out.writeU8(t);

            Helpers.writeBigInteger(@out, q);
            Helpers.writeBigInteger(@out, p);
            Helpers.writePaddedBigInteger(@out, g, 8 * t + 64);
            Helpers.writePaddedBigInteger(@out, y, 8 * t + 64);

            return(@out.toByteArray());
        }
Exemplo n.º 2
0
        private static byte[] fromRSAPublicKey(RSAPublicKey key)
        {
            DNSOutput @out = new DNSOutput();

            Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters kp = key.PublicKey;

            // BigInteger exponent = key.getPublicExponent();
            Org.BouncyCastle.Math.BigInteger exponent = kp.Exponent;

            // BigInteger modulus = key.getModulus();
            Org.BouncyCastle.Math.BigInteger modulus = kp.Modulus;


            int exponentLength = Helpers.BigIntegerLength(exponent);

            if (exponentLength < 256)
            {
                @out.writeU8(exponentLength);
            }
            else
            {
                @out.writeU8(0);
                @out.writeU16(exponentLength);
            }

            Helpers.writeBigInteger(@out, exponent);
            Helpers.writeBigInteger(@out, modulus);

            return(@out.toByteArray());
        }
Exemplo n.º 3
0
        internal static void writePaddedBigInteger(DNSOutput @out, Org.BouncyCastle.Math.BigInteger val, int len)
        {
            byte[] b = trimByteArray(val.ToByteArray());

            if (b.Length > len)
            {
                throw new IllegalArgumentException();
            }

            if (b.Length < len)
            {
                byte[] pad = new byte[len - b.Length];
                @out.writeByteArray(pad);
            }

            @out.writeByteArray(b);
        }
Exemplo n.º 4
0
        private static byte[] fromECDSAPublicKey(ECPublicKey key, ECKeyInfo keyinfo)
        {
            DNSOutput @out = new DNSOutput();

            Org.BouncyCastle.Crypto.Parameters.ECPublicKeyParameters publicParams = key.PublicKey;


            // BigInteger x = key.getW().getAffineX();
            Org.BouncyCastle.Math.BigInteger x = publicParams.Q.AffineXCoord.ToBigInteger();

            // BigInteger y = key.getW().getAffineY();
            Org.BouncyCastle.Math.BigInteger y = publicParams.Q.AffineYCoord.ToBigInteger();

            Helpers.writePaddedBigInteger(@out, x, keyinfo.length);
            Helpers.writePaddedBigInteger(@out, y, keyinfo.length);

            return(@out.toByteArray());
        }
Exemplo n.º 5
0
 internal static void writeBigInteger(DNSOutput @out, Org.BouncyCastle.Math.BigInteger val)
 {
     byte[] b = trimByteArray(val.ToByteArray());
     @out.writeByteArray(b);
 }