Exemplo n.º 1
0
int serialize_varint(struct buff *buf, const uint64 val) {
  int res;
  uint8 c;

  if (val < 253) {
    c = val;
    return serialize_uint8(buf, c);
  } else if (val < 0x10000) {
    uint16 len16 = val;
    c = 253;
    res = serialize_uint8(buf, c);
    if (res) {
      return res;
    }
    return serialize_uint16(buf, len16);
  } else {
    uint32 len32 = val;
    c = 254;
    res = serialize_uint8(buf, c);
    if (res) {
      return res;
    }
    return serialize_uint32(buf, len32);
  }
}
Exemplo n.º 2
0
// Should write versions numbers and base name
void Cacher::write_header(void){
  if (file.is_open()) file.close();
  file.open(m_cacheFilename.c_str(), ios::out|ios::binary);
  serialize_uint8(CACHER_MAJOR_VERSION);
  serialize_uint8(CACHER_MINOR_VERSION);
  serialize_string(m_baseName);
  serialize_nl();
}
Exemplo n.º 3
0
int script_txo_generate(const uint160 *pubkey, uint8 **script,
                        uint64 *scriptLen) {
  struct buff *buf = buff_alloc();

  serialize_uint8(buf, OP_DUP);
  serialize_uint8(buf, OP_HASH160);
  script_push_data(buf, pubkey, sizeof *pubkey);
  serialize_uint8(buf, OP_EQUALVERIFY);
  serialize_uint8(buf, OP_CHECKSIG);

  *script = buff_base(buf);
  *scriptLen = buff_curlen(buf);

  free(buf);

  return 0;
}
Exemplo n.º 4
0
static void script_push_data(struct buff *buf, const void *data, size_t len) {
  ASSERT(buf->grow);

  Log("%s: len=%zu / %#zx\n", __FUNCTION__, len, len);

  if (len < OP_PUSHDATA1) {
    serialize_uint8(buf, len);
  } else if (len <= 0xff) {
    serialize_uint8(buf, OP_PUSHDATA1);
    serialize_uint8(buf, len);
  } else if (len <= 0xffff) {
    serialize_uint8(buf, OP_PUSHDATA2);
    serialize_uint16(buf, len);
  } else {
    serialize_uint8(buf, OP_PUSHDATA4);
    serialize_uint32(buf, len);
  }
  serialize_bytes(buf, data, len);
}
Exemplo n.º 5
0
void serialize_header(pokeheader *header, char **outstream)
{
	char buff8;
	char buff8b;
	char *buff32 = ( char *) malloc(4*sizeof( char));

	buff32 = serialize_uint32(buff32, header->type);
	buff8 = serialize_uint8(buff8, header->id);
	buff8b = serialize_uint8(buff8b, header->data_size);

	char *instream = ( char *) malloc(7* sizeof( char));
	for(int i = 0; i< 4; i++){
		instream[i] = buff32[i];
 	}

	instream[4] = buff8;
	instream[5] = buff8b;

	memcpy(*outstream, instream, 7 );

	free(buff32);
	free(instream);

}