gosnmp

Форк
0
/
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

5
package gosnmp
6

7
import "testing"
8

9
// GO SNMP credentials table
10
//
11
//nolint:gochecknoglobals,unused
12
var authenticationCredentials = map[string][]string{
13
	NoAuth.String() + NoPriv.String(): {"noAuthNoPrivUser", "", ""},
14

15
	MD5.String() + NoPriv.String(): {"authMD5OnlyUser", "testingpass0123456789", ""},
16
	MD5.String() + DES.String():    {"authMD5PrivDESUser", "testingpass9876543210", "testingpass9876543210"},
17
	MD5.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

23
	SHA.String() + NoPriv.String(): {"authSHAOnlyUser", "testingpass9876543210", ""},
24
	SHA.String() + DES.String():    {"authSHAPrivDESUser", "testingpassabc6543210", "testingpassabc6543210"},
25
	SHA.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

31
	SHA224.String() + NoPriv.String(): {"authSHA224OnlyUser", "testingpass5123456", ""},
32
	SHA224.String() + DES.String():    {"authSHA224PrivDESUser", "testingpass6123456", "testingpass6123456"},
33
	SHA224.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

39
	SHA256.String() + NoPriv.String(): {"authSHA256OnlyUser", "testingpass5223456", ""},
40
	SHA256.String() + DES.String():    {"authSHA256PrivDESUser", "testingpass6223456", "testingpass6223456"},
41
	SHA256.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

47
	SHA384.String() + NoPriv.String(): {"authSHA384OnlyUser", "testingpass5323456", ""},
48
	SHA384.String() + DES.String():    {"authSHA384PrivDESUser", "testingpass6323456", "testingpass6323456"},
49
	SHA384.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

55
	SHA512.String() + NoPriv.String(): {"authSHA512OnlyUser", "testingpass5423456", ""},
56
	SHA512.String() + DES.String():    {"authSHA512PrivDESUser", "testingpass6423456", "testingpass6423456"},
57
	SHA512.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
67
var authenticationCredentialsSnmpLabs = map[string][]string{
68
	NoAuth.String() + NoPriv.String(): {"usr-none-none", "", ""},
69

70
	MD5.String() + NoPriv.String():  {"usr-md5-none", "authkey1", ""},
71
	MD5.String() + DES.String():     {"usr-md5-des", "authkey1", "privkey1"},
72
	MD5.String() + AES.String():     {"usr-md5-aes", "authkey1", "privkey1"},
73
	MD5.String() + AES192.String():  {"usr-md5-aes192-blmt", "authkey1", "privkey1"},
74
	MD5.String() + AES192C.String(): {"usr-md5-aes192", "authkey1", "privkey1"},
75
	MD5.String() + AES256.String():  {"usr-md5-aes256-blmt", "authkey1", "privkey1"},
76
	MD5.String() + AES256C.String(): {"usr-md5-aes256", "authkey1", "privkey1"},
77

78
	SHA.String() + NoPriv.String():  {"usr-sha-none", "authkey1", ""},
79
	SHA.String() + DES.String():     {"usr-sha-des", "authkey1", "privkey1"},
80
	SHA.String() + AES.String():     {"usr-sha-aes", "authkey1", "privkey1"},
81
	SHA.String() + AES192.String():  {"usr-sha-aes192-blmt", "authkey1", "privkey1"},
82
	SHA.String() + AES192C.String(): {"usr-sha-aes192", "authkey1", "privkey1"},
83
	SHA.String() + AES256.String():  {"usr-sha-aes256-blmt", "authkey1", "privkey1"},
84
	SHA.String() + AES256C.String(): {"usr-sha-aes256", "authkey1", "privkey1"},
85

86
	SHA224.String() + NoPriv.String():  {"usr-sha224-none", "authkey1", ""},
87
	SHA224.String() + DES.String():     {"usr-sha224-des", "authkey1", "privkey1"},
88
	SHA224.String() + AES.String():     {"usr-sha224-aes", "authkey1", "privkey1"},
89
	SHA224.String() + AES192.String():  {"usr-sha224-aes192-blmt", "authkey1", "privkey1"},
90
	SHA224.String() + AES192C.String(): {"usr-sha224-aes192", "authkey1", "privkey1"},
91
	SHA224.String() + AES256.String():  {"usr-sha224-aes256-blmt", "authkey1", "privkey1"},
92
	SHA224.String() + AES256C.String(): {"usr-sha224-aes256", "authkey1", "privkey1"},
93

94
	SHA256.String() + NoPriv.String():  {"usr-sha256-none", "authkey1", ""},
95
	SHA256.String() + DES.String():     {"usr-sha256-des", "authkey1", "privkey1"},
96
	SHA256.String() + AES.String():     {"usr-sha256-aes", "authkey1", "privkey1"},
97
	SHA256.String() + AES192.String():  {"usr-sha256-aes192-blmt", "authkey1", "privkey1"},
98
	SHA256.String() + AES192C.String(): {"usr-sha256-aes192", "authkey1", "privkey1"},
99
	SHA256.String() + AES256.String():  {"usr-sha256-aes256-blmt", "authkey1", "privkey1"},
100
	SHA256.String() + AES256C.String(): {"usr-sha256-aes256", "authkey1", "privkey1"},
101

102
	SHA384.String() + NoPriv.String():  {"usr-sha384-none", "authkey1", ""},
103
	SHA384.String() + DES.String():     {"usr-sha384-des", "authkey1", "privkey1"},
104
	SHA384.String() + AES.String():     {"usr-sha384-aes", "authkey1", "privkey1"},
105
	SHA384.String() + AES192.String():  {"usr-sha384-aes192-blmt", "authkey1", "privkey1"},
106
	SHA384.String() + AES192C.String(): {"usr-sha384-aes192", "authkey1", "privkey1"},
107
	SHA384.String() + AES256.String():  {"usr-sha384-aes256-blmt", "authkey1", "privkey1"},
108
	SHA384.String() + AES256C.String(): {"usr-sha384-aes256", "authkey1", "privkey1"},
109

110
	SHA512.String() + NoPriv.String():  {"usr-sha512-none", "authkey1", ""},
111
	SHA512.String() + DES.String():     {"usr-sha512-des", "authkey1", "privkey1"},
112
	SHA512.String() + AES.String():     {"usr-sha512-aes", "authkey1", "privkey1"},
113
	SHA512.String() + AES192.String():  {"usr-sha512-aes192-blmt", "authkey1", "privkey1"},
114
	SHA512.String() + AES192C.String(): {"usr-sha512-aes192", "authkey1", "privkey1"},
115
	SHA512.String() + AES256.String():  {"usr-sha512-aes256-blmt", "authkey1", "privkey1"},
116
	SHA512.String() + AES256C.String(): {"usr-sha512-aes256", "authkey1", "privkey1"},
117
}
118

119
//nolint:unused,gochecknoglobals
120
var useSnmpLabsCredentials = false
121

122
// TODO get above credentials into snmpsimd, so *all* tests can be run. Combine with settings in `snmp_users.sh`
123

124
const cIdxUserName = 0
125
const cIdxAuthKey = 1
126
const cIdxPrivKey = 2
127

128
func isUsingSnmpLabs() bool {
129
	return useSnmpLabsCredentials
130
}
131

132
// conveniently enable demo.snmplabs.com for a one test
133
func useSnmpLabs(use bool) {
134
	useSnmpLabsCredentials = use
135
}
136

137
//nolint:misspell
138
func getCredentials(t *testing.T, authProtocol SnmpV3AuthProtocol, privProtocol SnmpV3PrivProtocol) []string {
139
	var credentials []string
140
	if useSnmpLabsCredentials {
141
		credentials = authenticationCredentialsSnmpLabs[authProtocol.String()+privProtocol.String()]
142
	} else {
143
		credentials = authenticationCredentials[authProtocol.String()+privProtocol.String()]
144
	}
145

146
	if credentials == nil {
147
		t.Skipf("No user credentials found for %s/%s", authProtocol.String(), privProtocol.String())
148
		return []string{"unknown", "unknown", "unkown"}
149
	}
150
	return credentials
151
}
152

153
func getUserName(t *testing.T, authProtocol SnmpV3AuthProtocol, privProtocol SnmpV3PrivProtocol) string {
154
	return getCredentials(t, authProtocol, privProtocol)[cIdxUserName]
155
}
156

157
//nolint:unused,deadcode
158
func getAuthKey(t *testing.T, authProtocol SnmpV3AuthProtocol, privProtocol SnmpV3PrivProtocol) string {
159
	return getCredentials(t, authProtocol, privProtocol)[cIdxAuthKey]
160
}
161

162
//nolint:unused,deadcode
163
func getPrivKey(t *testing.T, authProtocol SnmpV3AuthProtocol, privProtocol SnmpV3PrivProtocol) string {
164
	return getCredentials(t, authProtocol, privProtocol)[cIdxPrivKey]
165
}
166

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.