/
proto_vnvn_marker_auth.go
67 lines (53 loc) · 1.9 KB
/
proto_vnvn_marker_auth.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package rms
type AuthSubjectMode uint8
const (
_ AuthSubjectMode = iota
UseCurrentPulse
UsePrevPulse
UseAnyPulse
)
func GetSenderAuthenticationSubjectAndPulse(msg interface{}) (ref Reference, mode AuthSubjectMode, ok bool) {
type customAuthSubject interface {
customSubject() (Reference, AuthSubjectMode)
}
switch m := msg.(type) {
case customAuthSubject:
ref, mode := m.customSubject()
return ref, mode, true
case interface{ GetCaller() Reference }:
return m.GetCaller(), UseCurrentPulse, true
}
return Reference{}, UseCurrentPulse, false
}
func (m *VStateRequest) customSubject() (Reference, AuthSubjectMode) {
return m.GetObject(), UseCurrentPulse
}
func (m *VCallResult) customSubject() (Reference, AuthSubjectMode) {
return m.GetCallee(), UseCurrentPulse
}
func (m *VStateReport) customSubject() (Reference, AuthSubjectMode) {
return m.GetObject(), UsePrevPulse
}
func (m *VDelegatedCallRequest) customSubject() (Reference, AuthSubjectMode) {
return m.GetCallee(), UsePrevPulse
}
func (m *VDelegatedCallResponse) customSubject() (Reference, AuthSubjectMode) {
return m.GetCallee(), UseCurrentPulse
}
// customSubject returns hasAuthSubject ( i.e. for current pulse ) since VDelegatedRequestFinished can come only with
// delegation token and subject is going to be considered as Approver of this delegation token
func (m *VDelegatedRequestFinished) customSubject() (Reference, AuthSubjectMode) {
return m.GetCallee(), UseCurrentPulse
}
func (m *VFindCallRequest) customSubject() (Reference, AuthSubjectMode) {
return m.GetCallee(), UseCurrentPulse
}
func (m *VFindCallResponse) customSubject() (Reference, AuthSubjectMode) {
return m.GetCallee(), UseAnyPulse
}
func (m *VCachedMemoryRequest) customSubject() (Reference, AuthSubjectMode) {
return m.GetObject(), UseCurrentPulse
}
func (m *VObjectValidationReport) customSubject() (Reference, AuthSubjectMode) {
return m.GetObject(), UsePrevPulse
}