Documentation Steamworks
SteamEncryptedAppTicket
Utilitaires permettant de décoder/décrypter des tickets d'applications.

Pour plus d'informations, consultez Tickets d'application cryptés.

Pour utiliser ces fonctions, vous devez inclure l'entête de steamencryptedappticket.h, et le lier au binaire sdkencryptedappticket. Ainsi, vous pouvez les utiliser dans une application hors ligne qui s'exécute sur un serveur de confiance pour authentifier les tickets que vous recevez de la part des clients.
Remarque : un ticket d'application crypté ne peut contenir que jusqu'à 140 AppID de DLC. Si vous prévoyez d'en avoir plus pour votre titre, vous devrez utiliser des tickets de session et d'API Web pour vérifier la propriété.

Fonctions


Il s'agit de fonctions globales qui ne requièrent pas d'interface pour être utilisées.

SteamEncryptedAppTicket_BDecryptTicket

S_API bool SteamEncryptedAppTicket_BDecryptTicket( const uint8 *rgubTicketEncrypted, uint32 cubTicketEncrypted, uint8 *rgubTicketDecrypted, uint32 *pcubTicketDecrypted, const uint8 rgubKey[k_nSteamEncryptedAppTicketSymmetricKeyLen], int cubKey );
NomTypeDescription
rgubTicketEncryptedconst uint8 *Ticket d'authentification du compte crypté qui sera décrypté.
cubTicketEncrypteduint32Taille de rgubTicketEncrypted en octets.
rgubTicketDecrypteduint8 *Tampon où sera copié le ticket décrypté.
pcubTicketDecrypteduint32 *Taille de rgubTicketDecrypted en octets.
rgubKeyconst uint8[[apitype]SteamEncryptedAppTicket::k_nSteamEncryptedAppTicketSymmetricKeyLen[/apitype]]Clé utilisée pour crypter et décrypter le ticket. Ne peut pas être plus longue que k_nSteamEncryptedAppTicketSymmetricKeyLen.
cubKeyintLongueur de rgubKey.

Décrypte un ticket d'application crypté.

La clé de cryptage peut être obtenue depuis la page Clé de ticket d'application cryptée de l'espace d'administration de votre application.

Si cet appel a réussi, alors vous pouvez utiliser les autres fonctions SteamEncryptedAppTicket pour obtenir plus d'informations à propos du ticket décrypté.

Éléments renvoyés : bool
true si le ticket a bien été décrypté.
false dans les conditions suivantes.
  • cubKey était à 0.
  • La taille du tampon de sortie rgubTicketDecrypted est trop petite. Il doit être au moins aussi conséquent que rgubTicketEncrypted.
  • La lecture de rgubTicketEncrypted a échoué. Cela peut arriver lorsque ce dernier est NULL ou vide.
  • Échec du cryptage, probablement à cause d'une clé incorrecte.

Consulter également : ISteamUser::RequestEncryptedAppTicket

