2022-05-14 00:37:40 +02:00
<!DOCTYPE html>
< html class = "" >
< head >
< meta charset = "utf-8" >
< title > auth.bindTempAuthKey< / title >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta property = "description" content = "Binds a temporary authorization key temp_auth_key_id to the permanent authorization key perm_auth_key_id. Each permanent key may only be bound to one temporary key at a time, binding a new temporary key overwrites the previous one." >
< meta property = "og:title" content = "auth.bindTempAuthKey" >
< meta property = "og:image" content = "" >
< meta property = "og:description" content = "Binds a temporary authorization key temp_auth_key_id to the permanent authorization key perm_auth_key_id. Each permanent key may only be bound to one temporary key at a time, binding a new temporary key overwrites the previous one." >
< link rel = "icon" type = "image/svg+xml" href = "/img/website_icon.svg?4" >
< link rel = "apple-touch-icon" sizes = "180x180" href = "/img/apple-touch-icon.png" >
< link rel = "icon" type = "image/png" sizes = "32x32" href = "/img/favicon-32x32.png" >
< link rel = "icon" type = "image/png" sizes = "16x16" href = "/img/favicon-16x16.png" >
< link rel = "alternate icon" href = "/img/favicon.ico" type = "image/x-icon" / >
< link href = "/css/bootstrap.min.css?3" rel = "stylesheet" >
2023-03-20 12:08:32 +01:00
< link href = "/css/telegram.css?236" rel = "stylesheet" media = "screen" >
2022-05-14 00:37:40 +02:00
< style >
< / style >
< / head >
< body class = "preload" >
< div class = "dev_page_wrap" >
< div class = "dev_page_head navbar navbar-static-top navbar-tg" >
< div class = "navbar-inner" >
< div class = "container clearfix" >
< ul class = "nav navbar-nav navbar-right hidden-xs" > < li class = "navbar-twitter" > < a href = "https://twitter.com/telegram" target = "_blank" data-track = "Follow/Twitter" onclick = "trackDlClick(this, event)" > < i class = "icon icon-twitter" > < / i > < span > Twitter< / span > < / a > < / li > < / ul >
< ul class = "nav navbar-nav" >
< li > < a href = "//telegram.org/" > Home< / a > < / li >
< li class = "hidden-xs" > < a href = "//telegram.org/faq" > FAQ< / a > < / li >
< li class = "hidden-xs" > < a href = "//telegram.org/apps" > Apps< / a > < / li >
< li class = "active" > < a href = "/api" > API< / a > < / li >
< li class = "" > < a href = "/mtproto" > Protocol< / a > < / li >
< li class = "" > < a href = "/schema" > Schema< / a > < / li >
< / ul >
< / div >
< / div >
< / div >
< div class = "container clearfix" >
< div class = "dev_page" >
< div id = "dev_page_content_wrap" class = " " >
< div class = "dev_page_bread_crumbs" > < ul class = "breadcrumb clearfix" > < li > < a href = "/api" > API< / a > < / li > < i class = "icon icon-breadcrumb-divider" > < / i > < li > < a href = "/methods" > All Methods< / a > < / li > < i class = "icon icon-breadcrumb-divider" > < / i > < li > < a href = "/method/auth.bindTempAuthKey" > auth.bindTempAuthKey< / a > < / li > < / ul > < / div >
< h1 id = "dev_page_title" > auth.bindTempAuthKey< / h1 >
< div id = "dev_page_content" > < p > Binds a temporary authorization key < code > temp_auth_key_id< / code > to the permanent authorization key < code > perm_auth_key_id< / code > . Each permanent key may only be bound to one temporary key at a time, binding a new temporary key overwrites the previous one.< / p >
< p > For more information, see < a href = "/api/pfs" > Perfect Forward Secrecy< / a > .< / p >
< p > < div class = "clearfix" >
< ul class = "dev_layer_select slightly-pull-right nav nav-pills" >
< li class = "dropdown" >
2024-02-14 14:52:04 +01:00
< a class = "dropdown-toggle" onclick = "return dropdownClick(this, event)" href = "#" > Layer 158 < b class = "caret" > < / b > < / a >
2022-05-14 00:37:40 +02:00
< ul class = "dropdown-menu" >
2024-02-14 14:52:04 +01:00
< li > < a href = "?layer=1" > 1 – Base layer< / a > < / li > < li > < a href = "?layer=2" > 2 – New userpic notifications< / a > < / li > < li > < a href = "?layer=3" > 3 – Send message can trigger link change< / a > < / li > < li > < a href = "?layer=4" > 4 – Check-in chats< / a > < / li > < li > < a href = "?layer=5" > 5 – Localized SMS, localized notifications< / a > < / li > < li > < a href = "?layer=6" > 6 – Foursquare integration< / a > < / li > < li > < a href = "?layer=7" > 7 – Added wallPaperSolid< / a > < / li > < li > < a href = "?layer=8" > 8 – Added end-to-end encryption< / a > < / li > < li > < a href = "?layer=9" > 9 – Improved big files upload perfomance< / a > < / li > < li > < a href = "?layer=10" > 10 – Improved chat participants updates< / a > < / li > < li > < a href = "?layer=11" > 11 – Improved secret chats< / a > < / li > < li > < a href = "?layer=12" > 12 – New dynamic support< / a > < / li > < li > < a href = "?layer=13" > 13 – Audio, video MIME; contacts import retry; new secret actions< / a > < / li > < li > < a href = "?layer=14" > 14 – Notify settings sync, blacklist sync< / a > < / li > < li > < a href = "?layer=15" > 15 – Modified getHistory offset behaviour< / a > < / li > < li > < a href = "?layer=16" > 16 – Split sendCode into 2 parts< / a > < / li > < li > < a href = "?layer=17" > 17 – Added custom typing, introduced message flags< / a > < / li > < li > < a href = "?layer=18" > 18 – Added usernames< / a > < / li > < li > < a href = "?layer=23" > 23 – Stickers for secret chats< / a > < / li > < li > < a href = "?layer=105" > 105 – Scheduled messages, Cloud themes< / a > < / li > < li > < a href = "?layer=108" > 108 – Login with QR code< / a > < / li > < li > < a href = "?layer=109" > 109 – Polls v2< / a > < / li > < li > < a href = "?layer=110" > 110 – People Nearby 2.0, Bank card entity< / a > < / li > < li > < a href = "?layer=111" > 111 – Folders, Broadcast Stats< / a > < / li > < li > < a href = "?layer=112" > 112 – Old featured stickers, generic dice, poll timer, poll solution< / a > < / li > < li > < a href = "?layer=113" > 113 – PSA< / a > < / li > < li > < a href = "?layer=114" > 114 – Video thumbs for GIFs< / a > < / li > < li > < a href = "?layer=115" > 115 – Peek Channel Invite< / a > < / li > < li > < a href = "?layer=116" > 116 – Group Stats, Profile Videos< / a > < / li > < li > < a href = "?layer=117" > 117 – WebRTC Phone Calls< / a > < / li > < li > < a href = "?layer=118" > 118 – Callback with 2FA, Countries list< / a > < / li > < li > < a href = "?layer=119" > 119 – Comments in channels, Threads, Anonymous Admins< / a > < / li > < li > < a href = "?layer=120" > 120 – Multipins, Message Stats, GeoLive v2< / a > < / li > < li > < a href = "?layer=121" > 121 – SVG-based Outlines for Stickers< / a > < / li > < li > < a href = "?layer=122" > 122 – Voice Chats< / a > < / li > < li > < a href = "?layer=123" > 123 – Voice Chat improvements< / a > < / li > < li > < a href = "?layer=124" > 124 – Expiring Invite links< / a > < / li > < li > < a href = "?layer=125" > 125 – Voice Chats in Broadcasts< / a > < / li > < li > < a href = "?layer=126" > 126 – Ban channels in channels< / a > < / li > < li > < a href = "?layer=127" > 127 – Payments in channels< / a > < / li > < li > < a href = "?layer=128" > 128 – Microthumbs for User/Chat profile photos< / a > < / li > < li > < a href = "?layer=129" > 129 – Video Chats< / a > < / li > < li > < a href = "?layer=130" > 130 – Custom placeholder for bot reply keyboards< / a > < / li > < li > < a href = "?layer=131" > 131 – Reset 2FA Password after a week< / a > < / li > < li > < a href = "?layer=132" > 132 – Chat themes< / a > < / li > < li > < a href = "?layer=133" > 133 – 64-bit IDs for User/Chat< / a > < / li > < li > < a href = "?layer=134" > 134 – Chat Requests, Shared Media Calendar< / a > < / li > < li > < a href = "?layer=135" > 135 – Send Message As a Channel< / a > < / li > < li > < a href = "?layer=136" > 136 – Reactions< / a > < / li > < li > < a href = "?layer=137" > 137 – Translations< / a > < / li > < li > < a href = "?layer=138" > 138 – GIF Sticker Packs< / a > < / li > < li > < a href = "?layer=139" > 139 – RTMP streaming< / a > < / li > < li > < a href = "?layer=140" > 140 – WebApps, Cloud Ringtones< / a > < / li > < li > < a href = "?layer=142" > 142 – TCP Reflectors< / a > < / li > < li > < a href = "?layer=143" > 143 – Premium Subscription, Cloud Invoices< / a > < / li > < li > < a href = "?layer=144" > 144 – Premium as a Gift, Custom Emoji< / a > < / li > < li > < a href = "?layer=145" > 145 – Custom Reactions, Statuses, S
2022-05-14 00:37:40 +02:00
< li class = "divider" > < / li >
< li > < a href = "/api/layers" > More...< / a > < / li >
< / ul >
< / li >
< / ul >
< / div >
< pre class = "page_scheme" > < code > < a href = "/constructor/boolFalse" > boolFalse< / a > #bc799737 = < a href = "/type/Bool" > Bool< / a > ;
< a href = "/constructor/boolTrue" > boolTrue< / a > #997275b5 = < a href = "/type/Bool" > Bool< / a > ;
---functions---
< a href = "/method/auth.bindTempAuthKey" class = "current_page_link" > auth.bindTempAuthKey< / a > #cdd42a05 perm_auth_key_id:< a href = "/type/long" > long< / a > nonce:< a href = "/type/long" > long< / a > expires_at:< a href = "/type/int" > int< / a > encrypted_message:< a href = "/type/bytes" > bytes< / a > = < a href = "/type/Bool" > Bool< / a > ;< / code > < / pre > < / p >
< h3 > < a class = "anchor" href = "#parameters" id = "parameters" name = "parameters" > < i class = "anchor-icon" > < / i > < / a > Parameters< / h3 >
< table class = "table" >
< thead >
< tr >
< th > Name< / th >
< th style = "text-align: center;" > Type< / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < strong > perm_auth_key_id< / strong > < / td >
< td style = "text-align: center;" > < a href = "/type/long" > long< / a > < / td >
< td > Permanent auth_key_id to bind to< / td >
< / tr >
< tr >
< td > < strong > nonce< / strong > < / td >
< td style = "text-align: center;" > < a href = "/type/long" > long< / a > < / td >
< td > Random long from < a href = "#binding-message-contents" > Binding message contents< / a > < / td >
< / tr >
< tr >
< td > < strong > expires_at< / strong > < / td >
< td style = "text-align: center;" > < a href = "/type/int" > int< / a > < / td >
< td > Unix timestamp to invalidate temporary key, see < a href = "#binding-message-contents" > Binding message contents< / a > < / td >
< / tr >
< tr >
< td > < strong > encrypted_message< / strong > < / td >
< td style = "text-align: center;" > < a href = "/type/bytes" > bytes< / a > < / td >
< td > See < a href = "#generating-encrypted-message" > Generating encrypted_message< / a > < / td >
< / tr >
< / tbody >
< / table >
< h3 > < a class = "anchor" href = "#result" id = "result" name = "result" > < i class = "anchor-icon" > < / i > < / a > Result< / h3 >
< p > < a href = "/type/Bool" > Bool< / a > < / p >
< h3 > < a class = "anchor" href = "#possible-errors" id = "possible-errors" name = "possible-errors" > < i class = "anchor-icon" > < / i > < / a > Possible errors< / h3 >
< table class = "table" >
< thead >
< tr >
< th > Code< / th >
< th > Type< / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > 400< / td >
< td > ENCRYPTED_MESSAGE_INVALID< / td >
< td > Encrypted message invalid.< / td >
< / tr >
< tr >
< td > 400< / td >
< td > TEMP_AUTH_KEY_ALREADY_BOUND< / td >
< td > The passed temporary key is already bound to another < strong > perm_auth_key_id< / strong > .< / td >
< / tr >
< tr >
< td > 400< / td >
< td > TEMP_AUTH_KEY_EMPTY< / td >
< td > No temporary auth key provided.< / td >
< / tr >
< / tbody >
< / table >
< h3 > < a class = "anchor" href = "#generating-encrypted-message" id = "generating-encrypted-message" name = "generating-encrypted-message" > < i class = "anchor-icon" > < / i > < / a > Generating encrypted_message< / h3 >
< p > The client begins by creating a special binding message:< / p >
< h3 > < a class = "anchor" href = "#binding-message-contents" id = "binding-message-contents" name = "binding-message-contents" > < i class = "anchor-icon" > < / i > < / a > Binding message contents< / h3 >
< pre > < code > bind_auth_key_inner#75a3f765 nonce:long temp_auth_key_id:long perm_auth_key_id:long temp_session_id:long expires_at:int = BindAuthKeyInner;< / code > < / pre >
< table class = "table" >
< thead >
< tr >
< th > < / th >
< th > < / th >
< th > < / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < strong > nonce< / strong > < / td >
< td > < a href = "/type/long" > long< / a > < / td >
< td > Random long< / td >
< / tr >
< tr >
< td > < strong > temp_auth_key_id< / strong > < / td >
< td > < a href = "/type/long" > long< / a > < / td >
< td > Temporary auth_key_id< / td >
< / tr >
< tr >
< td > < strong > perm_auth_key_id< / strong > < / td >
< td > < a href = "/type/long" > long< / a > < / td >
< td > Permanent auth_key_id to bind to< / td >
< / tr >
< tr >
< td > < strong > temp_session_id< / strong > < / td >
< td > < a href = "/type/long" > long< / a > < / td >
< td > Session id, which will be used to invoke < strong > auth.bindTempAuthKey< / strong > method< / td >
< / tr >
< tr >
< td > < strong > expires_at< / strong > < / td >
< td > < a href = "/type/int" > int< / a > < / td >
< td > Unix timestamp to invalidate temporary key< / td >
< / tr >
< / tbody >
< / table >
< h3 > < a class = "anchor" href = "#encrypting-the-binding-message" id = "encrypting-the-binding-message" name = "encrypting-the-binding-message" > < i class = "anchor-icon" > < / i > < / a > Encrypting the binding message< / h3 >
< p > This binding message is encrypted in < a href = "/mtproto/description" > the usual way, but with MTProto v1< / a > using the < code > perm_auth_key< / code > . In other words, one has to prepend < code > random:int128< / code > (it replaces the customary < code > session_id:long< / code > and < code > salt:long< / code > that are irrelevant in this case), then append the same < code > msg_id< / code > that will be used for the request, a < code > seqno< / code > equal to zero, and the correct < code > msg_len< / code > (40 bytes in this case); after that, one computes the < code > msg_key:int128< / code > as SHA1 of the resulting string, appends padding necessary for a 16-byte alignment, encrypts the resulting string using the key derived from < code > perm_auth_key< / code > and < code > msg_key< / code > , and prepends < code > perm_auth_key_id< / code > and < code > msg_key< / code > to the encrypted data as usual.< / p >
< h3 > < a class = "anchor" href = "#binding" id = "binding" name = "binding" > < i class = "anchor-icon" > < / i > < / a > Binding< / h3 >
< p > Once < strong > encrypted_message< / strong > is ready, an < strong > auth.bindTempAuthKey< / strong > request is sent to the server using < code > temp_auth_key< / code > and < code > temp_session_id< / code > . Don't forget to < a href = "/api/invoking#saving-client-info" > rewrite client info< / a > using < a href = "/method/initConnection" > initConnection< / a > when the binding is completed.< / p >
< h3 > < a class = "anchor" href = "#bots-can-use-this-method" id = "bots-can-use-this-method" name = "bots-can-use-this-method" > < i class = "anchor-icon" > < / i > < / a > Bots can use this method< / h3 >
< h3 > < a class = "anchor" href = "#related-pages" id = "related-pages" name = "related-pages" > < i class = "anchor-icon" > < / i > < / a > Related pages< / h3 >
< h4 > < a class = "anchor" href = "#perfect-forward-secrecy" id = "perfect-forward-secrecy" name = "perfect-forward-secrecy" > < i class = "anchor-icon" > < / i > < / a > < a href = "/api/pfs" > Perfect Forward Secrecy< / a > < / h4 >
< p > Binding temporary authorization key to permanent ones.< / p >
< h4 > < a class = "anchor" href = "#long" id = "long" name = "long" > < i class = "anchor-icon" > < / i > < / a > < a href = "/type/long" > long< / a > < / h4 >
< p > A basic bare type, elements of which correspond to two-element sequences, representing 64-bit signed numbers (little-endian).< / p >
< p > < a href = "/mtproto/serialize" > More on basic types »< / a > < / p >
< h4 > < a class = "anchor" href = "#int" id = "int" name = "int" > < i class = "anchor-icon" > < / i > < / a > < a href = "/type/int" > int< / a > < / h4 >
< p > A basic bare type, the values of which correspond to single-element sequences, i.e. numbers from -2^31 to 2^31-1 which in this case represent themselves.< / p >
< p > < a href = "/mtproto/serialize" > More on basic types »< / a > < / p >
< h4 > < a class = "anchor" href = "#mobile-protocol-detailed-description" id = "mobile-protocol-detailed-description" name = "mobile-protocol-detailed-description" > < i class = "anchor-icon" > < / i > < / a > < a href = "/mtproto/description" > Mobile Protocol: Detailed Description< / a > < / h4 >
< h4 > < a class = "anchor" href = "#calling-api-methods" id = "calling-api-methods" name = "calling-api-methods" > < i class = "anchor-icon" > < / i > < / a > < a href = "/api/invoking" > Calling API Methods< / a > < / h4 >
< p > Additional options for calling methods.< / p >
< h4 > < a class = "anchor" href = "#initconnection" id = "initconnection" name = "initconnection" > < i class = "anchor-icon" > < / i > < / a > < a href = "/method/initConnection" > initConnection< / a > < / h4 >
< p > Initialize connection< / p > < / div >
< / div >
< / div >
< / div >
< div class = "footer_wrap" >
< div class = "footer_columns_wrap footer_desktop" >
< div class = "footer_column footer_column_telegram" >
< h5 > Telegram< / h5 >
< div class = "footer_telegram_description" > < / div >
Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed.
< / div >
< div class = "footer_column" >
< h5 > < a href = "//telegram.org/faq" > About< / a > < / h5 >
< ul >
< li > < a href = "//telegram.org/faq" > FAQ< / a > < / li >
2022-09-09 12:10:24 +02:00
< li > < a href = "//telegram.org/privacy" > Privacy< / a > < / li >
2022-09-09 23:58:59 +02:00
< li > < a href = "//telegram.org/press" > Press< / a > < / li >
2022-05-14 00:37:40 +02:00
< / ul >
< / div >
< div class = "footer_column" >
< h5 > < a href = "//telegram.org/apps#mobile-apps" > Mobile Apps< / a > < / h5 >
< ul >
< li > < a href = "//telegram.org/dl/ios" > iPhone/iPad< / a > < / li >
2022-09-09 23:58:59 +02:00
< li > < a href = "//telegram.org/android" > Android< / a > < / li >
< li > < a href = "//telegram.org/dl/web" > Mobile Web< / a > < / li >
2022-05-14 00:37:40 +02:00
< / ul >
< / div >
< div class = "footer_column" >
< h5 > < a href = "//telegram.org/apps#desktop-apps" > Desktop Apps< / a > < / h5 >
< ul >
< li > < a href = "//desktop.telegram.org/" > PC/Mac/Linux< / a > < / li >
< li > < a href = "//macos.telegram.org/" > macOS< / a > < / li >
< li > < a href = "//telegram.org/dl/web" > Web-browser< / a > < / li >
< / ul >
< / div >
< div class = "footer_column footer_column_platform" >
< h5 > < a href = "/" > Platform< / a > < / h5 >
< ul >
< li > < a href = "/api" > API< / a > < / li >
< li > < a href = "//translations.telegram.org/" > Translations< / a > < / li >
< li > < a href = "//instantview.telegram.org/" > Instant View< / a > < / li >
< / ul >
< / div >
< / div >
< div class = "footer_columns_wrap footer_mobile" >
< div class = "footer_column" >
< h5 > < a href = "//telegram.org/faq" > About< / a > < / h5 >
< / div >
< div class = "footer_column" >
< h5 > < a href = "//telegram.org/blog" > Blog< / a > < / h5 >
< / div >
< div class = "footer_column" >
< h5 > < a href = "//telegram.org/apps" > Apps< / a > < / h5 >
< / div >
< div class = "footer_column" >
< h5 > < a href = "/" > Platform< / a > < / h5 >
< / div >
< div class = "footer_column" >
2024-02-14 14:52:04 +01:00
< h5 > < a href = "https://twitter.com/telegram" target = "_blank" data-track = "Follow/Twitter" onclick = "trackDlClick(this, event)" > Twitter< / a > < / h5 >
2022-05-14 00:37:40 +02:00
< / div >
< / div >
< / div >
< / div >
2022-12-10 23:50:15 +01:00
< script src = "/js/main.js?47" > < / script >
2022-05-14 00:37:40 +02:00
< script > b a c k T o T o p I n i t ( " G o u p " ) ;
removePreloadInit();
< / script >
< / body >
< / html >