telegabber/e2ee/omemo/libsignal/version_legacy.go
2026-07-28 20:32:56 -04:00

37 lines
1.1 KiB
Go

//go:build signal_legacy
package libsignal
/*
#include <signal_protocol.h>
#include <session_builder.h>
#include <session_cipher.h>
*/
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 ProtocolVersionV3 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 != ProtocolVersionV3 {
return errModernOMEMOUnavailable
}
return nil
}
func setCipherVersion(c *C.session_cipher, version int) error {
if version != ProtocolVersionV3 {
return errModernOMEMOUnavailable
}
return nil
}