/** * hif_package_get_chksum: * @pkg: a #HifPackage instance. * * Gets the checksum for the package. * * Returns: raw checksum bytes * * Since: 0.7.0 */ const unsigned char * hif_package_get_chksum(HifPackage *pkg, int *type) { Solvable *s = get_solvable(pkg); const unsigned char* ret; ret = solvable_lookup_bin_checksum(s, SOLVABLE_CHECKSUM, type); if (ret) *type = checksumt_l2h(*type); return ret; }
/** * SHA1 checksum of the package's header. * * Only sane for packages in rpmdb. */ const unsigned char * hy_package_get_hdr_chksum(HyPackage pkg, int *type) { Solvable *s = get_solvable(pkg); const unsigned char *ret; ret = solvable_lookup_bin_checksum(s, SOLVABLE_HDRID, type); if (ret) *type = checksumt_l2h(*type); return ret; }
/** * dnf_package_get_hdr_chksum: * @pkg: a #DnfPackage instance. * * Gets the SHA1 checksum of the packages header. * This is only set for packages in the rpmdb. * * Returns: raw checksum bytes * * Since: 0.7.0 */ const unsigned char * dnf_package_get_hdr_chksum(DnfPackage *pkg, int *type) { Solvable *s = get_solvable(pkg); const unsigned char *ret; repo_internalize_trigger(s->repo); ret = solvable_lookup_bin_checksum(s, SOLVABLE_HDRID, type); if (ret) *type = checksumt_l2h(*type); return ret; }
HyPackageDelta hy_package_get_delta_from_evr(HyPackage pkg, const char *from_evr) { Pool *pool = package_pool(pkg); Solvable *s = get_solvable(pkg); HyPackageDelta delta = NULL; Dataiterator di; Id checksum_type; const unsigned char *checksum; const char *name = hy_package_get_name(pkg); dataiterator_init(&di, pool, s->repo, SOLVID_META, DELTA_PACKAGE_NAME, name, SEARCH_STRING); dataiterator_prepend_keyname(&di, REPOSITORY_DELTAINFO); while (dataiterator_step(&di)) { dataiterator_setpos_parent(&di); if (pool_lookup_id(pool, SOLVID_POS, DELTA_PACKAGE_EVR) != s->evr || pool_lookup_id(pool, SOLVID_POS, DELTA_PACKAGE_ARCH) != s->arch) continue; const char * base_evr = pool_id2str(pool, pool_lookup_id(pool, SOLVID_POS, DELTA_BASE_EVR)); if (strcmp(base_evr, from_evr)) continue; // we have the right delta info, set up HyPackageDelta and break out: delta = delta_create(); delta->location = solv_strdup(pool_lookup_deltalocation(pool, SOLVID_POS, 0)); delta->baseurl = solv_strdup(pool_lookup_str(pool, SOLVID_POS, DELTA_LOCATION_BASE)); delta->downloadsize = pool_lookup_num(pool, SOLVID_POS, DELTA_DOWNLOADSIZE, 0); checksum = pool_lookup_bin_checksum(pool, SOLVID_POS, DELTA_CHECKSUM, &checksum_type); if (checksum) { delta->checksum_type = checksumt_l2h(checksum_type); delta->checksum = solv_memdup((void*)checksum, checksum_type2length(delta->checksum_type)); } break; } dataiterator_free(&di); return delta; }
const char * pool_checksum_str(Pool *pool, const unsigned char *chksum) { int length = checksum_type2length(checksumt_l2h(CHKSUM_TYPE)); return pool_bin2hex(pool, chksum, length); }