Ejemplo n.º 1
0
/**@ingroup tipsec_xp_group
*/
int tipsec_set_keys(tipsec_context_t* ctx, const tipsec_key_t* ik, const tipsec_key_t* ck)
{
	if(!ctx || !ik || !ck){
		return -1;
	}

	TSK_FREE(ctx->ik);
	TSK_FREE(ctx->ck);

	ctx->ik = tsk_strndup(ik, TIPSEC_KEY_LEN);
	ctx->ck = tsk_strndup(ck, TIPSEC_KEY_LEN); /* XP version of IPSec do not support encryption key but we copy ck (Who know?). */				

	return 0;
}
Ejemplo n.º 2
0
char* tsdp_header_tostring(const tsdp_header_t *self)
{
    tsk_buffer_t* output = tsk_buffer_create_null();
    char* str = tsk_null;

    if(!(tsdp_header_serialize(self, output))) {
        str = tsk_strndup(TSK_BUFFER_DATA(output), TSK_BUFFER_SIZE(output));
    }

    TSK_OBJECT_SAFE_FREE(output);
    return str;
}
Ejemplo n.º 3
0
char* tmsrp_header_tostring(const tmsrp_header_t *self)
{
	char* ret = tsk_null;
	tsk_buffer_t* buffer;
	if(self && self->tostring){
		if((buffer = tsk_buffer_create_null())){
			self->tostring(self, buffer);
			ret = tsk_strndup(buffer->data, buffer->size);
			TSK_OBJECT_SAFE_FREE(buffer);
		}
	}
	return ret;
}
//=================================================================================================
//	[[RFC 5389 - 15.3.  USERNAME]] object definition
//
static tsk_object_t* tnet_stun_attribute_username_ctor(tsk_object_t * self, va_list * app)
{
	tnet_stun_attribute_username_t *attribute = self;
	if(attribute){
		const void *payload = va_arg(*app, const void*);
		tsk_size_t payload_size = va_arg(*app, tsk_size_t);

		attribute->value = tsk_strndup(payload, payload_size);

		TNET_STUN_ATTRIBUTE(attribute)->type = stun_username;
		TNET_STUN_ATTRIBUTE(attribute)->length = payload_size;
	}
	return self;
}
Ejemplo n.º 5
0
/** Deserialize <character-string>.
*/
int tnet_dns_rr_charstring_deserialize(const void* data, char** charstring, tsk_size_t *offset)
{
	/* RFC 1035 - 3.3. Standard RRs
		<character-string> is a single length octet followed by that number of characters. 
		<character-string> is treated as binary information, and can be up to 256 characters in
		length (including the length octet).
	*/
	uint8_t* dataPtr = (((uint8_t*)data)+ *offset);
	uint8_t length = *dataPtr;
	
	*charstring = tsk_strndup((const char*)(dataPtr + 1), length);
	*offset += (1 + length);
	
	return 0;	
}
//=================================================================================================
//	[[RFC 5389 - 15.6.  ERROR-CODE]] object definition
//
static tsk_object_t* tnet_stun_attribute_errorcode_ctor(tsk_object_t * self, va_list * app)
{
	tnet_stun_attribute_errorcode_t *attribute = self;
	if(attribute){
		const uint8_t *payload = (const uint8_t*)va_arg(*app, const void*);
		tsk_size_t payload_size = va_arg(*app, tsk_size_t);

		if(payload_size >4){
			uint32_t code = tnet_htonl_2(payload);
			payload += 4;

			attribute->_class = code >>8;
			attribute->number = (code & 0xFF);
			attribute->reason_phrase = tsk_strndup((const char*)payload, (payload_size-4));
		}
		
		TNET_STUN_ATTRIBUTE(attribute)->type = stun_error_code;
		TNET_STUN_ATTRIBUTE(attribute)->length = payload_size;
	}