Add index on receiver specific key to improve verification of origin authentication signing
Signed-off-by: Marcel Jordense <marcel.jordense@adlinktech.com>
This commit is contained in:
parent
d82b7fdd73
commit
a77fe10a04
19 changed files with 753 additions and 359 deletions
|
@ -389,7 +389,16 @@ static void proxypp_pp_match_free(struct dds_security_context *sc, struct proxyp
|
|||
if (pm->permissions_handle != DDS_SECURITY_HANDLE_NIL)
|
||||
{
|
||||
if (!sc->access_control_context->return_permissions_handle(sc->access_control_context, pm->permissions_handle, &exception))
|
||||
{
|
||||
/* FIXME: enable exception warning when access control is updated to return a permission handle for each
|
||||
* matching local and remote participant.
|
||||
*/
|
||||
#if 0
|
||||
EXCEPTION_ERROR(sc, &exception, "Failed to return remote permissions handle");
|
||||
#else
|
||||
DDS_Security_Exception_reset(&exception);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
ddsrt_free(pm);
|
||||
}
|
||||
|
@ -1011,6 +1020,8 @@ static void cleanup_participant_sec_attributes(void *arg)
|
|||
if ((attr = participant_index_remove(sc, info->crypto_handle)) == NULL)
|
||||
return;
|
||||
|
||||
GVTRACE("cleanup participant "PGUIDFMT" security attributes\n", PGUID(attr->pp_guid));
|
||||
|
||||
pm = ddsrt_avl_cfind_min(&pp_proxypp_treedef, &attr->proxy_participants);
|
||||
while (pm)
|
||||
{
|
||||
|
@ -1041,7 +1052,8 @@ static void cleanup_participant_sec_attributes(void *arg)
|
|||
EXCEPTION_ERROR(sc, &exception, "Failed to return participant security attributes");
|
||||
}
|
||||
|
||||
(void)sc->crypto_context->crypto_key_factory->unregister_participant(sc->crypto_context->crypto_key_factory, attr->crypto_handle, NULL);
|
||||
if (!sc->crypto_context->crypto_key_factory->unregister_participant(sc->crypto_context->crypto_key_factory, attr->crypto_handle, &exception))
|
||||
EXCEPTION_ERROR(sc, &exception, "Failed to unregister participant");
|
||||
|
||||
ddsrt_avl_cfree(&pp_proxypp_treedef, &attr->proxy_participants, NULL);
|
||||
ddsrt_mutex_unlock(&attr->lock);
|
||||
|
@ -1702,7 +1714,7 @@ bool q_omg_security_register_remote_participant(struct participant *pp, struct p
|
|||
|
||||
proxypp->sec_attr->crypto_handle = crypto_handle;
|
||||
|
||||
GVTRACE("match pp->crypto=%"PRId64" proxypp->crypto=%"PRId64"\n", pp->sec_attr->crypto_handle, crypto_handle);
|
||||
GVTRACE("match pp->crypto=%"PRId64" proxypp->crypto=%"PRId64" permissions=%"PRId64"\n", pp->sec_attr->crypto_handle, crypto_handle, permissions_handle);
|
||||
match_proxypp_pp(pp, proxypp, permissions_handle, shared_secret);
|
||||
|
||||
GVTRACE("create proxypp-pp match pp="PGUIDFMT" proxypp="PGUIDFMT" lidh=%"PRId64, PGUID(pp->e.guid), PGUID(proxypp->e.guid), pp->sec_attr->local_identity_handle);
|
||||
|
@ -2031,7 +2043,7 @@ static bool q_omg_security_register_remote_writer_match(struct proxy_writer *pwr
|
|||
match = find_or_create_entity_match(gv->security_matches, &pwr->e.guid, &rd->e.guid);
|
||||
if (match->matched)
|
||||
*crypto_handle = match->crypto_handle;
|
||||
else
|
||||
else if (match->crypto_handle == 0)
|
||||
{
|
||||
/* Generate writer crypto info. */
|
||||
match->crypto_handle = sc->crypto_context->crypto_key_factory->register_matched_remote_datawriter(
|
||||
|
@ -2382,7 +2394,7 @@ static bool q_omg_security_register_remote_reader_match(struct proxy_reader *prd
|
|||
match = find_or_create_entity_match(gv->security_matches, &prd->e.guid, &wr->e.guid);
|
||||
if (match->matched)
|
||||
*crypto_handle = match->crypto_handle;
|
||||
else
|
||||
else if (match->crypto_handle == 0)
|
||||
{
|
||||
/* Generate writer crypto info. */
|
||||
match->crypto_handle = sc->crypto_context->crypto_key_factory->register_matched_remote_datareader(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue