コード例 #1
0
ファイル: index.js プロジェクト: DoctorMcKay/node-steam
SteamFriends.prototype.sendMessage = function(target, message, type) {
  target = SteamID.decode(target);
  type = type || Steam.EChatEntryType.ChatMsg;
  
  var payload = new ByteBuffer(Buffer.byteLength(message) + 1);
  payload.writeCString(message).flip();
  
  if (target.accountType == Steam.EAccountType.Individual || target.accountType == Steam.EAccountType.ConsoleUser) {
    this._client.send({
      msg: EMsg.ClientFriendMsg,
      proto: {}
    }, new schema.CMsgClientFriendMsg({
      steamid: target.encode(),
      message: payload,
      chat_entry_type: type
    }).toBuffer());
    
  } else {
    // assume chat message
    var chatMsg = new schema.MsgClientChatMsg({
      steamIdChatter: this._client.steamID,
      steamIdChatRoom: toChatID(target),
      chatMsgType: type
    }).toBuffer();
    
    this._client.send({
      msg: EMsg.ClientChatMsg
    }, Buffer.concat([chatMsg, payload.toBuffer()]));
  }
};
コード例 #2
0
function writeDelimited(protoMessage) {
    var msgSize = protoMessage.length;
    // TODO: The 1 below is not needed....
    var buffer = new ByteBuffer(1 + msgSize);
    buffer.writeVarint(msgSize);
    buffer.append(protoMessage);
    buffer.flip();
    return buffer.toBuffer();
}
コード例 #3
0
ファイル: imb.js プロジェクト: ecodistrict/IDSSDashboard
function signalCommand(aSocket, aCommand) {
    var packet = new ByteBuffer();
    packet.writeByte(imbMagic);
    packet.writeVarint64ZigZag(-aCommand.limit);
    packet.append(aCommand.copy());
    while (packet.offset<imbMinimumPacketSize)
        packet.writeByte(0);
    packet.flip();
    var buffer = packet.toBuffer();
    aSocket.write(buffer);
}
コード例 #4
0
ファイル: block.js プロジェクト: ddkoin/DDKOIN
Block.prototype.getBytes = function (block) {
	let size = 4 + 4 + 8 + 4 + 4 + 8 + 8 + 4 + 4 + 4 + 32 + 32 + 64;
	let b, i;

	try {
		let bb = new ByteBuffer(size, true);
		bb.writeInt(block.version);
		bb.writeInt(block.timestamp);

		if (block.previousBlock) {
			let pb = new bignum(block.previousBlock).toBuffer({size: '8'});

			for (i = 0; i < 8; i++) {
				bb.writeByte(pb[i]);
			}
		} else {
			for (i = 0; i < 8; i++) {
				bb.writeByte(0);
			}
		}

		bb.writeInt(block.numberOfTransactions);
		bb.writeLong(block.totalAmount);
		bb.writeLong(block.totalFee);
		bb.writeLong(block.reward);

		bb.writeInt(block.payloadLength);

		let payloadHashBuffer = Buffer.from(block.payloadHash, 'hex');
		for (i = 0; i < payloadHashBuffer.length; i++) {
			bb.writeByte(payloadHashBuffer[i]);
		}

		let generatorPublicKeyBuffer = Buffer.from(block.generatorPublicKey, 'hex');
		for (i = 0; i < generatorPublicKeyBuffer.length; i++) {
			bb.writeByte(generatorPublicKeyBuffer[i]);
		}

		if (block.blockSignature) {
			let blockSignatureBuffer = Buffer.from(block.blockSignature, 'hex');
			for (i = 0; i < blockSignatureBuffer.length; i++) {
				bb.writeByte(blockSignatureBuffer[i]);
			}
		}

		bb.flip();
		b = bb.toBuffer();
	} catch (e) {
		throw e;
	}

	return b;
};
コード例 #5
0
ファイル: imb.js プロジェクト: ecodistrict/IDSSDashboard
function signalEvent(aSocket, aEventID, aEvent) {
    var packet = new ByteBuffer();
    packet.writeByte(imbMagic);
    packet.writeVarint64ZigZag(aEvent.limit + 2); // 2 bytes extra for event id
    packet.writeUint16(aEventID); // fixed format Uint16
    packet.append(aEvent.copy());
    while (packet.offset<imbMinimumPacketSize)
        packet.writeByte(0);
    packet.flip();
    var buffer = packet.toBuffer();
    aSocket.write(buffer);
}
コード例 #6
0
ファイル: multisignature.js プロジェクト: mikegi/shift
Multisignature.prototype.getBytes = function (trs, skip) {
	var keysgroupBuffer = new Buffer(trs.asset.multisignature.keysgroup.join(''), 'utf8');

	var bb = new ByteBuffer(1 + 1 + keysgroupBuffer.length, true);
	bb.writeByte(trs.asset.multisignature.min);
	bb.writeByte(trs.asset.multisignature.lifetime);
	for (var i = 0; i < keysgroupBuffer.length; i++) {
		bb.writeByte(keysgroupBuffer[i]);
	}
	bb.flip();

	return bb.toBuffer();
};
コード例 #7
0
ファイル: multisignature.js プロジェクト: MNorberto/lisk
Multisignature.prototype.getBytes = function(transaction) {
	const keysgroupBuffer = Buffer.from(
		transaction.asset.multisignature.keysgroup.join(''),
		'utf8'
	);

	const byteBuffer = new ByteBuffer(1 + 1 + keysgroupBuffer.length, true);
	byteBuffer.writeByte(transaction.asset.multisignature.min);
	byteBuffer.writeByte(transaction.asset.multisignature.lifetime);
	for (let i = 0; i < keysgroupBuffer.length; i++) {
		byteBuffer.writeByte(keysgroupBuffer[i]);
	}
	byteBuffer.flip();

	return byteBuffer.toBuffer();
};
コード例 #8
0
ファイル: index.js プロジェクト: DoctorMcKay/node-steam
SteamFriends.prototype.leaveChat = function(steamID) {
  var leaveChat = new schema.MsgClientChatMemberInfo({
    steamIdChat: toChatID(steamID),
    type: Steam.EChatInfoType.StateChange
  }).toBuffer();
  
  var payload = new ByteBuffer(20, ByteBuffer.LITTLE_ENDIAN);
  payload.writeUint64(this._client.steamID);
  payload.writeUint32(Steam.EChatMemberStateChange.Left);
  payload.writeUint64(this._client.steamID);
  payload.flip();
  
  this._client.send({
    msg: EMsg.ClientChatMemberInfo
  }, Buffer.concat([leaveChat, payload.toBuffer()]));
  
  delete this.chatRooms[steamID];
};
コード例 #9
0
ファイル: crypto.js プロジェクト: Ebookcoin/ebookcoin-js
function getDAppBytes(dapp) {
	try {
		var buf = new Buffer([]);
		var nameBuf = new Buffer(dapp.name, 'utf8');
		buf = Buffer.concat([buf, nameBuf]);

		if (dapp.description) {
			var descriptionBuf = new Buffer(dapp.description, 'utf8');
			buf = Buffer.concat([buf, descriptionBuf]);
		}

		if (dapp.tags) {
			var tagsBuf = new Buffer(dapp.tags, 'utf8');
			buf = Buffer.concat([buf, tagsBuf]);
		}

		if (dapp.siaAscii) {
			buf = Buffer.concat([buf, new Buffer(dapp.siaAscii, 'ascii')]);
		}

		if (dapp.siaIcon) {
			buf = Buffer.concat([buf, new Buffer(dapp.siaIcon, 'ascii')]);
		}

		if (dapp.git) {
			buf = Buffer.concat([buf, new Buffer(dapp.git, 'utf8')]);
		}

		if (dapp.icon) {
			buf = Buffer.concat([buf, new Buffer(dapp.icon, 'utf8')]);
		}

		var bb = new ByteBuffer(4 + 4, true);
		bb.writeInt(dapp.type);
		bb.writeInt(dapp.category);
		bb.flip();

		buf = Buffer.concat([buf, bb.toBuffer()]);
	} catch (e) {
		throw Error(e.toString());
	}

	return buf;
}
コード例 #10
0
ファイル: cm_client.js プロジェクト: SamirL/node-steam-client
handlers[EMsg.ChannelEncryptRequest] = function(data) {
	// assume server isn't dead
	this._connection.setTimeout(0);

//  var encRequest = Schema.MsgChannelEncryptRequest.decode(data);
	this.emit('debug', 'encrypt request');

	var sessionKey = SteamCrypto.generateSessionKey();
	this._tempSessionKey = sessionKey.plain;
	var keyCrc = BufferCRC32.signed(sessionKey.encrypted);

	var encResp = new Schema.MsgChannelEncryptResponse().encode();
	var body = new ByteBuffer(encResp.limit + 128 + 4 + 4, ByteBuffer.LITTLE_ENDIAN); // key, crc, trailer

	body.append(encResp);
	body.append(sessionKey.encrypted);
	body.writeInt32(keyCrc);
	body.writeUint32(0); // TODO: check if the trailer is required
	body.flip();

	this.send({"msg": EMsg.ChannelEncryptResponse}, body.toBuffer());
};
コード例 #11
0
ファイル: dapp.js プロジェクト: mikegi/shift
DApp.prototype.getBytes = function (trs) {
	var buf;

	try {
		buf = new Buffer([]);
		var nameBuf = new Buffer(trs.asset.dapp.name, 'utf8');
		buf = Buffer.concat([buf, nameBuf]);

		if (trs.asset.dapp.description) {
			var descriptionBuf = new Buffer(trs.asset.dapp.description, 'utf8');
			buf = Buffer.concat([buf, descriptionBuf]);
		}

		if (trs.asset.dapp.tags) {
			var tagsBuf = new Buffer(trs.asset.dapp.tags, 'utf8');
			buf = Buffer.concat([buf, tagsBuf]);
		}

		if (trs.asset.dapp.link) {
			buf = Buffer.concat([buf, new Buffer(trs.asset.dapp.link, 'utf8')]);
		}

		if (trs.asset.dapp.icon) {
			buf = Buffer.concat([buf, new Buffer(trs.asset.dapp.icon, 'utf8')]);
		}

		var bb = new ByteBuffer(4 + 4, true);
		bb.writeInt(trs.asset.dapp.type);
		bb.writeInt(trs.asset.dapp.category);
		bb.flip();

		buf = Buffer.concat([buf, bb.toBuffer()]);
	} catch (e) {
		throw e;
	}

	return buf;
};
コード例 #12
0
ファイル: crypto.js プロジェクト: DLiskProject/dlisk-js
function getBytes(transaction) {
	var assetSize = 0,
		assetBytes = null;

	switch (transaction.type) {
		case 1: // Signature
			assetSize = 32;
			assetBytes = getSignatureBytes(transaction.asset.signature);
			break;

		case 2: // Delegate
			assetBytes = new Buffer(transaction.asset.delegate.username, "utf8");
			assetSize = assetBytes.length;
			break;

		case 3: // Vote
			if (transaction.asset.votes !== null) {
				assetBytes = new Buffer(transaction.asset.votes.join(""), "utf8");
				assetSize = assetBytes.length;
			}
			break;

		case 4: // Multi-Signature
			var keysgroupBuffer = new Buffer(transaction.asset.multisignature.keysgroup.join(""), "utf8");
			var bb = new ByteBuffer(1 + 1 + keysgroupBuffer.length, true);

			bb.writeByte(transaction.asset.multisignature.min);
			bb.writeByte(transaction.asset.multisignature.lifetime);

			for (var i = 0; i < keysgroupBuffer.length; i++) {
				bb.writeByte(keysgroupBuffer[i]);
			}

			bb.flip();

			assetBytes = bb.toBuffer();
			assetSize  = assetBytes.length;
			break;

		case 5: // Dapp
			assetBytes = getDAppBytes(transaction.asset.dapp);
			assetSize = assetBytes.length;
			break;

		case 6: // In Transfer (Dapp Deposit)
			assetBytes = getTransferBytes(transaction.asset.dapptransfer);
			assetSize = assetBytes.length;
			break;
	}

	if (transaction.requesterPublicKey) {
		assetSize += 32;
	}

	var bb = new ByteBuffer(1 + 4 + 32 + 8 + 8 + 64 + 64 + assetSize, true);
	bb.writeByte(transaction.type);
	bb.writeInt(transaction.timestamp);

	var senderPublicKeyBuffer = new Buffer(transaction.senderPublicKey, "hex");
	for (var i = 0; i < senderPublicKeyBuffer.length; i++) {
		bb.writeByte(senderPublicKeyBuffer[i]);
	}

	if (transaction.requesterPublicKey) {
		var requesterPublicKey = new Buffer(transaction.requesterPublicKey, "hex");

		for (var i = 0; i < requesterPublicKey.length; i++) {
			bb.writeByte(requesterPublicKey[i]);
		}
	}

	if (transaction.recipientId) {
		var recipient = transaction.recipientId.slice(0, -1);
		recipient = bignum(recipient).toBuffer({size: 8});

		for (var i = 0; i < 8; i++) {
			bb.writeByte(recipient[i] || 0);
		}
	} else {
		for (var i = 0; i < 8; i++) {
			bb.writeByte(0);
		}
	}

	bb.writeLong(transaction.amount);

	if (assetSize > 0) {
		for (var i = 0; i < assetSize; i++) {
			bb.writeByte(assetBytes[i]);
		}
	}

	if (transaction.signature) {
		var signatureBuffer = new Buffer(transaction.signature, "hex");
		for (var i = 0; i < signatureBuffer.length; i++) {
			bb.writeByte(signatureBuffer[i]);
		}
	}

	if (transaction.signSignature) {
		var signSignatureBuffer = new Buffer(transaction.signSignature, "hex");
		for (var i = 0; i < signSignatureBuffer.length; i++) {
			bb.writeByte(signSignatureBuffer[i]);
		}
	}

	bb.flip();
	var arrayBuffer = new Uint8Array(bb.toArrayBuffer());
	var buffer = [];

	for (var i = 0; i < arrayBuffer.length; i++) {
		buffer[i] = arrayBuffer[i];
	}

	return new Buffer(buffer);
}
コード例 #13
0
ファイル: block.js プロジェクト: MNorberto/lisk
Block.prototype.getBytes = function(block) {
	const capacity =
		4 + // version (int)
		4 + // timestamp (int)
		8 + // previousBlock
		4 + // numberOfTransactions (int)
		8 + // totalAmount (long)
		8 + // totalFee (long)
		8 + // reward (long)
		4 + // payloadLength (int)
		32 + // payloadHash
		32 + // generatorPublicKey
		64 + // blockSignature or unused
		4; // unused
	let bytes;

	try {
		const byteBuffer = new ByteBuffer(capacity, true);
		byteBuffer.writeInt(block.version);
		byteBuffer.writeInt(block.timestamp);

		if (block.previousBlock) {
			const pb = new Bignum(block.previousBlock).toBuffer({ size: '8' });

			for (let i = 0; i < 8; i++) {
				byteBuffer.writeByte(pb[i]);
			}
		} else {
			for (let i = 0; i < 8; i++) {
				byteBuffer.writeByte(0);
			}
		}

		byteBuffer.writeInt(block.numberOfTransactions);
		byteBuffer.writeLong(block.totalAmount.toString());
		byteBuffer.writeLong(block.totalFee.toString());
		byteBuffer.writeLong(block.reward.toString());

		byteBuffer.writeInt(block.payloadLength);

		const payloadHashBuffer = this.scope.ed.hexToBuffer(block.payloadHash);
		for (let i = 0; i < payloadHashBuffer.length; i++) {
			byteBuffer.writeByte(payloadHashBuffer[i]);
		}

		const generatorPublicKeyBuffer = this.scope.ed.hexToBuffer(
			block.generatorPublicKey
		);
		for (let i = 0; i < generatorPublicKeyBuffer.length; i++) {
			byteBuffer.writeByte(generatorPublicKeyBuffer[i]);
		}

		if (block.blockSignature) {
			const blockSignatureBuffer = this.scope.ed.hexToBuffer(
				block.blockSignature
			);
			for (let i = 0; i < blockSignatureBuffer.length; i++) {
				byteBuffer.writeByte(blockSignatureBuffer[i]);
			}
		}

		byteBuffer.flip();
		bytes = byteBuffer.toBuffer();
	} catch (e) {
		throw e;
	}

	return bytes;
};