return 0;
}
+const unsigned char* pakfire_digest_get(struct pakfire_digests* digests,
+ const enum pakfire_digest_types type, size_t* length) {
+ // Set length
+ if (length)
+ *length = pakfire_digest_length(type);
+
+ // Return a pointer to the digest (if set)
+ switch (type) {
+ case PAKFIRE_DIGEST_SHA3_512:
+ if (pakfire_digest_set(digests->sha3_512))
+ return digests->sha3_512;
+
+ case PAKFIRE_DIGEST_SHA3_256:
+ if (pakfire_digest_set(digests->sha3_256))
+ return digests->sha3_256;
+
+ case PAKFIRE_DIGEST_BLAKE2B512:
+ if (pakfire_digest_set(digests->blake2b512))
+ return digests->blake2b512;
+
+ case PAKFIRE_DIGEST_BLAKE2S256:
+ if (pakfire_digest_set(digests->blake2s256))
+ return digests->blake2s256;
+
+ case PAKFIRE_DIGEST_SHA2_512:
+ if (pakfire_digest_set(digests->sha2_512))
+ return digests->sha2_512;
+
+ case PAKFIRE_DIGEST_SHA2_256:
+ if (pakfire_digest_set(digests->sha2_256))
+ return digests->sha2_256;
+
+ case PAKFIRE_DIGEST_UNDEFINED:
+ break;
+ }
+
+ return NULL;
+}
+
/*
Returns one if the digest is not all zeros.
*/
size_t pakfire_digest_length(const enum pakfire_digest_types digest);
+const unsigned char* pakfire_digest_get(struct pakfire_digests* digests,
+ const enum pakfire_digest_types type, size_t* length);
+
#define pakfire_digest_set(digest) __pakfire_digest_set(digest, sizeof(digest))
int __pakfire_digest_set(const unsigned char* digest, const size_t length);