b2f:b2f
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
b2f:b2f [2025/02/15 08:27] – created f4hof | b2f:b2f [2025/03/09 17:46] (current) – [Secure Gateway Login] f4hof | ||
---|---|---|---|
Line 5: | Line 5: | ||
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. | 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 is an extension of the original FBB amateur packet protocol that was aimed at the manual keyboard user. [[b2f: |
+ | |||
+ | The B2F protocol MUST operate over a [[https:// | ||
===== Commands ===== | ===== Commands ===== | ||
+ | ==== Message pending proposal ==== | ||
+ | The '' | ||
+ | |||
+ | Other message types may be added in the future. | ||
+ | |||
+ | Standard messages of type Private or Bulletin MAY be proposed using either the lower level '' | ||
+ | |||
+ | Unlike '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | <code abnf> | ||
+ | ; Proposal Code: " | ||
+ | B2F_PROPCODE = %x46 %x43 | ||
+ | |||
+ | ; Message type. CM = WinLink Control Message, EM = Encapsulated Message | ||
+ | B2F_TYPE | ||
+ | |||
+ | ; Unique Message ID | ||
+ | B2F_MID | ||
+ | |||
+ | ; Uncompressed size | ||
+ | B2F_USIZE | ||
+ | |||
+ | ; Compressed size | ||
+ | B2F_CSIZE | ||
+ | |||
+ | ; 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. | ||
+ | < | ||
+ | |||
+ | ABNF Grammar: | ||
+ | |||
+ | <code abnf> | ||
+ | CALLSIGN | ||
+ | B2F_CALLER_ID = %x3b %x46 %x57 SP CALLSIGN CR | ||
+ | </ | ||
+ | |||
+ | ==== Secure login ==== | ||
+ | The exchange happens after the SID has been transmitted. | ||
+ | |||
+ | The server sends a ''; | ||
+ | |||
+ | < | ||
+ | |||
+ | The client computes the response using the following pseudocode: | ||
+ | |||
+ | <code c> | ||
+ | S3CRYPT: | ||
+ | rDi8K8JsOww7bCixErw4fCgcKBA8Oew6TDm8Kcw4YhNRdjAgwt | ||
+ | VcK2w6MdwpNhwppnw4QbX0HDkSbCgHM8w5I0w78NCsOOwrnCuG | ||
+ | zDq8O0w5oNw5lNw6DCscOHSAlwwowSwqvDlMKAKw7DrMKGAHsp | ||
+ | BCwMd8KjXmjDrMO7RTUTXlRqSU3CvsK4T8K2XT/ | ||
+ | bCvD4/ | ||
+ | Yj1UwpRGwq5macOqwqFrfH0Dw5Fgw4bDoDzCp8KKR8Ouw7PDmD | ||
+ | gFwpVbwovCqsOVeMOSGsKaUMOUwppHw63DhDdqCcKXNsKcTi1i | ||
+ | DS4aCMOnw4Uew44BWwQ0wroUJcO7w4VqdMO1XcO7wqZYGMOAP8 | ||
+ | KXwqdSwpprw4jClcKOFQPCkFQNwpt6bMKCw7TCisOTw7vDtcOc | ||
+ | LMOzMyXDih5KZMKBw64zw4LChGzCtjPDrMO/ | ||
+ | Ncwq3Cm8KGw7bCj8Oaw53Do3nCs8O6bcKQwqDCvV7CgSXCusKX | ||
+ | wrLCgMK0ewnDpBLDrMKcCsKXb8Khw4TCrcOBA2DCnx0xLsKEMs | ||
+ | OZfMK9OMKRw7pDw4fDrn1BdWXDqkLChHRlwqrDrSbDi8O5K0HD | ||
+ | qBFQw5kCw4NdSRvDnAopU05gaEAHSBfCm8KYw5vCnMKxZTLCuz | ||
+ | 48wp0Owo0Zw6vCrsOuw5XCtsK2c8KzdcKwwq03w7TDt8KIw7Qh | ||
+ | w7nCusOUNMOaXlLCjAQ0aMOjw4nDpGpWwp5XAk5pwr/ | ||
+ | 7DjcOcw4jCplzCpsOkERPDskjCvnlFw7IJwqzCsBkGOg08wqzC | ||
+ | gMKXw4M4w6/ | ||
+ | 7Dq29AMR7DusOjFsOpw7sFwqnDsUnCgMO0eMKTwpXDtjjCicO+ | ||
+ | Q8KTLMOAwqrDjjEsw7vDmT1dKcOMCcKKw4wUwofDgcKkERBrw5 | ||
+ | ZNw4kUwqfDl8OdXWXDpsOGLMK6w57DgxPCqcKdw6jDnAfDqMOt | ||
+ | wogDRwLCo8O7JyLDssOaPVHCscKVAHjDq8KMMcOUa8KFwp3DgX | ||
+ | PCisKRw60QwpLCnMODYsKowqrCoDh4AsORLcKjcDBPJcOCKsOi | ||
+ | Amx9UMK9woLClsOMEMKvwqJKCz0iN1JvGjfDuxLChWkcTH3DjM | ||
+ | OowpkFw7fDkDjCiC/ | ||
+ | wq9/ | ||
+ | llwo3DtkvDpVk/ | ||
+ | DMO4wrBswrTCoG0ZwrrDv8KqwovCri0AMsKFw5lJIsOraARJwp | ||
+ | zDncKSS1DDhUpIwrULwp7CocOfMD3CmmPCjsOddsOTN2vDh8Ky | ||
+ | FcK+wqPCpkhQw5N9Fkl0wq/ | ||
+ | KEW00Tw7rCuMOzO8KsOkLCvsKiwp7CtcKhwqrCiMOiwpnDihIs | ||
+ | wrDDocKPw7PDmy3CosKSEDECw53CuUM5woHDg8O8NhdPwrHCv8 | ||
+ | OGwq1cBiN4wqbCgjtDb8OYLsOQw5PCr8KNI0jDgTlDbAw6e3/ | ||
+ | oMO6w751DcODwpI9wpINJzfCssOWw5TCmFUTBVnCoBcXclIawq | ||
+ | LCoMOzwoERPAvDnThSwoTDvSl2PU8NwojCpF3DuRjDmcK1w7zC | ||
+ | oXBjccKIwrHCiMKvD3HDlcOdY2Ygw67Co2nDo8KAwrzDkcKvwq | ||
+ | gdcUNjw6TDpMO/ | ||
+ | w4oywp7Dog8ZTcKcw5MMw6JYw4TDhMO5w6fDow9Bw6HCuVFYw6 | ||
+ | jDmUURJsK8PsKqUHLCo2rDsB/ | ||
+ | </ | ||
+ | |||
+ | The result is then sent to the server using the following format: | ||
+ | |||
+ | < | ||
+ | |||
+ | ABNF Grammar: | ||
+ | |||
+ | <code abnf> | ||
+ | B2F_AUTH_CHALLENGE = %x3B %x50 %x51 %x3A SP 8DIGIT CR | ||
+ | B2F_AUTH_RESPONSE | ||
+ | </ | ||
+ | |||
+ | Reference source code in [[https:// | ||
+ | |||
+ | ==== Secure Gateway Login ==== | ||
+ | |||
+ | When a RMS connects to a CMS, the latter sends a login challenge with ''; | ||
+ | |||
+ | 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: | ||
+ | |||
+ | <code abnf> | ||
+ | B2F_GW_AUTH_CHALLENGE = %x3B %x53 %x51 %x3A SP 8DIGIT CR | ||
+ | B2F_GW_AUTH_RESPONSE | ||
+ | </ | ||
===== Data transfer ===== | ===== Data transfer ===== | ||
Line 16: | Line 139: | ||
A message is structured in 3 parts: | A message is structured in 3 parts: | ||
+ | - The message header | ||
+ | - The message body | ||
+ | - Attachments | ||
+ | |||
+ | ==== Message Header ==== | ||
+ | |||
+ | The header contains the message properties, such as its MID, origination date, originator, destination(s), | ||
+ | |||
+ | 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 first is the header | + | The third part of the message |
- | The second part is the body of the message, which may not be empty. The body of the message is limited to ASCII characters and 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 body of the message 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. | + | ABNF Grammar: |
- | 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 and 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. | + | <code abnf>< |
b2f/b2f.1739608049.txt.gz · Last modified: 2025/02/15 08:27 by f4hof