src/net/java/otr4j/io/OtrOutputStream.java
author Nikita Kozlov <nikita@mbdsys.com>
Tue, 07 Dec 2010 22:57:56 +0100
changeset 815 ca323cff3ac9
parent 810 0ff0059f2ec3
child 895 b2e1b45382a4
permissions -rw-r--r--
I have reimplemented the BeemOtrService in a more "centralized" way.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
810
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
     1
package net.java.otr4j.io;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
     2
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
     3
import java.io.FilterOutputStream;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
     4
import java.io.IOException;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
     5
import java.io.OutputStream;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
     6
import java.math.BigInteger;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
     7
import java.security.PublicKey;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
     8
import java.security.interfaces.DSAParams;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
     9
import java.security.interfaces.DSAPublicKey;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    10
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    11
import javax.crypto.interfaces.DHPublicKey;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    12
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    13
import net.java.otr4j.io.messages.SignatureM;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    14
import net.java.otr4j.io.messages.MysteriousT;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    15
import net.java.otr4j.io.messages.SignatureX;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    16
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    17
import org.bouncycastle.util.BigIntegers;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    18
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    19
public class OtrOutputStream extends FilterOutputStream implements
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    20
		SerializationConstants {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    21
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    22
	public OtrOutputStream(OutputStream out) {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    23
		super(out);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    24
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    25
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    26
	private void writeNumber(int value, int length) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    27
		byte[] b = new byte[length];
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    28
		for (int i = 0; i < length; i++) {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    29
			int offset = (b.length - 1 - i) * 8;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    30
			b[i] = (byte) ((value >>> offset) & 0xFF);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    31
		}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    32
		write(b);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    33
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    34
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    35
	public void writeBigInt(BigInteger bi) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    36
		byte[] b = BigIntegers.asUnsignedByteArray(bi);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    37
		writeData(b);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    38
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    39
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    40
	public void writeByte(int b) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    41
		writeNumber(b, TYPE_LEN_BYTE);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    42
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    43
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    44
	public void writeData(byte[] b) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    45
		int len = (b == null || b.length < 0) ? 0 : b.length;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    46
		writeNumber(len, DATA_LEN);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    47
		if (len > 0)
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    48
			write(b);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    49
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    50
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    51
	public void writeInt(int i) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    52
		writeNumber(i, TYPE_LEN_INT);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    53
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    54
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    55
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    56
	public void writeShort(int s) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    57
		writeNumber(s, TYPE_LEN_SHORT);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    58
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    59
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    60
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    61
	public void writeMac(byte[] mac) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    62
		if (mac == null || mac.length != TYPE_LEN_MAC)
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    63
			throw new IllegalArgumentException();
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    64
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    65
		write(mac);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    66
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    67
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    68
	public void writeCtr(byte[] ctr) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    69
		if (ctr == null || ctr.length < 1)
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    70
			return;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    71
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    72
		int i = 0;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    73
		while (i < TYPE_LEN_CTR && i < ctr.length) {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    74
			write(ctr[i]);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    75
			i++;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    76
		}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    77
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    78
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    79
	public void writeDHPublicKey(DHPublicKey dhPublicKey) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    80
		byte[] b = BigIntegers.asUnsignedByteArray(dhPublicKey.getY());
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    81
		writeData(b);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    82
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    83
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    84
	public void writePublicKey(PublicKey pubKey) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    85
		if (!(pubKey instanceof DSAPublicKey))
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    86
			throw new UnsupportedOperationException(
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    87
					"Key types other than DSA are not supported at the moment.");
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    88
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    89
		DSAPublicKey dsaKey = (DSAPublicKey) pubKey;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    90
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    91
		writeShort(0);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    92
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    93
		DSAParams dsaParams = dsaKey.getParams();
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    94
		writeBigInt(dsaParams.getP());
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    95
		writeBigInt(dsaParams.getQ());
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    96
		writeBigInt(dsaParams.getG());
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    97
		writeBigInt(dsaKey.getY());
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    98
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
    99
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   100
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   101
	public void writeTlvData(byte[] b) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   102
		int len = (b == null || b.length < 0) ? 0 : b.length;
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   103
		writeNumber(len, TLV_LEN);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   104
		if (len > 0)
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   105
			write(b);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   106
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   107
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   108
	public void writeSignature(byte[] signature, PublicKey pubKey)
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   109
			throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   110
		if (!pubKey.getAlgorithm().equals("DSA"))
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   111
			throw new UnsupportedOperationException();
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   112
		out.write(signature);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   113
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   114
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   115
	public void writeMysteriousX(SignatureX x) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   116
		writePublicKey(x.longTermPublicKey);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   117
		writeInt(x.dhKeyID);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   118
		writeSignature(x.signature, x.longTermPublicKey);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   119
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   120
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   121
	public void writeMysteriousX(SignatureM m) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   122
		writeBigInt(m.localPubKey.getY());
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   123
		writeBigInt(m.remotePubKey.getY());
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   124
		writePublicKey(m.localLongTermPubKey);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   125
		writeInt(m.keyPairID);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   126
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   127
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   128
	public void writeMysteriousT(MysteriousT t) throws IOException {
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   129
		writeShort(t.protocolVersion);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   130
		writeByte(t.messageType);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   131
		writeByte(t.flags);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   132
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   133
		writeInt(t.senderKeyID);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   134
		writeInt(t.recipientKeyID);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   135
		writeDHPublicKey(t.nextDH);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   136
		writeCtr(t.ctr);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   137
		writeData(t.encryptedMessage);
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   138
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   139
	}
0ff0059f2ec3 initial commit adding otr to beem, it's based on http://bitbucket.org/romanzadov/beem, with a better beem integration
Nikita Kozlov <nikita@mbdsys.com>
parents:
diff changeset
   140
}