AWS SDK for C++

AWS SDK for C++ Version 1.11.808

Loading...
Searching...
No Matches
AWSCredentials.h
1
6 #pragma once
7
8#include <aws/core/Core_EXPORTS.h>
9#include <aws/core/client/UserAgent.h>
10#include <aws/core/utils/memory/stl/AWSString.h>
11#include <aws/core/utils/DateTime.h>
12#include <aws/core/platform/Security.h>
13namespace Aws
14{
15 namespace Auth
16 {
21 {
22 public:
23 // Default constructor - no features tracked
25
30 {
31 m_features.insert(feature);
32 }
33
38 {
39 return m_features;
40 }
41
42 private:
44 };
45
49 class AWS_CORE_API AWSCredentials
50 {
51 public:
57 AWSCredentials() : m_expiration((std::chrono::time_point<std::chrono::system_clock>::max)())
58 {
59 }
60
66 AWSCredentials(const Aws::String& accessKeyId, const Aws::String& secretKey) :
67 m_accessKeyId(accessKeyId), m_secretKey(secretKey), m_expiration((std::chrono::time_point<std::chrono::system_clock>::max)())
68 {
69 }
70
75 AWSCredentials(const Aws::String& accessKeyId, const Aws::String& secretKey, const Aws::String& sessionToken) :
76 m_accessKeyId(accessKeyId), m_secretKey(secretKey), m_sessionToken(sessionToken), m_expiration((std::chrono::time_point<std::chrono::system_clock>::max)())
77 {
78 }
79
83 AWSCredentials(const Aws::String& accessKeyId, const Aws::String& secretKey, const Aws::String& sessionToken, Aws::Utils::DateTime expiration) :
84 m_accessKeyId(accessKeyId), m_secretKey(secretKey), m_sessionToken(sessionToken), m_expiration(expiration)
85 {
86 }
87
91 AWSCredentials(const Aws::String& accessKeyId,
92 const Aws::String& secretKey,
93 const Aws::String& sessionToken,
94 Aws::Utils::DateTime expiration,
95 const Aws::String& accountId)
96 : m_accessKeyId(accessKeyId),
97 m_secretKey(secretKey),
98 m_sessionToken(sessionToken),
99 m_expiration(expiration),
100 m_accountId(accountId) {}
101
105 AWSCredentials(const AWSCredentials& other) = default;
106
110 AWSCredentials(AWSCredentials&& other) noexcept = default;
111
116 {
117 // Securely clear sensitive credential data
118 if (!m_secretKey.empty())
119 {
120 Aws::Security::SecureMemClear(reinterpret_cast<unsigned char*>(&m_secretKey[0]), m_secretKey.size());
121 }
122 if (!m_sessionToken.empty())
123 {
124 Aws::Security::SecureMemClear(reinterpret_cast<unsigned char*>(&m_sessionToken[0]), m_sessionToken.size());
125 }
126 }
127
131 AWSCredentials& operator=(const AWSCredentials& other) = default;
132
136 AWSCredentials& operator=(AWSCredentials&& other) noexcept = default;
137
138 bool operator == (const AWSCredentials& other) const
139 {
140 return m_accessKeyId == other.m_accessKeyId
141 && m_secretKey == other.m_secretKey
142 && m_sessionToken == other.m_sessionToken
143 && m_expiration == other.m_expiration
144 && m_accountId == other.m_accountId;
145
146 }
147
148 bool operator != (const AWSCredentials& other) const
149 {
150 return !(other == *this);
151 }
152
157 inline bool IsEmpty() const { return m_accessKeyId.empty() && m_secretKey.empty(); }
158
159 inline bool IsExpired() const { return m_expiration <= Aws::Utils::DateTime::Now(); }
160
167 inline bool ExpiresSoon(int64_t millisecondThreshold = 5000) const { return (m_expiration - Aws::Utils::DateTime::Now()).count() < millisecondThreshold; }
168
169 inline bool IsExpiredOrEmpty() const { return IsEmpty() || IsExpired(); }
170
174 inline const Aws::String& GetAWSAccessKeyId() const
175 {
176 return m_accessKeyId;
177 }
178
182 inline const Aws::String& GetAWSSecretKey() const
183 {
184 return m_secretKey;
185 }
186
190 inline const Aws::String& GetSessionToken() const
191 {
192 return m_sessionToken;
193 }
194
199 {
200 return m_expiration;
201 }
202
206 inline const Aws::String& GetAccountId() const
207 {
208 return m_accountId;
209 }
210
214 inline void SetAWSAccessKeyId(const Aws::String& accessKeyId)
215 {
216 m_accessKeyId = accessKeyId;
217 }
218
222 inline void SetAWSSecretKey(const Aws::String& secretKey)
223 {
224 m_secretKey = secretKey;
225 }
226
230 inline void SetSessionToken(const Aws::String& sessionToken)
231 {
232 m_sessionToken = sessionToken;
233 }
234
238 inline void SetAccountId(const Aws::String& accountId)
239 {
240 m_accountId = accountId;
241 }
242
243
247 inline void SetAWSAccessKeyId(const char* accessKeyId)
248 {
249 m_accessKeyId = accessKeyId;
250 }
251
255 inline void SetAWSSecretKey(const char* secretKey)
256 {
257 m_secretKey = secretKey;
258 }
259
263 inline void SetSessionToken(const char* sessionToken)
264 {
265 m_sessionToken = sessionToken;
266 }
267
271 inline void SetAccountId(const char* accountId)
272 {
273 m_accountId = accountId;
274 }
275
279 inline void SetExpiration(Aws::Utils::DateTime expiration)
280 {
281 m_expiration = expiration;
282 }
283
288 inline CredentialsResolutionContext GetContext() { return m_context; }
289
294 inline void AddUserAgentFeature(Aws::Client::UserAgentFeature feature) { m_context.AddUserAgentFeature(feature); }
295 private:
296 Aws::String m_accessKeyId;
297 Aws::String m_secretKey;
298 Aws::String m_sessionToken;
299 Aws::Utils::DateTime m_expiration;
300 Aws::String m_accountId;
302 };
303 }
304}
const Aws::String & GetSessionToken() const
CredentialsResolutionContext GetContext()
void AddUserAgentFeature(Aws::Client::UserAgentFeature feature)
AWSCredentials(const Aws::String &accessKeyId, const Aws::String &secretKey)
AWSCredentials(const Aws::String &accessKeyId, const Aws::String &secretKey, const Aws::String &sessionToken, Aws::Utils::DateTime expiration, const Aws::String &accountId)
void SetSessionToken(const Aws::String &sessionToken)
const Aws::String & GetAccountId() const
const Aws::String & GetAWSAccessKeyId() const
Aws::Utils::DateTime GetExpiration() const
bool ExpiresSoon(int64_t millisecondThreshold=5000) const
void SetAWSSecretKey(const char *secretKey)
void SetAccountId(const char *accountId)
void SetAWSAccessKeyId(const Aws::String &accessKeyId)
AWSCredentials(const Aws::String &accessKeyId, const Aws::String &secretKey, const Aws::String &sessionToken)
void SetSessionToken(const char *sessionToken)
AWSCredentials(const AWSCredentials &other)=default
AWSCredentials & operator=(const AWSCredentials &other)=default
AWSCredentials(const Aws::String &accessKeyId, const Aws::String &secretKey, const Aws::String &sessionToken, Aws::Utils::DateTime expiration)
void SetAccountId(const Aws::String &accountId)
AWSCredentials & operator=(AWSCredentials &&other) noexcept=default
void SetAWSSecretKey(const Aws::String &secretKey)
void SetAWSAccessKeyId(const char *accessKeyId)
AWSCredentials(AWSCredentials &&other) noexcept=default
void SetExpiration(Aws::Utils::DateTime expiration)
const Aws::String & GetAWSSecretKey() const
const Aws::Set< Aws::Client::UserAgentFeature > GetUserAgentFeatures() const
void AddUserAgentFeature(Aws::Client::UserAgentFeature feature)
static DateTime Now()
AWS_CORE_API void SecureMemClear(unsigned char *data, size_t length)
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
Definition AWSString.h:97
std::set< T, std::less< T >, Aws::Allocator< T > > Set
Definition AWSSet.h:18