Exemple :
void DecryptTicket( uint8* rgubTicket, uint32 cubTicket ) { // Inclut une clé de ticket d'application cryptée et cachée pour Spacewar. N'envoyez jamais cela aux clients. const uint8 rgubKey[k_nSteamEncryptedAppTicketSymmetricKeyLen] = { 0xed, 0x93, 0x86, 0x07, 0x36, 0x47, 0xce, 0xa5, 0x8b, 0x77, 0x21, 0x49, 0x0d, 0x59, 0xed, 0x44, 0x57, 0x23, 0xf0, 0xf6, 0x6e, 0x74, 0x14, 0xe1, 0x53, 0x3b, 0xa3, 0x3c, 0xd8, 0x03, 0xbd, 0xbd }; uint8 rgubDecrypted[1024]; uint32 cubDecrypted = sizeof( rgubDecrypted ); if ( !SteamEncryptedAppTicket_BDecryptTicket( rgubTicket, cubTicket, rgubDecrypted, &cubDecrypted, rgubKey, sizeof( rgubKey ) ) ) { printf( "Ticket failed to decrypt\n" ); return; } if ( !SteamEncryptedAppTicket_BIsTicketForApp( rgubDecrypted, cubDecrypted, SteamUtils()->GetAppID() ) ) printf( "Ticket for wrong app id\n" ); CSteamID steamIDFromTicket; SteamEncryptedAppTicket_GetTicketSteamID( rgubDecrypted, cubDecrypted, &steamIDFromTicket ); if ( steamIDFromTicket != SteamUser()->GetSteamID() ) printf( "Ticket for wrong user\n" ); uint32 cubData; uint32 *punSecretData = (uint32 *)SteamEncryptedAppTicket_GetUserVariableData( rgubDecrypted, cubDecrypted, &cubData ); if ( cubData != sizeof( uint32 ) || *punSecretData != k_unSecretData ) printf( "Failed to retrieve secret data\n" ); }

SteamEncryptedAppTicket_BIsTicketForApp

S_API bool SteamEncryptedAppTicket_BIsTicketForApp( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID );
NomTypeDescription
rgubTicketDecrypteduint8 *Ticket décrypté à vérifier.
pcubTicketDecrypteduint32 *Taille de rgubTicketDecrypted en octets.
nAppIDAppId_tAppID avec lequel effectuer la comparaison.

Vérifie qu'un ticket d'application décrypté est bien pour l'application attendue.

Éléments renvoyés : bool
true si le ticket appartient à l'AppID fourni. Si ce n'est pas le cas, ou que le ticket n'est pas valide, renvoie false.

SteamEncryptedAppTicket_BUserIsVacBanned

S_API bool SteamEncryptedAppTicket_BUserIsVacBanned( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted );
NomTypeDescription
rgubTicketDecrypteduint8 *Ticket décrypté à vérifier.
pcubTicketDecrypteduint32 *Taille de rgubTicketDecrypted en octets.

Vérifie si le compte associé au ticket a été banni par VAC.

Éléments renvoyés : AppId_t
true si le compte est sous le coup d'un bannissement VAC. Si ce n'est pas le cas, si le ticket n'est pas valide ou si le ticket ne comporte pas ces informations, renvoie false.

SteamEncryptedAppTicket_BUserOwnsAppInTicket

S_API bool SteamEncryptedAppTicket_BUserOwnsAppInTicket( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID );
NomTypeDescription
rgubTicketDecrypteduint8 *Ticket décrypté à vérifier.
pcubTicketDecrypteduint32 *Taille de rgubTicketDecrypted en octets.
nAppIDAppId_tAppID pour vérifier si le compte le possède.

Vérifie que le ticket prouve bien la propriété de l'AppID donnée par le compte.

Ceci peut être utilisé pour les DLC et l'AppID lié qui est placée dans le ticket, pas seulement pour l'AppID du ticket principal.

Éléments renvoyés : bool
true si le ticket appartient à l'AppID fourni. Si ce n'est pas le cas, ou que le ticket n'est pas valide, renvoie false.

SteamEncryptedAppTicket_GetTicketAppID

S_API AppId_t SteamEncryptedAppTicket_GetTicketAppID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted );
NomTypeDescription
rgubTicketDecrypteduint8 *Ticket décrypté à vérifier.
pcubTicketDecrypteduint32 *Taille de rgubTicketDecrypted en octets.

Obtient l'AppID associé à un ticket.

Éléments renvoyés : AppId_t
Renvoie l'AppID lié au ticket. Renvoie 0 si le ticket n'est pas valide.

SteamEncryptedAppTicket_GetTicketIssueTime

S_API RTime32 SteamEncryptedAppTicket_GetTicketIssueTime( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted );
NomTypeDescription
rgubTicketDecrypteduint8 *Ticket décrypté à vérifier.
pcubTicketDecrypteduint32 *Taille de rgubTicketDecrypted en octets.

Obtient l'heure à laquelle un ticket a été attribué.

Éléments renvoyés : RTime32
Renvoie l'heure au format « depuis l'époque Unix » (temps écoulé depuis le 1ᵉʳ janvier 1970). Renvoie 0 si le ticket n'est pas valide.

SteamEncryptedAppTicket_GetTicketSteamID

S_API void SteamEncryptedAppTicket_GetTicketSteamID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, CSteamID *psteamID );
NomTypeDescription
rgubTicketDecrypteduint8 *Ticket décrypté à vérifier.
pcubTicketDecrypteduint32 *Taille en octets de rgubTicketDecrypted.
psteamIDCSteamID *Renvoie le SteamID associé au ticket. Renvoie k_steamIDNil si le ticket n'est pas valide.

Obtient le SteamID associé à un ticket.

SteamEncryptedAppTicket_GetUserVariableData

S_API const uint8 *SteamEncryptedAppTicket_GetUserVariableData( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, uint32 *pcubUserData );
NomTypeDescription
rgubTicketDecrypteduint8 *Ticket décrypté à vérifier.
pcubTicketDecrypteduint32 *Taille en octets de rgubTicketDecrypted.
pcubUserDatauint32 *Renvoie la taille des données du compte.

Obtient les données du compte à longueur variable fournies lors de la création du ticket.

Éléments renvoyés : const uint8 *
Renvoie un pointeur sur les données du compte. Renvoie la taille de ces données via pcubUserData.

Constantes

Voici les constantes destinées à une utilisation avec SteamEncryptedAppTicket.

NomTypeValeurDescription
k_nSteamEncryptedAppTicketSymmetricKeyLenint32Longueur d'une clé utilisée avec BDecryptTicket.