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; }
void hash160 (uint8_t* dest, const Slice src) { hash160(dest, src.begin, src.length()); }