auto verify () const { uint8_t hash[32]; uint8_t target[32] = {}; hash256(hash, this->header); std::reverse(hash, hash + 32); const auto bits = this->header.peek<uint32_t>(72); Block::calculateTarget(target, bits); return memcmp(hash, target, 32) <= 0; }
JNIEXPORT jbyteArray JNICALL Java_com_lsh_lshlibrary_MainActivity_LSH256 (JNIEnv *env, jobject obj, jbyteArray data, jint databitlen){ // size_t len= (unsigned int)(*env)->GetByteArrayElements(env, data, 0); // unsigned char *inputData= (unsigned char*)malloc((int)databitlen/8); unsigned char *outputData= (unsigned char *)malloc(32*sizeof(unsigned char)); unsigned char *inputData= (unsigned char *)(*env)->GetByteArrayElements(env, data, NULL); jbyteArray hashval= (*env)->NewByteArray(env, 32); // strncpy(inputData, (const unsigned char*)data, (int)databitlen/8); // (*env)->GetByteArrayRegion(env, data, 0, 32, inputData); hash256(256, inputData, (int)databitlen, outputData); // (*env)->SetByteArrayRegion(env, hashval, 0, 32, (jbyte*)outputData); (*env)->ReleaseByteArrayElements(env, hashval, (jbyte*)outputData, 0); free(inputData); free(outputData); return hashval; }
void debugPrint(std::string const& _indent = "") const { std::cerr << std::hex << hash256() << ":" << std::dec << std::endl; debugPrintBody(_indent); }
void hash256 (uint8_t* dest, const Slice src) { hash256(dest, src.begin, src.length()); }