Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/KeyStoreUtils.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#include "KeyStoreUtils.h"

UKeyStoreUtils::UKeyStoreUtils() {
UWeb3StorageAdapter::StaticClass();
}

UKeyStoreUtils::~UKeyStoreUtils() {}

void UKeyStoreUtils::Assign(FString value) {
UWeb3StorageAdapter* saveGameInstance = Cast<UWeb3StorageAdapter>(UGameplayStatics::CreateSaveGameObject(UWeb3StorageAdapter::StaticClass()));

if (saveGameInstance)
{
saveGameInstance->sessionId = value;
UGameplayStatics::SaveGameToSlot(saveGameInstance, TEXT("Web3AuthDataSlot"), 0);
}
}

FString UKeyStoreUtils::Get() {
UWeb3StorageAdapter* saveGameInstance = Cast<UWeb3StorageAdapter>(UGameplayStatics::LoadGameFromSlot(TEXT("Web3AuthDataSlot"), 0));

if (saveGameInstance)
{
return saveGameInstance->sessionId;
}
return "";
}

void UKeyStoreUtils::Clear() {
UWeb3StorageAdapter* saveGameInstance = Cast<UWeb3StorageAdapter>(UGameplayStatics::CreateSaveGameObject(UWeb3StorageAdapter::StaticClass()));

if (saveGameInstance)
{
saveGameInstance->sessionId = "";
UGameplayStatics::SaveGameToSlot(saveGameInstance, TEXT("Web3AuthDataSlot"), 0);
}
}
7 changes: 6 additions & 1 deletion Plugins/Web3AuthSDK/Source/Web3AuthSDK/Private/Web3Auth.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ void UWeb3Auth::setResultUrl(FString hash) {
int32 equalsIndex;
if (hash.FindChar('=', equalsIndex)) {
FString newSessionId = hash.Mid(equalsIndex + 1);
keyStoreUtils->Assign(newSessionId);
this->sessionId = newSessionId;
}

Expand Down Expand Up @@ -373,6 +374,7 @@ FUserInfo UWeb3Auth::getUserInfo() {
}

void UWeb3Auth::authorizeSession() {
this->sessionId = keyStoreUtils->Get();
if (!this->sessionId.IsEmpty()) {
FString pubKey = crypto->generatePublicKey(this->sessionId);
FString session = this->sessionId;
Expand Down Expand Up @@ -417,7 +419,7 @@ void UWeb3Auth::authorizeSession() {
}

void UWeb3Auth::sessionTimeout() {

this->sessionId = keyStoreUtils->Get();
if (!this->sessionId.IsEmpty()) {
FString pubKey = crypto->generatePublicKey(this->sessionId);
UE_LOG(LogTemp, Log, TEXT("public key %s"), *pubKey);
Expand Down Expand Up @@ -453,6 +455,7 @@ void UWeb3Auth::sessionTimeout() {
UE_LOG(LogTemp, Log, TEXT("Response: %s"), *response);
this->logoutEvent.ExecuteIfBound();
this->sessionId = FString();
keyStoreUtils->Clear();
});
});
}
Expand Down Expand Up @@ -538,6 +541,7 @@ void UWeb3Auth::handleCreateSessionResponse(FString path, FString newSessionKey)
void UWeb3Auth::Initialize(FSubsystemCollectionBase& Collection) {
Super::Initialize(Collection);
this->crypto = NewObject<UECCrypto>();
this->keyStoreUtils = NewObject<UKeyStoreUtils>();
}

void UWeb3Auth::Deinitialize() {
Expand All @@ -550,5 +554,6 @@ void UWeb3Auth::Deinitialize() {
httpRoutes.Empty();
this->crypto = nullptr;
this->web3AuthApi = nullptr;
this->keyStoreUtils = nullptr;
}

31 changes: 31 additions & 0 deletions Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/KeyStoreUtils.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/SaveGame.h"
#include "Kismet/GameplayStatics.h"
#include "KeyStoreUtils.generated.h"

UCLASS()
class UWeb3StorageAdapter : public USaveGame
{
GENERATED_BODY()
public:
UPROPERTY(VisibleAnywhere, Category = Basic)
FString sessionId;
};

UCLASS()
class WEB3AUTHSDK_API UKeyStoreUtils : public UObject
{
GENERATED_BODY()
private:
UWeb3StorageAdapter* StorageInstance;
public:
UKeyStoreUtils();
~UKeyStoreUtils();

void Assign(FString value);
FString Get();
void Clear();
};

2 changes: 2 additions & 0 deletions Plugins/Web3AuthSDK/Source/Web3AuthSDK/Public/Web3Auth.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "Misc/Base64.h"
#include "ECCrypto.h"
#include "Web3AuthApi.h"
#include "KeyStoreUtils.h"

#include "Runtime/Online/HTTPServer/Public/HttpPath.h"
#include "Runtime/Online/HTTPServer/Public/IHttpRouter.h"
Expand Down Expand Up @@ -699,6 +700,7 @@ class WEB3AUTHSDK_API UWeb3Auth : public UGameInstanceSubsystem
FWeb3AuthOptions web3AuthOptions;
FOnLogin loginEvent;
FOnLogout logoutEvent;
UKeyStoreUtils* keyStoreUtils;

protected:
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
Expand Down