gosnmp
/
v3_credentials_test.go
165 строк · 9.5 Кб
1// Copyright 2021 The GoSNMP Authors. All rights reserved. Use of this
2// source code is governed by a BSD-style license that can be found in the
3// LICENSE file.
4
5package gosnmp
6
7import "testing"
8
9// GO SNMP credentials table
10//
11//nolint:gochecknoglobals,unused
12var authenticationCredentials = map[string][]string{
13NoAuth.String() + NoPriv.String(): {"noAuthNoPrivUser", "", ""},
14
15MD5.String() + NoPriv.String(): {"authMD5OnlyUser", "testingpass0123456789", ""},
16MD5.String() + DES.String(): {"authMD5PrivDESUser", "testingpass9876543210", "testingpass9876543210"},
17MD5.String() + AES.String(): {"authMD5PrivAESUser", "AEStestingpass9876543210", "AEStestingpass9876543210"},
18// MD5.String() + AES192.String(): { "authMD5PrivAES192BlmtUser", "authkey1", "privkey1" },
19// MD5.String() + AES192C.String(): { "authMD5PrivAES192User", "authkey1", "privkey1" },
20// MD5.String() + AES256.String(): { "authMD5PrivAES256BlmtUser", "authkey1", "privkey1" },
21// MD5.String() + AES256C.String(): { "authMD5PrivAES256User", "authkey1", "privkey1" },
22
23SHA.String() + NoPriv.String(): {"authSHAOnlyUser", "testingpass9876543210", ""},
24SHA.String() + DES.String(): {"authSHAPrivDESUser", "testingpassabc6543210", "testingpassabc6543210"},
25SHA.String() + AES.String(): {"authSHAPrivAESUser", "AEStestingpassabc6543210", "AEStestingpassabc6543210"},
26// SHA.String() + AES192.String(): { "authSHAPrivAES192BlmtUser", "authkey1", "privkey1" },
27// SHA.String() + AES192C.String(): { "authSHAPrivAES192User", "authkey1", "privkey1" },
28// SHA.String() + AES256.String(): { "authSHAPrivAES256BlmtUser", "authkey1", "privkey1" },
29// SHA.String() + AES256C.String(): { "authSHAPrivAES256User", "authkey1", "privkey1" },
30
31SHA224.String() + NoPriv.String(): {"authSHA224OnlyUser", "testingpass5123456", ""},
32SHA224.String() + DES.String(): {"authSHA224PrivDESUser", "testingpass6123456", "testingpass6123456"},
33SHA224.String() + AES.String(): {"authSHA224PrivAESUser", "testingpass7123456", "testingpass7123456"},
34// SHA224.String() + AES192.String(): { "authSHA224PrivAES192BlmtUser", "authkey1", "privkey1" },
35// SHA224.String() + AES192C.String(): { "authSHA224PrivAES192User", "authkey1", "privkey1" },
36// SHA224.String() + AES256.String(): { "authSHA224PrivAES256BlmtUser", "authkey1", "privkey1" },
37// SHA224.String() + AES256C.String(): { "authSHA224PrivAES256User", "authkey1", "privkey1" },
38
39SHA256.String() + NoPriv.String(): {"authSHA256OnlyUser", "testingpass5223456", ""},
40SHA256.String() + DES.String(): {"authSHA256PrivDESUser", "testingpass6223456", "testingpass6223456"},
41SHA256.String() + AES.String(): {"authSHA256PrivAESUser", "testingpass7223456", "testingpass7223456"},
42// SHA256.String() + AES192.String(): { "authSHA256PrivAES192BlmtUser", "authkey1", "privkey1" },
43// SHA256.String() + AES192C.String(): { "authSHA256PrivAES192User", "authkey1", "privkey1" },
44// SHA256.String() + AES256.String(): { "authSHA256PrivAES256BlmtUser", "authkey1", "privkey1" },
45// SHA256.String() + AES256C.String(): { "authSHA256PrivAES256User", "authkey1", "privkey1" },
46
47SHA384.String() + NoPriv.String(): {"authSHA384OnlyUser", "testingpass5323456", ""},
48SHA384.String() + DES.String(): {"authSHA384PrivDESUser", "testingpass6323456", "testingpass6323456"},
49SHA384.String() + AES.String(): {"authSHA384PrivAESUser", "testingpass7323456", "testingpass7323456"},
50// SHA384.String() + AES192.String(): { "authSHA384PrivAES192BlmtUser", "authkey1", "privkey1" },
51// SHA384.String() + AES192C.String(): { "authSHA384PrivAES192User", "authkey1", "privkey1" },
52// SHA384.String() + AES256.String(): { "authSHA384PrivAES256BlmtUser", "authkey1", "privkey1" },
53// SHA384.String() + AES256C.String(): { "authSHA384PrivAES256User", "authkey1", "privkey1" },
54
55SHA512.String() + NoPriv.String(): {"authSHA512OnlyUser", "testingpass5423456", ""},
56SHA512.String() + DES.String(): {"authSHA512PrivDESUser", "testingpass6423456", "testingpass6423456"},
57SHA512.String() + AES.String(): {"authSHA512PrivAESUser", "testingpass7423456", "testingpass7423456"},
58// SHA512.String() + AES192.String(): { "authSHA512PrivAES192BlmtUser", "authkey1", "privkey1" },
59// SHA512.String() + AES192C.String(): { "authSHA512PrivAES192User", "authkey1", "privkey1" },
60// SHA512.String() + AES256.String(): { "authSHA512PrivAES256BlmtUser", "authkey1", "privkey1" },
61// SHA512.String() + AES256C.String(): { "authSHA512PrivAES256User", "authkey1", "privkey1" },
62}
63
64// Credentials table for public demo.snmplabs.org
65//
66//nolint:unused,gochecknoglobals
67var authenticationCredentialsSnmpLabs = map[string][]string{
68NoAuth.String() + NoPriv.String(): {"usr-none-none", "", ""},
69
70MD5.String() + NoPriv.String(): {"usr-md5-none", "authkey1", ""},
71MD5.String() + DES.String(): {"usr-md5-des", "authkey1", "privkey1"},
72MD5.String() + AES.String(): {"usr-md5-aes", "authkey1", "privkey1"},
73MD5.String() + AES192.String(): {"usr-md5-aes192-blmt", "authkey1", "privkey1"},
74MD5.String() + AES192C.String(): {"usr-md5-aes192", "authkey1", "privkey1"},
75MD5.String() + AES256.String(): {"usr-md5-aes256-blmt", "authkey1", "privkey1"},
76MD5.String() + AES256C.String(): {"usr-md5-aes256", "authkey1", "privkey1"},
77
78SHA.String() + NoPriv.String(): {"usr-sha-none", "authkey1", ""},
79SHA.String() + DES.String(): {"usr-sha-des", "authkey1", "privkey1"},
80SHA.String() + AES.String(): {"usr-sha-aes", "authkey1", "privkey1"},
81SHA.String() + AES192.String(): {"usr-sha-aes192-blmt", "authkey1", "privkey1"},
82SHA.String() + AES192C.String(): {"usr-sha-aes192", "authkey1", "privkey1"},
83SHA.String() + AES256.String(): {"usr-sha-aes256-blmt", "authkey1", "privkey1"},
84SHA.String() + AES256C.String(): {"usr-sha-aes256", "authkey1", "privkey1"},
85
86SHA224.String() + NoPriv.String(): {"usr-sha224-none", "authkey1", ""},
87SHA224.String() + DES.String(): {"usr-sha224-des", "authkey1", "privkey1"},
88SHA224.String() + AES.String(): {"usr-sha224-aes", "authkey1", "privkey1"},
89SHA224.String() + AES192.String(): {"usr-sha224-aes192-blmt", "authkey1", "privkey1"},
90SHA224.String() + AES192C.String(): {"usr-sha224-aes192", "authkey1", "privkey1"},
91SHA224.String() + AES256.String(): {"usr-sha224-aes256-blmt", "authkey1", "privkey1"},
92SHA224.String() + AES256C.String(): {"usr-sha224-aes256", "authkey1", "privkey1"},
93
94SHA256.String() + NoPriv.String(): {"usr-sha256-none", "authkey1", ""},
95SHA256.String() + DES.String(): {"usr-sha256-des", "authkey1", "privkey1"},
96SHA256.String() + AES.String(): {"usr-sha256-aes", "authkey1", "privkey1"},
97SHA256.String() + AES192.String(): {"usr-sha256-aes192-blmt", "authkey1", "privkey1"},
98SHA256.String() + AES192C.String(): {"usr-sha256-aes192", "authkey1", "privkey1"},
99SHA256.String() + AES256.String(): {"usr-sha256-aes256-blmt", "authkey1", "privkey1"},
100SHA256.String() + AES256C.String(): {"usr-sha256-aes256", "authkey1", "privkey1"},
101
102SHA384.String() + NoPriv.String(): {"usr-sha384-none", "authkey1", ""},
103SHA384.String() + DES.String(): {"usr-sha384-des", "authkey1", "privkey1"},
104SHA384.String() + AES.String(): {"usr-sha384-aes", "authkey1", "privkey1"},
105SHA384.String() + AES192.String(): {"usr-sha384-aes192-blmt", "authkey1", "privkey1"},
106SHA384.String() + AES192C.String(): {"usr-sha384-aes192", "authkey1", "privkey1"},
107SHA384.String() + AES256.String(): {"usr-sha384-aes256-blmt", "authkey1", "privkey1"},
108SHA384.String() + AES256C.String(): {"usr-sha384-aes256", "authkey1", "privkey1"},
109
110SHA512.String() + NoPriv.String(): {"usr-sha512-none", "authkey1", ""},
111SHA512.String() + DES.String(): {"usr-sha512-des", "authkey1", "privkey1"},
112SHA512.String() + AES.String(): {"usr-sha512-aes", "authkey1", "privkey1"},
113SHA512.String() + AES192.String(): {"usr-sha512-aes192-blmt", "authkey1", "privkey1"},
114SHA512.String() + AES192C.String(): {"usr-sha512-aes192", "authkey1", "privkey1"},
115SHA512.String() + AES256.String(): {"usr-sha512-aes256-blmt", "authkey1", "privkey1"},
116SHA512.String() + AES256C.String(): {"usr-sha512-aes256", "authkey1", "privkey1"},
117}
118
119//nolint:unused,gochecknoglobals
120var useSnmpLabsCredentials = false
121
122// TODO get above credentials into snmpsimd, so *all* tests can be run. Combine with settings in `snmp_users.sh`
123
124const cIdxUserName = 0
125const cIdxAuthKey = 1
126const cIdxPrivKey = 2
127
128func isUsingSnmpLabs() bool {
129return useSnmpLabsCredentials
130}
131
132// conveniently enable demo.snmplabs.com for a one test
133func useSnmpLabs(use bool) {
134useSnmpLabsCredentials = use
135}
136
137//nolint:misspell
138func getCredentials(t *testing.T, authProtocol SnmpV3AuthProtocol, privProtocol SnmpV3PrivProtocol) []string {
139var credentials []string
140if useSnmpLabsCredentials {
141credentials = authenticationCredentialsSnmpLabs[authProtocol.String()+privProtocol.String()]
142} else {
143credentials = authenticationCredentials[authProtocol.String()+privProtocol.String()]
144}
145
146if credentials == nil {
147t.Skipf("No user credentials found for %s/%s", authProtocol.String(), privProtocol.String())
148return []string{"unknown", "unknown", "unkown"}
149}
150return credentials
151}
152
153func getUserName(t *testing.T, authProtocol SnmpV3AuthProtocol, privProtocol SnmpV3PrivProtocol) string {
154return getCredentials(t, authProtocol, privProtocol)[cIdxUserName]
155}
156
157//nolint:unused,deadcode
158func getAuthKey(t *testing.T, authProtocol SnmpV3AuthProtocol, privProtocol SnmpV3PrivProtocol) string {
159return getCredentials(t, authProtocol, privProtocol)[cIdxAuthKey]
160}
161
162//nolint:unused,deadcode
163func getPrivKey(t *testing.T, authProtocol SnmpV3AuthProtocol, privProtocol SnmpV3PrivProtocol) string {
164return getCredentials(t, authProtocol, privProtocol)[cIdxPrivKey]
165}
166