Table of Contents

Open B2F

This specification describes the transfer of messages between Winlink Radio Mail Server (RMS) gateway stations and Winlink compatible user terminal programs (WL2K clients).

When connected with a non-Winlink client or another MBO (Non-Participating Mail Box Operator) that is not a Winlink RMS, messages will be forwarded using the current FBB protocol.

The B2F protocol is an extension of the original FBB amateur packet protocol that was aimed at the manual keyboard user. Standard FBB B1 and lower protocols do not support multiple address messages and messages with embedded attachments. This protocol extension does.

The B2F protocol MUST operate over a 8-bit clean communication bearer, which provides reliable and ordered delivery.

Commands

Message pending proposal

The FC proposal is initially used for any Winlink encapsulated message or Winlink control message.

Other message types may be added in the future.

Standard messages of type Private or Bulletin MAY be proposed using either the lower level FA or FB proposals using the level B1 rules, or as an encapsulated message using level B23.

Unlike FA and FB proposals, the FC proposal does not include sender or receiver address information, as that is included within the encapsulated messages' header as described above.

FA, FB and FC proposals may be intermixed in any combination within a proposal block.

; Proposal Code: "FC"
B2F_PROPCODE = %x46 %x43
 
; Message type. CM = WinLink Control Message, EM = Encapsulated Message 
B2F_TYPE     = 1*2(ALPHA / DIGIT)
 
; Unique Message ID
B2F_MID      = 1*12VCHAR
 
; Uncompressed size
B2F_USIZE    = 1*DIGIT
 
; Compressed size
B2F_CSIZE    = 1*DIGIT
 
; Proposal definition
B2F_PROPOSAL = B2F_PROPCODE SP B2F_TYPE SP B2F_MID SP B2F_USIZE SP B2F_CSIZE CR

Calling Station ID

The calling station identification command is to be sent PRIOR the calling station SID.

;FW CALLSIGN

ABNF Grammar:

CALLSIGN      = 1*(%x41-5A / DIGIT)
B2F_CALLER_ID = %x3b %x46 %x57 SP CALLSIGN CR

Secure login

The exchange happens after the SID has been transmitted.

The server sends a ;PQ: proposal with an authentication challenge, which is formatted as follow:

;PQ: 99685857

The client computes the response using the following pseudocode:

