libultraship
Reimplementations of libultra (N64 SDK) functions for modern hardware
Loading...
Searching...
No Matches
Ship::Keystore Class Reference

Persistent store of cryptographic keys used for archive signature verification. More...

#include <Keystore.h>

Inheritance diagram for Ship::Keystore:
[legend]
Collaboration diagram for Ship::Keystore:
[legend]

Public Member Functions

 Keystore (std::shared_ptr< Config > config=nullptr)
 Constructs an empty Keystore.
 
 ~Keystore () override=default
 
void Load ()
 Loads all keys from the persistent storage file on disk.
 
void Save ()
 Persists the current set of keys to the storage file on disk.
 
bool AddKey (const std::string &keyName, const std::vector< uint8_t > &keyData, KeyOrigin origin=KeyOrigin::Game)
 Adds a key to the store.
 
bool RemoveKey (const std::string &keyName)
 Removes a key from the store by name.
 
bool HasKey (const std::vector< uint8_t > &keyData) const
 Checks whether a key with the given data exists in the store.
 
std::vector< KeystoreEntryGetKey (const std::string &keyName) const
 Retrieves all keys that match the given name.
 
std::vector< KeystoreEntryGetAllKeys () const
 Returns every key currently stored.
 
- Public Member Functions inherited from Ship::Component
 Component (const std::string &name, std::shared_ptr< Context > context=nullptr)
 Constructs a Component with the given name.
 
virtual ~Component ()
 
void Init (const nlohmann::json &initArgs=nlohmann::json::object())
 Performs one-time initialization of this component.
 
bool IsInitialized () const
 Returns true once Init() (or MarkInitialized()) has completed successfully.
 
const std::string & GetName () const
 Returns the name of this Component.
 
std::string ToString () const
 Returns a human-readable string representation (e.g. "Name (id)").
 
std::string ToTreeString (int depth=0) const
 Returns a human-readable tree representation of this component and its children.
 
 operator std::string () const
 Conversion operator to std::string; equivalent to ToString().
 
ParentComponentListGetParents ()
 Returns a mutable reference to the parent list.
 
const ParentComponentListGetParents () const
 Returns a const reference to the parent list.
 
ComponentListGetChildren ()
 Returns a mutable reference to the child list.
 
const ComponentListGetChildren () const
 Returns a const reference to the child list.
 
virtual std::shared_ptr< ComponentTryGetSharedComponent () noexcept
 Returns a shared_ptr to this Component when available, otherwise nullptr.
 
virtual std::shared_ptr< ComponentGetSharedComponent ()
 Returns a shared_ptr to this Component via the correct enable_shared_from_this base.
 
template<typename T >
bool HasInChildren () const
 Checks whether any descendant Component matches type T via BFS.
 
template<typename T >
std::shared_ptr< T > GetFirstInChildren () const
 Returns the first descendant that matches type T via BFS.
 
template<typename T >
std::shared_ptr< std::vector< std::shared_ptr< T > > > GetInChildren () const
 Returns all descendants that match type T via BFS.
 
template<typename T >
bool HasInParents () const
 Checks whether any ancestor Component matches type T via BFS.
 
template<typename T >
std::shared_ptr< T > GetFirstInParents () const
 Returns the first ancestor that matches type T via BFS.
 
template<typename T >
std::shared_ptr< std::vector< std::shared_ptr< T > > > GetInParents () const
 Returns all ancestors that match type T via BFS.
 
- Public Member Functions inherited from Ship::Part
 Part ()
 Constructs a Part and assigns it a unique ID.
 
 Part (std::shared_ptr< Context > context)
 Constructs a Part with an explicit Context reference and unique ID.
 
virtual ~Part ()=default
 
uint64_t GetId () const
 Returns the unique identifier for this Part.
 
bool operator== (const Part &other) const
 Compares two Parts for equality by their unique IDs.
 
std::shared_ptr< ContextGetContext () const
 Returns the Context this Part belongs to, or nullptr if unset.
 
void SetContext (std::shared_ptr< Context > ctx)
 Sets the Context this Part belongs to.
 

Additional Inherited Members

- Protected Member Functions inherited from Ship::Component
virtual void OnInit (const nlohmann::json &initArgs=nlohmann::json::object())
 Override this to implement component-specific initialization logic.
 
void MarkInitialized ()
 Marks this component as initialized without going through Init().
 
template<typename T >
std::shared_ptr< T > RequireDependency (const std::shared_ptr< T > &dependency, const std::string &dependencyName) const
 Returns a cached dependency after validating it exists and is initialized.
 
- Protected Member Functions inherited from Ship::Part
virtual void OnAdded (bool forced)
 Called after this Part has been added to a PartList.
 
virtual void OnRemoved (bool forced)
 Called after this Part has been removed from a PartList.
 

Detailed Description

Persistent store of cryptographic keys used for archive signature verification.

Keystore manages a collection of named binary keys that the engine uses to verify the authenticity of resource archives. Keys can originate from the game distribution, the user, or the engine itself. The store can be serialized to and from disk via Load() and Save().

Required Context children (looked up at runtime):

Obtain the instance from Context::GetChildren().GetFirst<Keystore>().

Constructor & Destructor Documentation

◆ Keystore()

Ship::Keystore::Keystore ( std::shared_ptr< Config config = nullptr)
explicit

Constructs an empty Keystore.

◆ ~Keystore()

Ship::Keystore::~Keystore ( )
overridedefault

Member Function Documentation

◆ AddKey()

bool Ship::Keystore::AddKey ( const std::string &  keyName,
const std::vector< uint8_t > &  keyData,
KeyOrigin  origin = KeyOrigin::Game 
)

Adds a key to the store.

Parameters
keyNameName to associate with the key.
keyDataRaw key bytes.
originOrigin category for the key; defaults to KeyOrigin::Game.
Returns
true if the key was added, false if a key with that name already exists.

◆ GetAllKeys()

std::vector< KeystoreEntry > Ship::Keystore::GetAllKeys ( ) const

Returns every key currently stored.

Returns
Vector of all KeystoreEntry objects.

◆ GetKey()

std::vector< KeystoreEntry > Ship::Keystore::GetKey ( const std::string &  keyName) const

Retrieves all keys that match the given name.

Parameters
keyNameName to look up.
Returns
Vector of matching KeystoreEntry objects (may be empty).

◆ HasKey()

bool Ship::Keystore::HasKey ( const std::vector< uint8_t > &  keyData) const

Checks whether a key with the given data exists in the store.

Parameters
keyDataRaw key bytes to search for.
Returns
true if a matching key is present.

◆ Load()

void Ship::Keystore::Load ( )

Loads all keys from the persistent storage file on disk.

◆ RemoveKey()

bool Ship::Keystore::RemoveKey ( const std::string &  keyName)

Removes a key from the store by name.

Parameters
keyNameName of the key to remove.
Returns
true if the key was found and removed, false otherwise.

◆ Save()

void Ship::Keystore::Save ( )

Persists the current set of keys to the storage file on disk.


The documentation for this class was generated from the following file: