63 lines
1.3 KiB
C++
63 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "Packet.h"
|
|
|
|
class SharedKeyPacket : public Packet
|
|
{
|
|
#if 0
|
|
private byte[] keybytes = new byte[]{};
|
|
private byte[] nonce = new byte[]{};
|
|
|
|
private SecretKey secretKey;
|
|
|
|
public SharedKeyPacket() {
|
|
// Needed
|
|
}
|
|
|
|
public SharedKeyPacket(final SecretKey secretKey, final PublicKey publicKey, final byte[] nonce) {
|
|
this.secretKey = secretKey;
|
|
this.keybytes = Crypt.encryptUsingKey(publicKey, secretKey.getEncoded());
|
|
this.nonce = Crypt.encryptUsingKey(publicKey, nonce);
|
|
}
|
|
|
|
@Override
|
|
public void read(DataInputStream dis) throws IOException {
|
|
keybytes = readBytes(dis);
|
|
nonce = readBytes(dis);
|
|
}
|
|
|
|
@Override
|
|
public void write(DataOutputStream dos) throws IOException {
|
|
writeBytes(dos, keybytes);
|
|
writeBytes(dos, nonce);
|
|
}
|
|
|
|
@Override
|
|
public void handle(PacketListener listener) {
|
|
listener.handleSharedKey(this);
|
|
}
|
|
|
|
@Override
|
|
public int getEstimatedSize() {
|
|
return 2 + keybytes.length + 2 + nonce.length;
|
|
}
|
|
|
|
public SecretKey getSecretKey(PrivateKey privateKey) {
|
|
if (privateKey == null) {
|
|
return secretKey;
|
|
}
|
|
return secretKey = Crypt.decryptByteToSecretKey(privateKey, keybytes);
|
|
}
|
|
|
|
public SecretKey getSecretKey() {
|
|
return getSecretKey(null);
|
|
}
|
|
|
|
public byte[] getNonce(PrivateKey privateKey) {
|
|
if (privateKey == null) {
|
|
return nonce;
|
|
}
|
|
return Crypt.decryptUsingKey(privateKey, nonce);
|
|
}
|
|
#endif
|
|
}; |