From 2665fd794542870db0302d49b10f4f8decf495b0 Mon Sep 17 00:00:00 2001 From: dbullock Date: Thu, 15 Aug 2019 11:45:50 -0700 Subject: Add more output on HMAC compare failure. - ASDCP::IntegrityPack::TestValues - dump an error message that includes expected and found HMAC --- src/AS_DCP_MXF.cpp | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src/AS_DCP_MXF.cpp') diff --git a/src/AS_DCP_MXF.cpp b/src/AS_DCP_MXF.cpp index e23fb86..d3606fe 100755 --- a/src/AS_DCP_MXF.cpp +++ b/src/AS_DCP_MXF.cpp @@ -36,6 +36,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ACES.h" #include "MPEG.h" #include "Wav.h" +#include "KM_util.h" #include #include @@ -688,7 +689,33 @@ ASDCP::IntegrityPack::TestValues(const ASDCP::FrameBuffer& FB, const byte_t* Ass HMAC->Update(FB.RoData(), FB.Size() - HMAC_SIZE); HMAC->Finalize(); - return HMAC->TestHMACValue(p); + Result_t result = RESULT_OK; + result = HMAC->TestHMACValue(p); + + if (KM_FAILURE(result)) + { + Result_t r = RESULT_OK; + char hmac_str[HMAC_SIZE*10]; + char found_str[HMAC_SIZE*10]; + byte_t hmac_buf[HMAC_SIZE]; + + + Kumu::bin2hex(p, HMAC_SIZE, found_str, HMAC_SIZE*10); + + r = HMAC->GetHMACValue(hmac_buf); + if ( KM_SUCCESS( r ) ) + { + Kumu::bin2hex(hmac_buf, HMAC_SIZE, hmac_str, HMAC_SIZE*10); + } + else + { + snprintf(hmac_str, HMAC_SIZE*10, " - read error - "); + } + + DefaultLogSink().Error("IntegrityPack failure: HMAC is %s, expecting %s.\n", found_str, hmac_str); + } + + return result; } // -- cgit v1.2.3