针对AES的authPriv使用net-snmp v3问题

问题描述 投票:0回答:1

我正在使用我构建的net-snmp库创建一个c ++项目,我能够通过SNMP v2c和SNMP v3(authNoPriv)与我的硬件连接。但是,当我尝试使用authPriv时,这是不成功的,对此有什么建议吗?

我怀疑net-snmp不支持AES。

当我试图直接运行net-snmp时,我看到隐私协议只有DES的选项。所以我想确认net-snmp是否支持AES128和DES隐私协议?

snmp net-snmp
1个回答
0
投票
  1. 对于authNoPriv,当我使用SHA-1身份验证协议时,我返回了身份验证失败
  2. 对于authPriv,我无法与SNMP硬件建立任何连接。

我怀疑我的代码有问题,因为authNoPriv与MD5身份验证协议没有问题,但是当我配置到相应的安全协议时会出现上述错误。

// Definitions
const char * user = "snmpuser";
const char * our_v3_passphrase = "passphrase";
const char * our_v3_privphrase = "privphrase";
struct snmp_session session;

SOCK_STARTUP;

// Initialize the SNMP library
snmp_sess_init(&session);
session.peername = _strdup(argv[1])

// set the SNMP version number
session.version = SNMP_VERSION_3;

session.securityNameLen = strlen(session.securityName);

// set the security level
session.securityLevel = SNMP_SEC_LEVEL_AUTHPRIV; // SNMP_SEC_LEVEL_AUTHNOPRIV (for authNoPriv)

// set the authentication protocol
session.securityAuthProto = usmHMACMD5AuthProtocol; // usmHMACSHA1AuthProtocol
session.securityAuthProtoLen = USM_AUTH_PROTO_MD5_LEN; // USM_AUTH_PROTO_SHA_LEN
session.securityAuthKeyLen = USM_AUTH_KU_LEN;

// set authentication key to a hashed version of passphrase
if (generate_Ku(session.securityAuthProto, session.securityAuthProtoLen, (u_char *)our_v3_passphrase, strlen(our_v3_passphrase), session.securityAuthKey, &session.securityAuthKeyLen) != SNMPERR_SUCCESS) {
    snmp_perror(argv[0]);
    snmp_log(LOG_ERR, "Error generating Ku from authentication passphrase. \n");
    SOCK_CLEANUP;
    exit(1);
}

// set the privacy protocol
session.securityPrivProto = usmAES128PrivProtocol; // usmDESPrivProtocol
session.securityAuthProtoLen = USM_PRIV_PROTO_AES128_LEN; // USM_PRIV_PROTO_DES_LEN
session.securityAuthKeyLen = USM_PRIV_KU_LEN;

// set privacy key to a hashed version of privphrase
if (generate_Ku(session.securityAuthProto, session.securityAuthProtoLen, (u_char *)our_v3_privphrase, strlen(our_v3_privphrase), session.securityPrivKey, &session.securityPrivKeyLen) != SNMPERR_SUCCESS) {
    snmp_perror(argv[0]);
    snmp_log(LOG_ERR, "Error generating Ku from authentication passphrase. \n");
    SOCK_CLEANUP;
    exit(1);
}
© www.soinside.com 2019 - 2024. All rights reserved.