static void DetectTlsFingerprintFree(void *);
static int DetectTlsStoreSetup (DetectEngineCtx *, Signature *, char *);
-static int DetectTlsStoreMatch (ThreadVars *, DetectEngineThreadCtx *,
- Flow *, uint8_t, void *,
- const Signature *, const SigMatchData *);
+static int DetectTlsStorePostMatch (ThreadVars *t, DetectEngineThreadCtx *det_ctx,
+ Packet *, const Signature *s, const SigMatchCtx *unused);
/**
* \brief Registration function for keyword: tls.version
sigmatch_table[DETECT_AL_TLS_FINGERPRINT].Free = DetectTlsFingerprintFree;
sigmatch_table[DETECT_AL_TLS_FINGERPRINT].RegisterTests = NULL;
- sigmatch_table[DETECT_AL_TLS_STORE].name = "tls.store";
+ sigmatch_table[DETECT_AL_TLS_STORE].name = "tls_store";
+ sigmatch_table[DETECT_AL_TLS_STORE].alias = "tls.store";
sigmatch_table[DETECT_AL_TLS_STORE].desc = "store TLS/SSL certificate on disk";
sigmatch_table[DETECT_AL_TLS_STORE].url = DOC_URL DOC_VERSION "/rules/tls-keywords.html#tlsstore";
- sigmatch_table[DETECT_AL_TLS_STORE].Match = NULL;
- sigmatch_table[DETECT_AL_TLS_STORE].AppLayerMatch = DetectTlsStoreMatch;
+ sigmatch_table[DETECT_AL_TLS_STORE].Match = DetectTlsStorePostMatch;
sigmatch_table[DETECT_AL_TLS_STORE].Setup = DetectTlsStoreSetup;
sigmatch_table[DETECT_AL_TLS_STORE].Free = NULL;
sigmatch_table[DETECT_AL_TLS_STORE].RegisterTests = NULL;
s->alproto = ALPROTO_TLS;
s->flags |= SIG_FLAG_TLSSTORE;
- SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_AMATCH);
+ SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_POSTMATCH);
return 0;
}
-/** \warning modifies state */
-static int DetectTlsStoreMatch (ThreadVars *t, DetectEngineThreadCtx *det_ctx,
- Flow *f, uint8_t flags, void *state,
- const Signature *s, const SigMatchData *m)
+/** \warning modifies Flow::alstate */
+static int DetectTlsStorePostMatch (ThreadVars *t, DetectEngineThreadCtx *det_ctx,
+ Packet *p, const Signature *s, const SigMatchCtx *unused)
{
SCEnter();
- SSLState *ssl_state = (SSLState *)state;
+ if (p->flow == NULL)
+ return 0;
+
+ SSLState *ssl_state = FlowGetAppState(p->flow);
if (ssl_state == NULL) {
SCLogDebug("no tls state, no match");
- SCReturnInt(1);
- }
-
- if (s->flags & SIG_FLAG_TLSSTORE) {
- ssl_state->server_connp.cert_log_flag |= SSL_TLS_LOG_PEM;
+ SCReturnInt(0);
}
+ ssl_state->server_connp.cert_log_flag |= SSL_TLS_LOG_PEM;
SCReturnInt(1);
}