aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/tvmauth/deprecated/service_context.h
blob: 5dc836261ba657b5c3cddabe60e429c0d7953cfc (plain) (blame)
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
#pragma once 
 
#include <library/cpp/tvmauth/checked_service_ticket.h> 
 
#include <util/generic/ptr.h> 
 
namespace NTvmAuth { 
    class TServiceContext: public TAtomicRefCount<TServiceContext> { 
    public: 
        /*! 
         * Create service context. Serivce contexts are used to store TVM keys and parse service tickets. 
         * @param selfTvmId 
         * @param secretBase64 
         * @param tvmKeysResponse 
         */ 
        TServiceContext(TStringBuf secretBase64, TTvmId selfTvmId, TStringBuf tvmKeysResponse); 
        TServiceContext(TServiceContext&&); 
        ~TServiceContext(); 
 
        /*! 
         * Create service context only for checking service tickets 
         * \param[in] selfTvmId 
         * \param[in] tvmKeysResponse 
         * \return 
         */ 
        static TServiceContext CheckingFactory(TTvmId selfTvmId, TStringBuf tvmKeysResponse); 
 
        /*! 
         * Create service context only for signing HTTP request to TVM-API 
         * \param[in] secretBase64 
         * \return 
         */ 
        static TServiceContext SigningFactory(TStringBuf secretBase64); 
 
        TServiceContext& operator=(TServiceContext&&); 
 
        /*! 
         * Parse and validate service ticket body then create TCheckedServiceTicket object. 
         * @param ticketBody 
         * @return TCheckedServiceTicket object 
         */ 
        TCheckedServiceTicket Check(TStringBuf ticketBody) const; 
 
        /*! 
         * Sign params for TVM API 
         * @param ts Param 'ts' of request to TVM 
         * @param dst Param 'dst' of request to TVM 
         * @param scopes Param 'scopes' of request to TVM 
         * @return Signed string 
         */ 
        TString SignCgiParamsForTvm(TStringBuf ts, TStringBuf dst, TStringBuf scopes = TStringBuf()) const; 
 
        class TImpl; 
 
    private: 
        TServiceContext() = default; 
 
    private: 
        THolder<TImpl> Impl_; 
    }; 
 
    using TServiceContextPtr = TIntrusiveConstPtr<TServiceContext>; 
}