Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
OctetString sharedUserName = new OctetString("sharedUser");
Target[] targets = <some SNMPv3 SecureTarget instances>
DefaultUdpTransportMapping transport = new DefaultUdpTransportMapping();
Snmp snmp = new Snmp(transport);
snmp.listen();

// discover engine IDs and add localized users
SecurityProtocols secProtocols = SecurityProtocols.getInstance();
for (int i=0; i<targets.length; i++) {
  Target t = targets[i];
  byte[] engineID = snmp.discoverAuthoritativeEngineID(t.getAddress(), t.getTimeout());
  OctetString authKey = new OctetString("md5Passphrase");
  authKey = securityProtocols.passwordToKey(AuthMD5.getID(), authKey, engineID.getValue());
  OctetString privKey = new OctetString("desPassphrase");
  privKey = securityProtocols.passwordToKey(PrivDES.getID(), AuthMD5.getID(), privKey, egineID.getValue());
  snmp.getUSM().addLocalizedUser(engineID, sharedUserName,
    AuthMD5.getID(), new OctetString("md5Passphrase")authKey,
    PrivDES.getID(), new OctetString("desPassphrase")privKey);
}

USM Separation

Code Block

SecurityProtocols.getInstance().addDefaultProtocols();

DefaultUdpTransportMapping transportCluster1 = 
  new DefaultUdpTransportMapping(new UdpAddress("0.0.0.0/0"));
DefaultUdpTransportMapping transportCluster2 = 
  new DefaultUdpTransportMapping(new UdpAddress("0.0.0.0/0"));

MessageDispatcher dispCluster1 = new MessageDispatcherImpl();
MessageDispatcher dispCluster2 = new MessageDispatcherImpl();

Snmp snmpCluster1 = new Snmp(dispCluster1, transportCluster1);
Snmp snmpCluster2 = new Snmp(dispCluster2, transportCluster1);

dispCluster1.addMessageProcessingModel(new MPv1());
dispCluster2.addMessageProcessingModel(new MPv2c());
localEngineID1 = new OctetString(
        MPv3.createLocalEngineID(new OctetString("Cluster1"+
                                                 System.currentTimeMillis())));
localEngineID2 = new OctetString(
        MPv3.createLocalEngineID(new OctetString("Cluster2"+
                                                 System.currentTimeMillis())));

USM usmCluster1 = new USM(SecurityProtocols.getInstance(), localEngineID1, 0);
USM usmCluster2 = new USM(SecurityProtocols.getInstance(), localEngineID2, 0);

dispCluster1.addMessageProcessingModel(new MPv3(usmCluster1));
dispCluster2.addMessageProcessingModel(new MPv3(usmCluster2));

snmpCluster1.getUSM().addUser(sharedUserName,
    AuthMD5.getID(), new OctetString("md5Passphrase"),
    PrivDES.getID(), new OctetString("desPassphrase"));
snmpCluster2.getUSM().addUser(sharedUserName,
    AuthMD5.getID(), new OctetString("md5Passphrase"),
    PrivDES.getID(), new OctetString("desPassphrase"));

transportCluster1.listen();
transportCluster2.listen();