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 );
Nom | Type | Description |
rgubTicketEncrypted | const uint8 * | Ticket d'authentification du compte crypté qui sera décrypté. |
cubTicketEncrypted | uint32 | Taille de rgubTicketEncrypted en octets. |
rgubTicketDecrypted | uint8 * | Tampon où sera copié le ticket décrypté. |
pcubTicketDecrypted | uint32 * | Taille de rgubTicketDecrypted en octets. |
rgubKey | const 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. |
cubKey | int | Longueur 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::RequestEncryptedAppTicketExemple :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 );
Nom | Type | Description |
rgubTicketDecrypted | uint8 * | Ticket décrypté à vérifier. |
pcubTicketDecrypted | uint32 * | Taille de rgubTicketDecrypted en octets. |
nAppID | AppId_t | AppID 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 );
Nom | Type | Description |
rgubTicketDecrypted | uint8 * | Ticket décrypté à vérifier. |
pcubTicketDecrypted | uint32 * | Taille de rgubTicketDecrypted en octets. |
Vérifie si le compte associé au ticket a été banni par
VAC.
Éléments renvoyés : AppId_ttrue 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 );
Nom | Type | Description |
rgubTicketDecrypted | uint8 * | Ticket décrypté à vérifier. |
pcubTicketDecrypted | uint32 * | Taille de rgubTicketDecrypted en octets. |
nAppID | AppId_t | AppID 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 );
Nom | Type | Description |
rgubTicketDecrypted | uint8 * | Ticket décrypté à vérifier. |
pcubTicketDecrypted | uint32 * | Taille de rgubTicketDecrypted en octets. |
Obtient l'AppID associé à un ticket.
Éléments renvoyés : AppId_tRenvoie 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 );
Nom | Type | Description |
rgubTicketDecrypted | uint8 * | Ticket décrypté à vérifier. |
pcubTicketDecrypted | uint32 * | Taille de rgubTicketDecrypted en octets. |
Obtient l'heure à laquelle un ticket a été attribué.
Éléments renvoyés : RTime32Renvoie 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 );
Nom | Type | Description |
rgubTicketDecrypted | uint8 * | Ticket décrypté à vérifier. |
pcubTicketDecrypted | uint32 * | Taille en octets de rgubTicketDecrypted . |
psteamID | CSteamID * | 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 );
Nom | Type | Description |
rgubTicketDecrypted | uint8 * | Ticket décrypté à vérifier. |
pcubTicketDecrypted | uint32 * | Taille en octets de rgubTicketDecrypted . |
pcubUserData | uint32 * | 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.
Nom | Type | Valeur | Description |
k_nSteamEncryptedAppTicketSymmetricKeyLen | int | 32 | Longueur d'une clé utilisée avec BDecryptTicket. |