S3CRYPT:BEGIN:AESCTR:14AD:wrgBw7/DuMKaw5HDjWdeQ8K1Xj3CjDtjOcKBYUtNDSoNDMKvwq
rDi8K8JsOww7bCixErw4fCgcKBA8Oew6TDm8Kcw4YhNRdjAgwt
VcK2w6MdwpNhwppnw4QbX0HDkSbCgHM8w5I0w78NCsOOwrnCuG
zDq8O0w5oNw5lNw6DCscOHSAlwwowSwqvDlMKAKw7DrMKGAHsp
BCwMd8KjXmjDrMO7RTUTXlRqSU3CvsK4T8K2XT/DsArClsKUwq
bCvD4/PRg+GkxZTWMQw755PxLCi1/Do8Oyw7TClMO3EjzCnMO2
Yj1UwpRGwq5macOqwqFrfH0Dw5Fgw4bDoDzCp8KKR8Ouw7PDmD
gFwpVbwovCqsOVeMOSGsKaUMOUwppHw63DhDdqCcKXNsKcTi1i
DS4aCMOnw4Uew44BWwQ0wroUJcO7w4VqdMO1XcO7wqZYGMOAP8
KXwqdSwpprw4jClcKOFQPCkFQNwpt6bMKCw7TCisOTw7vDtcOc
LMOzMyXDih5KZMKBw64zw4LChGzCtjPDrMO/PBXCmVrDiA7Cp1
Ncwq3Cm8KGw7bCj8Oaw53Do3nCs8O6bcKQwqDCvV7CgSXCusKX
wrLCgMK0ewnDpBLDrMKcCsKXb8Khw4TCrcOBA2DCnx0xLsKEMs
OZfMK9OMKRw7pDw4fDrn1BdWXDqkLChHRlwqrDrSbDi8O5K0HD
qBFQw5kCw4NdSRvDnAopU05gaEAHSBfCm8KYw5vCnMKxZTLCuz
48wp0Owo0Zw6vCrsOuw5XCtsK2c8KzdcKwwq03w7TDt8KIw7Qh
w7nCusOUNMOaXlLCjAQ0aMOjw4nDpGpWwp5XAk5pwr/ChsK0wr
7DjcOcw4jCplzCpsOkERPDskjCvnlFw7IJwqzCsBkGOg08wqzC
gMKXw4M4w6/DvhIHYQ1eN3bCtwk9HMOJw4jCgsOgwpBISsOPw6
7Dq29AMR7DusOjFsOpw7sFwqnDsUnCgMO0eMKTwpXDtjjCicO+
Q8KTLMOAwqrDjjEsw7vDmT1dKcOMCcKKw4wUwofDgcKkERBrw5
ZNw4kUwqfDl8OdXWXDpsOGLMK6w57DgxPCqcKdw6jDnAfDqMOt
wogDRwLCo8O7JyLDssOaPVHCscKVAHjDq8KMMcOUa8KFwp3DgX
PCisKRw60QwpLCnMODYsKowqrCoDh4AsORLcKjcDBPJcOCKsOi
Amx9UMK9woLClsOMEMKvwqJKCz0iN1JvGjfDuxLChWkcTH3DjM
OowpkFw7fDkDjCiC/CgxhSRE1Xw7nDqsOLGTbDs8KXw5PCpRQP
wq9/bRjDm8KQCsOHw7/DoB7Clgw4TX3Cpm/DvsKzwp7CrsK9w5
llwo3DtkvDpVk/acKUfnMECMOpAsKKwqLCu8Kqw7TCtxsew7kH
DMO4wrBswrTCoG0ZwrrDv8KqwovCri0AMsKFw5lJIsOraARJwp
zDncKSS1DDhUpIwrULwp7CocOfMD3CmmPCjsOddsOTN2vDh8Ky
FcK+wqPCpkhQw5N9Fkl0wq/CncOhwoNYOzwaw44TwrJxwoBXIc
KEW00Tw7rCuMOzO8KsOkLCvsKiwp7CtcKhwqrCiMOiwpnDihIs
wrDDocKPw7PDmy3CosKSEDECw53CuUM5woHDg8O8NhdPwrHCv8
OGwq1cBiN4wqbCgjtDb8OYLsOQw5PCr8KNI0jDgTlDbAw6e3/D
oMO6w751DcODwpI9wpINJzfCssOWw5TCmFUTBVnCoBcXclIawq
LCoMOzwoERPAvDnThSwoTDvSl2PU8NwojCpF3DuRjDmcK1w7zC
oXBjccKIwrHCiMKvD3HDlcOdY2Ygw67Co2nDo8KAwrzDkcKvwq
gdcUNjw6TDpMO/w4LCpUVbVA7CvMOudsKjcMO0fcKHw7Zsw64j
w4oywp7Dog8ZTcKcw5MMw6JYw4TDhMO5w6fDow9Bw6HCuVFYw6
jDmUURJsK8PsKqUHLCo2rDsB/CrsK0w47DsMKxSg9+wqI=:END

The result is then sent to the server using the following format:

;PR: 99685857

ABNF Grammar:

B2F_AUTH_CHALLENGE = %x3B %x50 %x51 %x3A SP 8DIGIT CR
B2F_AUTH_RESPONSE  = %x3B %x50 %x52 %x3A SP 8DIGIT CR

Reference source code in paclink-unix, function compute_secure_login_response() and wl2k-go

Secure Gateway Login

When a RMS connects to a CMS, the latter sends a login challenge with ;SQ: proposal.

The auth scheme works the same way the Secure login does.

The RMS answers with a triplet composed of the secure login response, the frequency the client is binding to (10 digit integer in Hertz), and the used mode.

ABNF Grammar:

B2F_GW_AUTH_CHALLENGE = %x3B %x53 %x51 %x3A SP 8DIGIT CR
B2F_GW_AUTH_RESPONSE  = %x3B %x53 %x52 %x3A SP 8DIGIT SP 10DIGIT SP VCHAR CR

Data transfer

Message structure

A message is structured in 3 parts:

  1. The message header
  2. The message body
  3. Attachments

Message Header

The header contains the message properties, such as its MID, origination date, originator, destination(s), subject, etc. The address header is US-ASCII encoded. Each line is separated by carriage return/line feed (0x0d 0x0a).

Packet headers received from a packet connection may optionally be retained as part of the body of the message. RFC 822 headers received as part of a message from the Internet will be parsed and removed at the point of entry into the Winlink system.

Message Body

The message body MAY NOT be empty. Its content is encoded to the US-ASCII character set.

It is separated from the address header by a single blank line.

The exact length (in characters) of the body of the message is indicated in the address header.

The message body is terminated with a carriage return/line feed character sequence. These two characters are not included in the length of the message body indicated in the address header and are in addition to any carriage return/line feed characters that may be in the body of the message.

The third part of the message is the attachments. There may be any number of attachments. For each attachment, there is a parameter in the address header that includes the exact length of the attachment, the original file name and extension for the attachment. The file name and extension is limited to 50 characters. An attachment is a sequence of 8-bit bytes without restriction. An attachment is always terminated by a carriage return/line feed. The carriage return/line feed sequence is not included in the attachment length indicted in the address header.

ABNF Grammar: