70 строки
2.1 KiB
C
70 строки
2.1 KiB
C
![]() |
/*
|
||
|
* Copyright (c) 2014-2015 Intel, Inc. All rights reserved.
|
||
|
* $COPYRIGHT$
|
||
|
*
|
||
|
* Additional copyrights may follow
|
||
|
*
|
||
|
* $HEADER$
|
||
|
*/
|
||
|
|
||
|
|
||
|
#include "opal_config.h"
|
||
|
#include "opal/constants.h"
|
||
|
|
||
|
#include "opal/mca/mca.h"
|
||
|
#include "opal/util/output.h"
|
||
|
#include "opal/mca/base/base.h"
|
||
|
#include "opal/dss/dss_types.h"
|
||
|
|
||
|
#include "opal/mca/sec/base/base.h"
|
||
|
|
||
|
int opal_sec_base_get_cred(char *method,
|
||
|
int dstorehandle,
|
||
|
opal_process_name_t *my_id,
|
||
|
opal_sec_cred_t **cred)
|
||
|
{
|
||
|
opal_sec_handle_t *hdl;
|
||
|
|
||
|
opal_output_verbose(5, opal_sec_base_framework.framework_output,
|
||
|
"Requesting credential from source %s",
|
||
|
(NULL == method) ? "ANY" : method);
|
||
|
|
||
|
OPAL_LIST_FOREACH(hdl, &opal_sec_base_actives, opal_sec_handle_t) {
|
||
|
if (NULL != method && 0 != strcmp(method, hdl->component->mca_component_name)) {
|
||
|
continue;
|
||
|
}
|
||
|
if (OPAL_SUCCESS == hdl->module->get_my_credential(dstorehandle, my_id, cred)) {
|
||
|
opal_output_verbose(5, opal_sec_base_framework.framework_output,
|
||
|
"Created credential from source %s", hdl->component->mca_component_name);
|
||
|
/* record the source */
|
||
|
(*cred)->method = strdup(hdl->component->mca_component_name);
|
||
|
return OPAL_SUCCESS;
|
||
|
}
|
||
|
}
|
||
|
return OPAL_ERROR;
|
||
|
}
|
||
|
|
||
|
|
||
|
int opal_sec_base_validate(opal_sec_cred_t *cred)
|
||
|
{
|
||
|
opal_sec_handle_t *hdl;
|
||
|
|
||
|
opal_output_verbose(5, opal_sec_base_framework.framework_output,
|
||
|
"Received credential %s from source %s",
|
||
|
(NULL == cred->credential) ? "NULL" : cred->credential,
|
||
|
(NULL == cred->method) ? "NULL" : cred->method);
|
||
|
|
||
|
OPAL_LIST_FOREACH(hdl, &opal_sec_base_actives, opal_sec_handle_t) {
|
||
|
if (NULL != cred->method &&
|
||
|
0 != strcmp(cred->method, hdl->component->mca_component_name)) {
|
||
|
continue;
|
||
|
}
|
||
|
if (OPAL_SUCCESS == hdl->module->authenticate(cred)) {
|
||
|
return OPAL_SUCCESS;
|
||
|
}
|
||
|
}
|
||
|
return OPAL_ERROR;
|
||
|
}
|
||
|
|
||
|
|