static BOOL SATOSHI_SCRIPT_hash160(SATOSHI_OP_STACK_t * s)
{
	assert(NULL != s);
	SATOSHI_OP_STACK_DATA_t * top = SATOSHI_OP_STACK_pop(s);
	BOOL rc = FALSE;
	hash160_t h160;
	uint32_t cb = 0;
	if(NULL == top) return FALSE;

	switch(top->type)
	{
		case SATOSHI_OP_STACK_DATA_TYPE_BINARY:
		case SATOSHI_OP_STACK_DATA_TYPE_POINTER:
			cb = hash160(top->data, top->cb, h160.vch);
			break;
		case SATOSHI_OP_STACK_DATA_TYPE_INTEGER:
		case SATOSHI_OP_STACK_DATA_TYPE_BOOL:
			cb = hash160(&top->nData, top->cb, h160.vch);
			break;
		case SATOSHI_OP_STACK_DATA_TYPE_NULL:
			break;
	}
	SATOSHI_OP_STACK_DATA_free(top);
	if(cb != 20) return FALSE;
	
	
	rc = SATOSHI_OP_STACK_push(s, SATOSHI_OP_STACK_DATA_TYPE_BINARY, &h160.vch[0], cb);	
	return rc;
	
}
Beispiel #2
0
void hash160 (uint8_t* dest, const Slice src) { hash160(dest, src.begin, src.length()); }