summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/mmrfc5424addhmac/mmrfc5424addhmac.c14
-rw-r--r--runtime/msg.c16
-rw-r--r--runtime/msg.h1
3 files changed, 25 insertions, 6 deletions
diff --git a/plugins/mmrfc5424addhmac/mmrfc5424addhmac.c b/plugins/mmrfc5424addhmac/mmrfc5424addhmac.c
index 877c66e9..6adad187 100644
--- a/plugins/mmrfc5424addhmac/mmrfc5424addhmac.c
+++ b/plugins/mmrfc5424addhmac/mmrfc5424addhmac.c
@@ -240,7 +240,6 @@ skipSDID(uchar *sdbuf, int sdlen, int *rootIdx)
}
++i;
}
-dbgprintf("DDDD: end skip, sd-id: '%s'\n", sdbuf+i);
*rootIdx = i;
}
@@ -264,7 +263,6 @@ getSDID(uchar *sdbuf, int sdlen, int *rootIdx, uchar *sdid)
done:
sdid[j] = '\0';
*rootIdx = i;
-dbgprintf("DDDD: got sd-id '%s'\n", sdid);
}
/* check if "our" hmac is already present */
@@ -278,7 +276,6 @@ isHmacPresent(instanceData *pData, msg_t *pMsg)
uchar sdid[33]; /* RFC-based size limit */
MsgGetStructuredData(pMsg, &sdbuf, &sdlen);
-dbgprintf("DDDD: STRUCTURED-DATA is: '%s'\n", sdbuf);
found = 0;
i = 0;
@@ -291,7 +288,6 @@ dbgprintf("DDDD: STRUCTURED-DATA is: '%s'\n", sdbuf);
skipSDID(sdbuf, sdlen, &i);
}
-dbgprintf("DDDD: isHmacPresent: %d\n", found);
return found;
}
@@ -300,16 +296,23 @@ hashMsg(instanceData *pData, msg_t *pMsg)
{
uchar *pRawMsg;
int lenRawMsg;
+ uchar *sdbuf;
+ rs_size_t sdlen;
unsigned int hashlen;
uchar hash[EVP_MAX_MD_SIZE];
uchar hashPrintable[2*EVP_MAX_MD_SIZE+1];
+ uchar newsd[64*1024]; /* we assume this is sufficient... */
+ int lenNewsd;
DEFiRet;
+ MsgGetStructuredData(pMsg, &sdbuf, &sdlen);
getRawMsg(pMsg, &pRawMsg, &lenRawMsg);
HMAC(pData->algo, pData->key, pData->keylen,
pRawMsg, lenRawMsg, hash, &hashlen);
hexify(hash, hashlen, hashPrintable);
-dbgprintf("DDDD: rawmsg is: '%s', hash: '%s'\n", pRawMsg, hashPrintable);
+ lenNewsd = snprintf((char*)newsd, sizeof(newsd), "[%s hash=\"%s\"]",
+ (char*)pData->sdid, (char*)hashPrintable);
+ MsgAddToStructuredData(pMsg, newsd, lenNewsd);
RETiRet;
}
@@ -326,7 +329,6 @@ CODESTARTdoAction
uchar *pRawMsg;
int lenRawMsg;
getRawMsg(pMsg, &pRawMsg, &lenRawMsg);
-dbgprintf("DDDD: mmrfc5424addhmac: non-rfc5424 or HMAC already present: %.256s\n", pRawMsg);
dbgprintf("mmrfc5424addhmac: non-rfc5424 or HMAC already "
"present: %.256s\n", pRawMsg);
}
diff --git a/runtime/msg.c b/runtime/msg.c
index b15b76f8..18f72086 100644
--- a/runtime/msg.c
+++ b/runtime/msg.c
@@ -4067,6 +4067,22 @@ finalize_it:
RETiRet;
}
+rsRetVal
+MsgAddToStructuredData(msg_t *pMsg, uchar *toadd, rs_size_t len)
+{
+ uchar *newptr;
+ rs_size_t newlen;
+ DEFiRet;
+ newlen = pMsg->lenStrucData + len;
+ CHKmalloc(newptr = (uchar*) realloc(pMsg->pszStrucData, newlen+1));
+ pMsg->pszStrucData = newptr;
+ memcpy(pMsg->pszStrucData+pMsg->lenStrucData, toadd, len);
+ pMsg->pszStrucData[newlen] = '\0';
+ pMsg->lenStrucData = newlen;
+finalize_it:
+ RETiRet;
+}
+
/* dummy */
rsRetVal msgQueryInterface(void) { return RS_RET_NOT_IMPLEMENTED; }
diff --git a/runtime/msg.h b/runtime/msg.h
index f4c54731..f434a8fc 100644
--- a/runtime/msg.h
+++ b/runtime/msg.h
@@ -168,6 +168,7 @@ void MsgSetTAG(msg_t *pMsg, uchar* pszBuf, size_t lenBuf);
void MsgSetRuleset(msg_t *pMsg, ruleset_t*);
rsRetVal MsgSetFlowControlType(msg_t *pMsg, flowControl_t eFlowCtl);
rsRetVal MsgSetStructuredData(msg_t *pMsg, char* pszStrucData);
+rsRetVal MsgAddToStructuredData(msg_t *pMsg, uchar *toadd, rs_size_t len);
void MsgGetStructuredData(msg_t *pM, uchar **pBuf, rs_size_t *len);
rsRetVal msgSetFromSockinfo(msg_t *pThis, struct sockaddr_storage *sa);
void MsgSetRcvFrom(msg_t *pMsg, prop_t*);