#include "types.h"
#include "argb_frame.h"
#include "certificates.h"
-#include "gamma_lut.h"
#include "xyz_frame.h"
+#include "dcp_assert.h"
#include "compose.hpp"
#include "KM_util.h"
#include "KM_fileio.h"
return "advertisement";
}
- assert (false);
+ DCP_ASSERT (false);
}
/** Convert a string from a <ContentKind> node to a libdcp ContentKind.
return ADVERTISEMENT;
}
- assert (false);
+ DCP_ASSERT (false);
}
/** Decompress a JPEG2000 image to a bitmap.
}
string
-dcp::file_to_string (boost::filesystem::path p)
+dcp::file_to_string (boost::filesystem::path p, uintmax_t max_length)
{
uintmax_t len = boost::filesystem::file_size (p);
- char* c = new char[len];
+ if (len > max_length) {
+ throw MiscError ("Unexpectedly long file");
+ }
+
+ char* c = new char[len + 1];
FILE* f = fopen_boost (p, "r");
if (!f) {
fread (c, 1, len, f);
fclose (f);
+ c[len] = '\0';
string s (c);
delete[] c;
return s;
}
+
+/** @param key RSA private key in PEM format (optionally with -----BEGIN... / -----END...)
+ * @return SHA1 fingerprint of key
+ */
+string
+dcp::private_key_fingerprint (string key)
+{
+ boost::replace_all (key, "-----BEGIN RSA PRIVATE KEY-----\n", "");
+ boost::replace_all (key, "\n-----END RSA PRIVATE KEY-----\n", "");
+
+ unsigned char buffer[4096];
+ int const N = base64_decode (key, buffer, sizeof (buffer));
+
+ SHA_CTX sha;
+ SHA1_Init (&sha);
+ SHA1_Update (&sha, buffer, N);
+ uint8_t digest[20];
+ SHA1_Final (digest, &sha);
+
+ char digest_base64[64];
+ return Kumu::base64encode (digest, 20, digest_base64, 64);
+}