//go:build signal_legacy package libsignal /* #include #include #include */ import "C" import "errors" // errModernOMEMOUnavailable is returned whenever the caller asks this // legacy build to do something only libomemo-c can do. var errModernOMEMOUnavailable = errors.New("libsignal: modern OMEMO (protocol v4) requires linking libomemo-c; this build links vanilla libsignal-protocol-c (build tag \"signal_legacy\")") // Vanilla libsignal-protocol-c has no session_builder_set_version / // session_cipher_set_version - it only ever produces/consumes // CIPHERTEXT_CURRENT_VERSION (protocol v3, legacy/siacs OMEMO) messages. // Requesting ProtocolVersionLegacy is a no-op (that's the library's only // behavior); requesting anything else is rejected rather than silently // ignored. func setBuilderVersion(b *C.session_builder, version int) error { if version != ProtocolVersionLegacy { return errModernOMEMOUnavailable } return nil } func setCipherVersion(c *C.session_cipher, version int) error { if version != ProtocolVersionLegacy { return errModernOMEMOUnavailable } return nil }