2022-01-30 23:27:37 +00:00
|
|
|
// Copyright (c) 2021 Tulir Asokan
|
|
|
|
//
|
|
|
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
|
|
|
|
// Package socket implements a subset of the Noise protocol framework on top of websockets as used by WhatsApp.
|
|
|
|
//
|
|
|
|
// There shouldn't be any need to manually interact with this package.
|
|
|
|
// The Client struct in the top-level whatsmeow package handles everything.
|
|
|
|
package socket
|
|
|
|
|
2022-03-12 22:02:04 +00:00
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
|
|
|
|
"go.mau.fi/whatsmeow/binary/token"
|
|
|
|
)
|
2022-01-30 23:27:37 +00:00
|
|
|
|
|
|
|
const (
|
|
|
|
// Origin is the Origin header for all WhatsApp websocket connections
|
|
|
|
Origin = "https://web.whatsapp.com"
|
|
|
|
// URL is the websocket URL for the new multidevice protocol
|
|
|
|
URL = "wss://web.whatsapp.com/ws/chat"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
NoiseStartPattern = "Noise_XX_25519_AESGCM_SHA256\x00\x00\x00\x00"
|
|
|
|
|
2022-03-12 22:02:04 +00:00
|
|
|
WAMagicValue = 5
|
2022-01-30 23:27:37 +00:00
|
|
|
)
|
|
|
|
|
2022-03-12 22:02:04 +00:00
|
|
|
var WAConnHeader = []byte{'W', 'A', WAMagicValue, token.DictVersion}
|
2022-01-30 23:27:37 +00:00
|
|
|
|
|
|
|
const (
|
|
|
|
FrameMaxSize = 2 << 23
|
|
|
|
FrameLengthSize = 3
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
ErrFrameTooLarge = errors.New("frame too large")
|
|
|
|
ErrSocketClosed = errors.New("frame socket is closed")
|
|
|
|
ErrSocketAlreadyOpen = errors.New("frame socket is already open")
|
|
|
|
)
|