diff options
Diffstat (limited to 'public/steamnetworkingsockets/steamdatagram_ticketgen.h')
| -rw-r--r-- | public/steamnetworkingsockets/steamdatagram_ticketgen.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/public/steamnetworkingsockets/steamdatagram_ticketgen.h b/public/steamnetworkingsockets/steamdatagram_ticketgen.h new file mode 100644 index 0000000..32e080a --- /dev/null +++ b/public/steamnetworkingsockets/steamdatagram_ticketgen.h @@ -0,0 +1,60 @@ +//====== Copyright Valve Corporation, All rights reserved. ==================== +// +// Backend functions to generate authorization tickets for steam datagram +// +//============================================================================= + +#ifndef STEAMDATAGRAM_TICKETGEN_H +#define STEAMDATAGRAM_TICKETGEN_H +#ifdef _WIN32 +#pragma once +#endif + +// Import some common stuff that is useful by both the client +// and the backend ticket-generating authority. +#include "steamdatagram_tickets.h" + +struct SteamDatagramSignedTicketBlob +{ + int m_sz; + uint8 m_blob[ k_cbSteamDatagramMaxSerializedTicket ]; +}; + +/// Initialize ticket generation with an Ed25519 private key. +/// See: https://ed25519.cr.yp.to/ +/// +/// Input buffer will be securely wiped. +/// +/// You can generate an Ed25519 key using OpenSSH: +/// +/// ssh-keygen -t ed25519 +/// +/// The private key should be a PEM-like block of text +/// ("-----BEGIN OPENSSH PRIVATE KEY-----"). +/// Private keys encrypted with a password are not supported. +/// +/// In order for signatures using this key to be accepted by the relay network, +/// you need to send your public key to Valve. This key should be on a single line +/// of text that begins with "ssh-ed25519". (The format used in the .ssh/authorized_keys +/// file.) +STEAMDATAGRAM_TICKET_INTERFACE bool SteamDatagram_InitTicketGenerator_Ed25519( void *pvPrivateKey, size_t cbPrivateKey ); + +/// Serialize the specified auth ticket and attach a signature. +/// Returns false if you did something stupid like forgot to load a key. +/// Will also fail if your ticket is too big. (Probably because you +/// added too many extra fields.) +STEAMDATAGRAM_TICKET_INTERFACE bool SteamDatagram_SerializeAndSignTicket( const SteamDatagramRelayAuthTicket &ticket, SteamDatagramSignedTicketBlob &outBlob ); + +// +// Legacy / deprecated +// + +/// Initialize ticket generation with an RSA private key. You can either +/// pass a PEM block ("-----BEGIN PRIVATE KEY-----"), or binary PKCS#8 DER. +/// Input buffer will be securely wiped. +STEAMDATAGRAM_TICKET_INTERFACE bool SteamDatagram_InitTicketGenerator_RSA_deprecated( void *pvPrivateKey, size_t cbPrivateKey ); + +/// Generate a signature for legacy support +STEAMDATAGRAM_TICKET_INTERFACE bool SteamDatagram_SerializeAndSignTicket_deprecated( const SteamDatagramRelayAuthTicket &ticket, SteamDatagramSignedTicketBlob &outBlob ); + +#endif // STEAMDATAGRAM_TICKETGEN_H |