コード例 #1
0
ファイル: octstr.c プロジェクト: dzruyk/crypti
static void
octstr_bitwise(octstr_t *dst, const octstr_t *a, const octstr_t *b, int op)
{
	octstr_t copy;
	unsigned char *ap, *bp;
	int alen, blen, i;

	assert(dst != NULL && a != NULL && b != NULL);

	if (octstr_len(a) > octstr_len(b)) {
		const octstr_t *tmp;

		tmp = a;
		a = b;
		b = tmp;
	}

	ap = octstr_ptr((octstr_t *)a);
	bp = octstr_ptr((octstr_t *)b);
	alen = octstr_len((octstr_t *)a);
	blen = octstr_len((octstr_t *)b);

	octstr_init(&copy);

	switch (op) {
	case OCTSTR_OP_AND:
		for (i = 0; i < alen; i++)
			octstr_putc(&copy, *ap++ & *bp++);

		for (i = alen; i < blen; i++)
			octstr_putc(&copy, 0);
		break;
	case OCTSTR_OP_OR:
		for (i = 0; i < alen; i++)
			octstr_putc(&copy, *ap++ | *bp++);

		for (i = alen; i < blen; i++)
			octstr_putc(&copy, *bp++);
		break;
	case OCTSTR_OP_XOR:
		for (i = 0; i < alen; i++)
			octstr_putc(&copy, *ap++ ^ *bp++);

		for (i = alen; i < blen; i++)
			octstr_putc(&copy, *bp++);
		break;
	default:
		SHOULDNT_REACH();
	}

	octstr_copy(dst, &copy);
	octstr_clear(&copy);
}
コード例 #2
0
ファイル: variable.c プロジェクト: dzruyk/crypti
void
var_init(struct variable *var)
{
	assert(var != NULL);

	var->type = 0;

	//FIXME: need to check ret status
	mpl_init(&var->bnum);
	octstr_init(&var->octstr);
	str_init(&var->str);
}
コード例 #3
0
ファイル: octstr.c プロジェクト: dzruyk/crypti
void
octstr_initv(octstr_t *octstr, ...)
{
	octstr_t *p;

	va_list ap;

	va_start(ap, octstr);

	p = octstr;
	while (p != NULL) {
		octstr_init(p);
		p = va_arg(ap, octstr_t *);
	}
}
コード例 #4
0
ファイル: gwlib.c プロジェクト: Phonebooth/kannel
void gwlib_init(void) 
{
    gw_assert(!init);
    gw_init_mem();
    uuid_init();
    octstr_init();
    gwlib_protected_init();
    gwthread_init();
    log_init();
    http_init();
    socket_init();
    charset_init();
    cfg_init();
    init = 1;
}