+/** @brief Algorithm lookup table
+ *
+ * We don't use gcry_md_map_name() since that would import gcrypt's API into
+ * the disorder protocol.
+ */
+static const struct algorithm algorithms[] = {
+#if HAVE_GCRYPT_H
+ { "SHA1", GCRY_MD_SHA1 },
+ { "sha1", GCRY_MD_SHA1 },
+ { "SHA256", GCRY_MD_SHA256 },
+ { "sha256", GCRY_MD_SHA256 },
+ { "SHA384", GCRY_MD_SHA384 },
+ { "sha384", GCRY_MD_SHA384 },
+ { "SHA512", GCRY_MD_SHA512 },
+ { "sha512", GCRY_MD_SHA512 },
+#elif HAVE_BCRYPT_H
+ { "SHA1", BCRYPT_SHA1_ALGORITHM },
+ { "sha1", BCRYPT_SHA1_ALGORITHM },
+ { "SHA256", BCRYPT_SHA256_ALGORITHM },
+ { "sha256", BCRYPT_SHA256_ALGORITHM },
+ { "SHA384", BCRYPT_SHA384_ALGORITHM },
+ { "sha384", BCRYPT_SHA384_ALGORITHM },
+ { "SHA512", BCRYPT_SHA512_ALGORITHM },
+ { "sha512", BCRYPT_SHA512_ALGORITHM },