src/libpakfire/config.c \
src/libpakfire/db.c \
src/libpakfire/dependencies.c \
+ src/libpakfire/digest.c \
src/libpakfire/dist.c \
src/libpakfire/downloader.c \
src/libpakfire/file.c \
src/libpakfire/include/pakfire/constants.h \
src/libpakfire/include/pakfire/db.h \
src/libpakfire/include/pakfire/dependencies.h \
+ src/libpakfire/include/pakfire/digest.h \
src/libpakfire/include/pakfire/dist.h \
src/libpakfire/include/pakfire/downloader.h \
src/libpakfire/include/pakfire/file.h \
#include <Python.h>
#include <datetime.h>
+#include <pakfire/digest.h>
#include <pakfire/file.h>
#include "file.h"
return 0;
}
-static PyObject* _File_digest(FileObject* self, enum pakfire_digests type) {
+static PyObject* _File_digest(FileObject* self, enum pakfire_digest_types type) {
size_t length = 0;
// Fetch the digest
return _File_digest(self, type);
}
-static PyObject* _File_hexdigest(FileObject* self, enum pakfire_digests type) {
+static PyObject* _File_hexdigest(FileObject* self, enum pakfire_digest_types type) {
char* hexdigest = pakfire_file_get_hexdigest(self->file, type);
if (!hexdigest)
Py_RETURN_NONE;
#include <Python.h>
+#include <pakfire/digest.h>
#include <pakfire/file.h>
#include <pakfire/filelist.h>
#include <pakfire/package.h>
pakfire_package_set_uuid(self->package, uuid);
}
-static PyObject* Package_get_hexdigest(PackageObject* self, enum pakfire_digests type) {
- enum pakfire_digests digest = 0;
+static PyObject* Package_get_hexdigest(PackageObject* self, enum pakfire_digest_types type) {
+ enum pakfire_digest_types digest = 0;
const char* hexdigest = pakfire_package_get_hexdigest(self->package, &digest);
if (!hexdigest)
}
static int Package_set_hexdigest(PackageObject* self,
- enum pakfire_digests type, PyObject* value) {
+ enum pakfire_digest_types type, PyObject* value) {
const char* hexdigest = PyUnicode_FromValue(value);
return pakfire_package_set_hexdigest(self->package, type, hexdigest);
#include <pakfire/archive.h>
#include <pakfire/compress.h>
#include <pakfire/dependencies.h>
+#include <pakfire/digest.h>
#include <pakfire/file.h>
#include <pakfire/filelist.h>
#include <pakfire/i18n.h>
}
int pakfire_archive_digest(struct pakfire_archive* archive,
- enum pakfire_digests type, unsigned char* digest, size_t* length) {
+ enum pakfire_digest_types type, unsigned char* digest, size_t* length) {
int r = 1;
const EVP_MD* md = NULL;
#include <pakfire/archive.h>
#include <pakfire/db.h>
#include <pakfire/dependencies.h>
+#include <pakfire/digest.h>
#include <pakfire/file.h>
#include <pakfire/filelist.h>
#include <pakfire/logging.h>
}
static const struct pakfire_digest {
- enum pakfire_digests type;
+ enum pakfire_digest_types type;
const char* prefix;
} pakfire_digests[] = {
{ PAKFIRE_DIGEST_SHA512, "sha512:" },
{ 0, NULL },
};
-static char* pakfire_db_pack_digest(enum pakfire_digests type, const char* hexdigest) {
+static char* pakfire_db_pack_digest(enum pakfire_digest_types type, const char* hexdigest) {
char* s = NULL;
int r;
return NULL;
}
-static const char* pakfire_db_unpack_digest(const char* hexdigest, enum pakfire_digests* type) {
+static const char* pakfire_db_unpack_digest(const char* hexdigest, enum pakfire_digest_types* type) {
*type = 0;
// Don't do anything for empty input
goto ERROR;
}
- enum pakfire_digests digest_type = 0;
+ enum pakfire_digest_types digest_type = 0;
const char* hexdigest = pakfire_package_get_hexdigest(pkg, &digest_type);
if (hexdigest) {
// Digest
const char* digest = (const char*)sqlite3_column_text(stmt, 8);
if (digest) {
- enum pakfire_digests digest_type = 0;
+ enum pakfire_digest_types digest_type = 0;
// Unpack digest
const char* hexdigest = pakfire_db_unpack_digest(digest, &digest_type);
}
static int pakfire_db_load_file_digest(struct pakfire_db* db, struct pakfire_file* file,
- sqlite3_stmt* stmt, const enum pakfire_digests type, const int field) {
+ sqlite3_stmt* stmt, const enum pakfire_digest_types type, const int field) {
// Fetch digest
const unsigned char* digest = sqlite3_column_blob(stmt, field);
--- /dev/null
+/*#############################################################################
+# #
+# Pakfire - The IPFire package management system #
+# Copyright (C) 2022 Pakfire development team #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#############################################################################*/
#include <openssl/err.h>
#include <openssl/evp.h>
+#include <pakfire/digest.h>
#include <pakfire/downloader.h>
#include <pakfire/i18n.h>
#include <pakfire/logging.h>
const char* title,
const char* url,
const char* path,
- enum pakfire_digests md,
+ enum pakfire_digest_types md,
const unsigned char* expected_digest,
const size_t expected_digest_length,
enum pakfire_transfer_flags flags) {
const char* title,
const char* url,
const char* path,
- enum pakfire_digests md,
+ enum pakfire_digest_types md,
const unsigned char* expected_digest,
const size_t expected_digest_length,
enum pakfire_transfer_flags flags) {
const char* title,
const char* url,
const char* path,
- enum pakfire_digests md,
+ enum pakfire_digest_types md,
const unsigned char* expected_digest,
const size_t expected_digest_length,
enum pakfire_transfer_flags flags) {
#include <archive_entry.h>
#include <openssl/err.h>
#include <openssl/evp.h>
-#include <openssl/sha.h>
#include <pakfire/constants.h>
+#include <pakfire/digest.h>
#include <pakfire/file.h>
#include <pakfire/logging.h>
#include <pakfire/pakfire.h>
char symlink[PATH_MAX];
// Digests
- struct pakfire_file_digests {
- // SHA-512
- unsigned char sha512[SHA512_DIGEST_LENGTH];
-
- // SHA-256
- unsigned char sha256[SHA256_DIGEST_LENGTH];
- } digests;
+ struct pakfire_digests digests;
// Verification Status
int verify_status;
}
PAKFIRE_EXPORT const unsigned char* pakfire_file_get_digest(
- struct pakfire_file* file, const enum pakfire_digests type, size_t* length) {
+ struct pakfire_file* file, const enum pakfire_digest_types type, size_t* length) {
switch (type) {
case PAKFIRE_DIGEST_SHA512:
}
PAKFIRE_EXPORT int pakfire_file_set_digest(struct pakfire_file* file,
- const enum pakfire_digests type, const unsigned char* digest, const size_t length) {
+ const enum pakfire_digest_types type, const unsigned char* digest, const size_t length) {
if (!digest) {
errno = EINVAL;
return 1;
}
PAKFIRE_EXPORT char* pakfire_file_get_hexdigest(
- struct pakfire_file* file, const enum pakfire_digests type) {
+ struct pakfire_file* file, const enum pakfire_digest_types type) {
const unsigned char* digest = NULL;
size_t length = 0;
EVP_MD_CTX* sha512_ctx = NULL;
EVP_MD_CTX* sha256_ctx = NULL;
- struct pakfire_file_digests computed_digests;
+ struct pakfire_digests computed_digests;
// Nothing to do for anything that isn't a regular file
if (!S_ISREG(st->st_mode))
struct pakfire_archive;
+#include <pakfire/digest.h>
#include <pakfire/filelist.h>
#include <pakfire/package.h>
#include <pakfire/repo.h>
int pakfire_archive_copy(struct pakfire_archive* archive, const char* path);
int pakfire_archive_digest(struct pakfire_archive* archive,
- enum pakfire_digests type, unsigned char* digest, size_t* length);
+ enum pakfire_digest_types type, unsigned char* digest, size_t* length);
struct pakfire_scriptlet* pakfire_archive_get_scriptlet(
struct pakfire_archive* archive, const char* type);
--- /dev/null
+/*#############################################################################
+# #
+# Pakfire - The IPFire package management system #
+# Copyright (C) 2022 Pakfire development team #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#############################################################################*/
+
+#ifndef PAKFIRE_DIGEST_H
+#define PAKFIRE_DIGEST_H
+
+// Pakfire knows these digests
+enum pakfire_digest_types {
+ PAKFIRE_DIGEST_SHA256 = 1,
+ PAKFIRE_DIGEST_SHA512 = 2,
+};
+
+#ifdef PAKFIRE_PRIVATE
+
+#include <openssl/sha.h>
+
+// Digests
+struct pakfire_digests {
+ // SHA-512
+ unsigned char sha512[SHA512_DIGEST_LENGTH];
+
+ // SHA-256
+ unsigned char sha256[SHA256_DIGEST_LENGTH];
+};
+
+#endif
+
+#endif /* PAKFIRE_DIGEST_H */
struct pakfire_downloader;
struct pakfire_mirrorlist;
+#include <pakfire/digest.h>
#include <pakfire/pakfire.h>
enum pakfire_transfer_flags {
const char* title,
const char* url,
const char* path,
- enum pakfire_digests md,
+ enum pakfire_digest_types md,
const unsigned char* expected_digest,
const size_t expected_digest_length,
enum pakfire_transfer_flags flags);
const char* title,
const char* url,
const char* path,
- enum pakfire_digests md,
+ enum pakfire_digest_types md,
const unsigned char* expected_digest,
const size_t expected_digest_length,
enum pakfire_transfer_flags flags);
struct pakfire_file;
+#include <pakfire/digest.h>
#include <pakfire/pakfire.h>
int pakfire_file_create(struct pakfire_file** file, struct pakfire* pakfire);
void pakfire_file_set_mtime(struct pakfire_file* file, time_t time);
const unsigned char* pakfire_file_get_digest(struct pakfire_file* file,
- const enum pakfire_digests type, size_t* length);
+ const enum pakfire_digest_types type, size_t* length);
char* pakfire_file_get_hexdigest(struct pakfire_file* file,
- const enum pakfire_digests type);
+ const enum pakfire_digest_types type);
int pakfire_file_set_digest(struct pakfire_file* file,
- const enum pakfire_digests type, const unsigned char* digest, const size_t length);
+ const enum pakfire_digest_types type, const unsigned char* digest, const size_t length);
struct pakfire_file* pakfire_file_parse_from_file(const char* list, unsigned int format);
struct pakfire_package;
+#include <pakfire/digest.h>
#include <pakfire/filelist.h>
#include <pakfire/packagelist.h>
#include <pakfire/pakfire.h>
const char* pakfire_package_get_uuid(struct pakfire_package* pkg);
void pakfire_package_set_uuid(struct pakfire_package* pkg, const char* uuid);
const unsigned char* pakfire_package_get_digest(struct pakfire_package* pkg,
- enum pakfire_digests* type);
+ enum pakfire_digest_types* type);
const char* pakfire_package_get_hexdigest(struct pakfire_package* pkg,
- enum pakfire_digests* type);
+ enum pakfire_digest_types* type);
int pakfire_package_set_digest(struct pakfire_package* pkg,
- enum pakfire_digests type, const unsigned char* digest);
+ enum pakfire_digest_types type, const unsigned char* digest);
int pakfire_package_set_hexdigest(struct pakfire_package* pkg,
- enum pakfire_digests type, const char* hexdigest);
+ enum pakfire_digest_types type, const char* hexdigest);
const char* pakfire_package_get_summary(struct pakfire_package* pkg);
void pakfire_package_set_summary(struct pakfire_package* pkg, const char* summary);
const char* pakfire_package_get_description(struct pakfire_package* pkg);
struct pakfire;
-enum pakfire_digests {
- PAKFIRE_DIGEST_SHA256 = 1,
- PAKFIRE_DIGEST_SHA512 = 2,
-};
-
#include <pakfire/filelist.h>
#include <pakfire/key.h>
#include <pakfire/packagelist.h>
#include <archive.h>
+#include <pakfire/digest.h>
#include <pakfire/pakfire.h>
char* pakfire_unquote_in_place(char* s);
// Digests
-size_t pakfire_digest_length(enum pakfire_digests digest);
+size_t pakfire_digest_length(enum pakfire_digest_types digest);
// Archive Stuff
#include <pakfire/archive.h>
#include <pakfire/constants.h>
#include <pakfire/dependencies.h>
+#include <pakfire/digest.h>
#include <pakfire/file.h>
#include <pakfire/filelist.h>
#include <pakfire/i18n.h>
pakfire_package_set_string(pkg, SOLVABLE_PKGID, uuid);
}
-static enum pakfire_digests pakfire_package_id2digest(Id id) {
+static enum pakfire_digest_types pakfire_package_id2digest(Id id) {
switch (id) {
case REPOKEY_TYPE_SHA512:
return PAKFIRE_DIGEST_SHA512;
}
PAKFIRE_EXPORT const unsigned char* pakfire_package_get_digest(
- struct pakfire_package* pkg, enum pakfire_digests* type) {
+ struct pakfire_package* pkg, enum pakfire_digest_types* type) {
Solvable* s = get_solvable(pkg);
Id id;
}
PAKFIRE_EXPORT const char* pakfire_package_get_hexdigest(
- struct pakfire_package* pkg, enum pakfire_digests* type) {
+ struct pakfire_package* pkg, enum pakfire_digest_types* type) {
Solvable* s = get_solvable(pkg);
Id id;
}
PAKFIRE_EXPORT int pakfire_package_set_digest(struct pakfire_package* pkg,
- enum pakfire_digests type, const unsigned char* digest) {
+ enum pakfire_digest_types type, const unsigned char* digest) {
Solvable* s = get_solvable(pkg);
Pool* pool = s->repo->pool;
Id id;
}
PAKFIRE_EXPORT int pakfire_package_set_hexdigest(struct pakfire_package* pkg,
- enum pakfire_digests type, const char* hexdigest) {
+ enum pakfire_digest_types type, const char* hexdigest) {
const size_t digest_length = pakfire_digest_length(type);
if (!digest_length) {
static int pakfire_package_make_cache_path(struct pakfire_package* pkg) {
const char* filename = pakfire_package_get_filename(pkg);
- enum pakfire_digests digest;
+ enum pakfire_digest_types digest;
const char* hexdigest = pakfire_package_get_hexdigest(pkg, &digest);
if (hexdigest && strlen(hexdigest) >= 3)
if (build_id)
pakfire_package_dump_add_line(&string, _("Build ID"), build_id);
- enum pakfire_digests digest = 0;
+ enum pakfire_digest_types digest = 0;
// Digest
const char* hexdigest = pakfire_package_get_hexdigest(pkg, &digest);
const char* title,
const char* url,
const char* path,
- enum pakfire_digests md,
+ enum pakfire_digest_types md,
const unsigned char* expected_digest,
const size_t expected_digest_length,
enum pakfire_transfer_flags flags) {
#include <pakfire/archive.h>
#include <pakfire/db.h>
+#include <pakfire/digest.h>
#include <pakfire/downloader.h>
#include <pakfire/file.h>
#include <pakfire/filelist.h>
return 0;
}
- enum pakfire_digests digest_type = 0;
+ enum pakfire_digest_types digest_type = 0;
// Fetch digest from package
const unsigned char* expected_digest = pakfire_package_get_digest(pkg, &digest_type);
goto ERROR;
}
- enum pakfire_digests digest_type = 0;
+ enum pakfire_digest_types digest_type = 0;
// Retrieve package digest
const unsigned char* digest = pakfire_package_get_digest(pkg, &digest_type);
// Digests
-size_t pakfire_digest_length(enum pakfire_digests digest) {
+size_t pakfire_digest_length(enum pakfire_digest_types digest) {
switch (digest) {
case PAKFIRE_DIGEST_SHA512:
return 64;