From f781b17e744a6b775e13e40c5ff7fde75f41840a Mon Sep 17 00:00:00 2001 From: Jordan Rose Date: Mon, 27 Feb 2023 12:24:35 -0800 Subject: [PATCH] swift: Update to the current version of cbindgen ...which handles enum variants slightly differently under the configuration options we have ('remove_underscores', relevant for generic types rather than enum variants). The new style is closer to Apple-idiomatic anyway. --- .github/workflows/build_and_test.yml | 7 -- .../LibSignalClient/DataStoreUtils.swift | 4 +- swift/Sources/LibSignalClient/Error.swift | 64 ++++++------- swift/Sources/LibSignalClient/Logging.m | 22 ++--- .../LibSignalClient/SealedSender.swift | 6 +- .../messages/CiphertextMessage.swift | 8 +- swift/Sources/SignalFfi/signal_ffi.h | 96 +++++++++---------- .../LibSignalClientTests/TestCaseBase.swift | 2 +- 8 files changed, 101 insertions(+), 108 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index faae527b..bf2515aa 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -7,7 +7,6 @@ on: env: CARGO_TERM_COLOR: always - CBINDGEN_VERSION: 0.20.0 NDK_VERSION: 25.2.9519653 RUST_BACKTRACE: 1 @@ -171,9 +170,6 @@ jobs: - run: rustup toolchain install $(cat rust-toolchain) --profile minimal --target aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android,i686-linux-android - - name: Install pinned cbindgen - run: cargo +stable install cbindgen --version ${CBINDGEN_VERSION} - - name: Verify that the JNI bindings are up to date run: rust/bridge/jni/bin/gen_java_decl.py --verify @@ -245,9 +241,6 @@ jobs: - run: rustup toolchain install $(cat rust-toolchain) --profile minimal - - name: Install pinned cbindgen - run: cargo +stable install cbindgen --version ${CBINDGEN_VERSION} - - name: Build libsignal-ffi run: swift/build_ffi.sh -d -v --verify-ffi diff --git a/swift/Sources/LibSignalClient/DataStoreUtils.swift b/swift/Sources/LibSignalClient/DataStoreUtils.swift index 9dc150a6..41943071 100644 --- a/swift/Sources/LibSignalClient/DataStoreUtils.swift +++ b/swift/Sources/LibSignalClient/DataStoreUtils.swift @@ -122,9 +122,9 @@ internal func withIdentityKeyStore(_ store: IdentityKeyStore, _ body: (U defer { cloneOrForgetAsNeeded(&public_key) } let direction: Direction switch SignalDirection(raw_direction) { - case SignalDirection_Sending: + case SignalDirectionSending: direction = .sending - case SignalDirection_Receiving: + case SignalDirectionReceiving: direction = .receiving default: assertionFailure("unexpected direction value") diff --git a/swift/Sources/LibSignalClient/Error.swift b/swift/Sources/LibSignalClient/Error.swift index bef8e586..26b64a06 100644 --- a/swift/Sources/LibSignalClient/Error.swift +++ b/swift/Sources/LibSignalClient/Error.swift @@ -59,75 +59,75 @@ internal func checkError(_ error: SignalFfiErrorRef?) throws { defer { signal_error_free(error) } switch SignalErrorCode(errType) { - case SignalErrorCode_InvalidState: + case SignalErrorCodeInvalidState: throw SignalError.invalidState(errStr) - case SignalErrorCode_InternalError: + case SignalErrorCodeInternalError: throw SignalError.internalError(errStr) - case SignalErrorCode_NullParameter: + case SignalErrorCodeNullParameter: throw SignalError.nullParameter(errStr) - case SignalErrorCode_InvalidArgument: + case SignalErrorCodeInvalidArgument: throw SignalError.invalidArgument(errStr) - case SignalErrorCode_InvalidType: + case SignalErrorCodeInvalidType: throw SignalError.invalidType(errStr) - case SignalErrorCode_InvalidUtf8String: + case SignalErrorCodeInvalidUtf8String: throw SignalError.invalidUtf8String(errStr) - case SignalErrorCode_ProtobufError: + case SignalErrorCodeProtobufError: throw SignalError.protobufError(errStr) - case SignalErrorCode_LegacyCiphertextVersion: + case SignalErrorCodeLegacyCiphertextVersion: throw SignalError.legacyCiphertextVersion(errStr) - case SignalErrorCode_UnknownCiphertextVersion: + case SignalErrorCodeUnknownCiphertextVersion: throw SignalError.unknownCiphertextVersion(errStr) - case SignalErrorCode_UnrecognizedMessageVersion: + case SignalErrorCodeUnrecognizedMessageVersion: throw SignalError.unrecognizedMessageVersion(errStr) - case SignalErrorCode_InvalidMessage: + case SignalErrorCodeInvalidMessage: throw SignalError.invalidMessage(errStr) - case SignalErrorCode_FingerprintParsingError: + case SignalErrorCodeFingerprintParsingError: throw SignalError.fingerprintParsingError(errStr) - case SignalErrorCode_SealedSenderSelfSend: + case SignalErrorCodeSealedSenderSelfSend: throw SignalError.sealedSenderSelfSend(errStr) - case SignalErrorCode_InvalidKey: + case SignalErrorCodeInvalidKey: throw SignalError.invalidKey(errStr) - case SignalErrorCode_InvalidSignature: + case SignalErrorCodeInvalidSignature: throw SignalError.invalidSignature(errStr) - case SignalErrorCode_FingerprintVersionMismatch: + case SignalErrorCodeFingerprintVersionMismatch: throw SignalError.fingerprintVersionMismatch(errStr) - case SignalErrorCode_UntrustedIdentity: + case SignalErrorCodeUntrustedIdentity: throw SignalError.untrustedIdentity(errStr) - case SignalErrorCode_InvalidKeyIdentifier: + case SignalErrorCodeInvalidKeyIdentifier: throw SignalError.invalidKeyIdentifier(errStr) - case SignalErrorCode_SessionNotFound: + case SignalErrorCodeSessionNotFound: throw SignalError.sessionNotFound(errStr) - case SignalErrorCode_InvalidSession: + case SignalErrorCodeInvalidSession: throw SignalError.invalidSession(errStr) - case SignalErrorCode_InvalidRegistrationId: + case SignalErrorCodeInvalidRegistrationId: let address: ProtocolAddress = try invokeFnReturningNativeHandle { signal_error_get_address(error, $0) } throw SignalError.invalidRegistrationId(address: address, message: errStr) - case SignalErrorCode_InvalidSenderKeySession: + case SignalErrorCodeInvalidSenderKeySession: let distributionId = try invokeFnReturningUuid { signal_error_get_uuid(error, $0) } throw SignalError.invalidSenderKeySession(distributionId: distributionId, message: errStr) - case SignalErrorCode_DuplicatedMessage: + case SignalErrorCodeDuplicatedMessage: throw SignalError.duplicatedMessage(errStr) - case SignalErrorCode_VerificationFailure: + case SignalErrorCodeVerificationFailure: throw SignalError.verificationFailed(errStr) - case SignalErrorCode_UsernameCannotBeEmpty: + case SignalErrorCodeUsernameCannotBeEmpty: throw SignalError.cannotBeEmpty(errStr) - case SignalErrorCode_UsernameCannotStartWithDigit: + case SignalErrorCodeUsernameCannotStartWithDigit: throw SignalError.cannotStartWithDigit(errStr) - case SignalErrorCode_UsernameMissingSeparator: + case SignalErrorCodeUsernameMissingSeparator: throw SignalError.missingSeparator(errStr) - case SignalErrorCode_UsernameBadDiscriminator: + case SignalErrorCodeUsernameBadDiscriminator: throw SignalError.badDiscriminator(errStr) - case SignalErrorCode_UsernameBadCharacter: + case SignalErrorCodeUsernameBadCharacter: throw SignalError.badNicknameCharacter(errStr) - case SignalErrorCode_UsernameTooShort: + case SignalErrorCodeUsernameTooShort: throw SignalError.nicknameTooShort(errStr) - case SignalErrorCode_UsernameTooLong: + case SignalErrorCodeUsernameTooLong: throw SignalError.nicknameTooLong(errStr) - case SignalErrorCode_CallbackError: + case SignalErrorCodeCallbackError: throw SignalError.callbackError(errStr) default: throw SignalError.unknown(errType, errStr) diff --git a/swift/Sources/LibSignalClient/Logging.m b/swift/Sources/LibSignalClient/Logging.m index dd167d32..8c4bed57 100644 --- a/swift/Sources/LibSignalClient/Logging.m +++ b/swift/Sources/LibSignalClient/Logging.m @@ -9,15 +9,15 @@ static bool isEnabled(const char *_Nonnull target, SignalLogLevel level) { switch (level) { - case SignalLogLevel_Error: + case SignalLogLevelError: return ShouldLogError(); - case SignalLogLevel_Warn: + case SignalLogLevelWarn: return ShouldLogWarning(); - case SignalLogLevel_Info: + case SignalLogLevelInfo: return ShouldLogInfo(); - case SignalLogLevel_Debug: + case SignalLogLevelDebug: return ShouldLogDebug(); - case SignalLogLevel_Trace: + case SignalLogLevelTrace: return ShouldLogVerbose(); default: return ShouldLogError(); @@ -43,19 +43,19 @@ static void logMessage(const char *_Nonnull target, } switch (level) { - case SignalLogLevel_Error: + case SignalLogLevelError: [OWSLogger error:formattedMessage]; break; - case SignalLogLevel_Warn: + case SignalLogLevelWarn: [OWSLogger warn:formattedMessage]; break; - case SignalLogLevel_Info: + case SignalLogLevelInfo: [OWSLogger info:formattedMessage]; break; - case SignalLogLevel_Debug: + case SignalLogLevelDebug: [OWSLogger debug:formattedMessage]; break; - case SignalLogLevel_Trace: + case SignalLogLevelTrace: [OWSLogger verbose:formattedMessage]; break; default: @@ -72,7 +72,7 @@ static void flush() __attribute__((constructor)) static void initLogging() { @autoreleasepool { - SignalLogLevel logLevel = ShouldLogDebug() ? SignalLogLevel_Trace : SignalLogLevel_Info; + SignalLogLevel logLevel = ShouldLogDebug() ? SignalLogLevelTrace : SignalLogLevelInfo; signal_init_logger(logLevel, (SignalFfiLogger) { .enabled = isEnabled, .log = logMessage, .flush = flush }); } } diff --git a/swift/Sources/LibSignalClient/SealedSender.swift b/swift/Sources/LibSignalClient/SealedSender.swift index d1beb192..86b25038 100644 --- a/swift/Sources/LibSignalClient/SealedSender.swift +++ b/swift/Sources/LibSignalClient/SealedSender.swift @@ -39,13 +39,13 @@ public class UnidentifiedSenderMessageContent: NativeHandleOwner { } public static var `default`: Self { - return Self(SignalContentHint_Default) + return Self(SignalContentHintDefault) } public static var resendable: Self { - return Self(SignalContentHint_Resendable) + return Self(SignalContentHintResendable) } public static var implicit: Self { - return Self(SignalContentHint_Implicit) + return Self(SignalContentHintImplicit) } } diff --git a/swift/Sources/LibSignalClient/messages/CiphertextMessage.swift b/swift/Sources/LibSignalClient/messages/CiphertextMessage.swift index 7909d892..0bd4c8b4 100644 --- a/swift/Sources/LibSignalClient/messages/CiphertextMessage.swift +++ b/swift/Sources/LibSignalClient/messages/CiphertextMessage.swift @@ -17,16 +17,16 @@ public class CiphertextMessage: NativeHandleOwner { } public static var whisper: Self { - return Self(SignalCiphertextMessageType_Whisper) + return Self(SignalCiphertextMessageTypeWhisper) } public static var preKey: Self { - return Self(SignalCiphertextMessageType_PreKey) + return Self(SignalCiphertextMessageTypePreKey) } public static var senderKey: Self { - return Self(SignalCiphertextMessageType_SenderKey) + return Self(SignalCiphertextMessageTypeSenderKey) } public static var plaintext: Self { - return Self(SignalCiphertextMessageType_Plaintext) + return Self(SignalCiphertextMessageTypePlaintext) } } diff --git a/swift/Sources/SignalFfi/signal_ffi.h b/swift/Sources/SignalFfi/signal_ffi.h index fca9c6aa..2affcfb0 100644 --- a/swift/Sources/SignalFfi/signal_ffi.h +++ b/swift/Sources/SignalFfi/signal_ffi.h @@ -114,66 +114,66 @@ SPDX-License-Identifier: AGPL-3.0-only #define SignalSECONDS_PER_DAY 86400 typedef enum { - SignalCiphertextMessageType_Whisper = 2, - SignalCiphertextMessageType_PreKey = 3, - SignalCiphertextMessageType_SenderKey = 7, - SignalCiphertextMessageType_Plaintext = 8, + SignalCiphertextMessageTypeWhisper = 2, + SignalCiphertextMessageTypePreKey = 3, + SignalCiphertextMessageTypeSenderKey = 7, + SignalCiphertextMessageTypePlaintext = 8, } SignalCiphertextMessageType; typedef enum { - SignalContentHint_Default = 0, - SignalContentHint_Resendable = 1, - SignalContentHint_Implicit = 2, + SignalContentHintDefault = 0, + SignalContentHintResendable = 1, + SignalContentHintImplicit = 2, } SignalContentHint; typedef enum { - SignalDirection_Sending = 0, - SignalDirection_Receiving = 1, + SignalDirectionSending = 0, + SignalDirectionReceiving = 1, } SignalDirection; typedef enum { - SignalLogLevel_Error = 1, - SignalLogLevel_Warn, - SignalLogLevel_Info, - SignalLogLevel_Debug, - SignalLogLevel_Trace, + SignalLogLevelError = 1, + SignalLogLevelWarn, + SignalLogLevelInfo, + SignalLogLevelDebug, + SignalLogLevelTrace, } SignalLogLevel; typedef enum { - SignalErrorCode_UnknownError = 1, - SignalErrorCode_InvalidState = 2, - SignalErrorCode_InternalError = 3, - SignalErrorCode_NullParameter = 4, - SignalErrorCode_InvalidArgument = 5, - SignalErrorCode_InvalidType = 6, - SignalErrorCode_InvalidUtf8String = 7, - SignalErrorCode_ProtobufError = 10, - SignalErrorCode_LegacyCiphertextVersion = 21, - SignalErrorCode_UnknownCiphertextVersion = 22, - SignalErrorCode_UnrecognizedMessageVersion = 23, - SignalErrorCode_InvalidMessage = 30, - SignalErrorCode_SealedSenderSelfSend = 31, - SignalErrorCode_InvalidKey = 40, - SignalErrorCode_InvalidSignature = 41, - SignalErrorCode_InvalidAttestationData = 42, - SignalErrorCode_FingerprintVersionMismatch = 51, - SignalErrorCode_FingerprintParsingError = 52, - SignalErrorCode_UntrustedIdentity = 60, - SignalErrorCode_InvalidKeyIdentifier = 70, - SignalErrorCode_SessionNotFound = 80, - SignalErrorCode_InvalidRegistrationId = 81, - SignalErrorCode_InvalidSession = 82, - SignalErrorCode_InvalidSenderKeySession = 83, - SignalErrorCode_DuplicatedMessage = 90, - SignalErrorCode_CallbackError = 100, - SignalErrorCode_VerificationFailure = 110, - SignalErrorCode_UsernameCannotBeEmpty = 120, - SignalErrorCode_UsernameCannotStartWithDigit = 121, - SignalErrorCode_UsernameMissingSeparator = 122, - SignalErrorCode_UsernameBadDiscriminator = 123, - SignalErrorCode_UsernameBadCharacter = 124, - SignalErrorCode_UsernameTooShort = 125, - SignalErrorCode_UsernameTooLong = 126, + SignalErrorCodeUnknownError = 1, + SignalErrorCodeInvalidState = 2, + SignalErrorCodeInternalError = 3, + SignalErrorCodeNullParameter = 4, + SignalErrorCodeInvalidArgument = 5, + SignalErrorCodeInvalidType = 6, + SignalErrorCodeInvalidUtf8String = 7, + SignalErrorCodeProtobufError = 10, + SignalErrorCodeLegacyCiphertextVersion = 21, + SignalErrorCodeUnknownCiphertextVersion = 22, + SignalErrorCodeUnrecognizedMessageVersion = 23, + SignalErrorCodeInvalidMessage = 30, + SignalErrorCodeSealedSenderSelfSend = 31, + SignalErrorCodeInvalidKey = 40, + SignalErrorCodeInvalidSignature = 41, + SignalErrorCodeInvalidAttestationData = 42, + SignalErrorCodeFingerprintVersionMismatch = 51, + SignalErrorCodeFingerprintParsingError = 52, + SignalErrorCodeUntrustedIdentity = 60, + SignalErrorCodeInvalidKeyIdentifier = 70, + SignalErrorCodeSessionNotFound = 80, + SignalErrorCodeInvalidRegistrationId = 81, + SignalErrorCodeInvalidSession = 82, + SignalErrorCodeInvalidSenderKeySession = 83, + SignalErrorCodeDuplicatedMessage = 90, + SignalErrorCodeCallbackError = 100, + SignalErrorCodeVerificationFailure = 110, + SignalErrorCodeUsernameCannotBeEmpty = 120, + SignalErrorCodeUsernameCannotStartWithDigit = 121, + SignalErrorCodeUsernameMissingSeparator = 122, + SignalErrorCodeUsernameBadDiscriminator = 123, + SignalErrorCodeUsernameBadCharacter = 124, + SignalErrorCodeUsernameTooShort = 125, + SignalErrorCodeUsernameTooLong = 126, } SignalErrorCode; /** diff --git a/swift/Tests/LibSignalClientTests/TestCaseBase.swift b/swift/Tests/LibSignalClientTests/TestCaseBase.swift index 362f8e80..47017043 100644 --- a/swift/Tests/LibSignalClientTests/TestCaseBase.swift +++ b/swift/Tests/LibSignalClientTests/TestCaseBase.swift @@ -16,7 +16,7 @@ class TestCaseBase: XCTestCase { #if canImport(SignalCoreKit) DDLog.add(DDOSLogger.sharedInstance) #else - signal_init_logger(SignalLogLevel_Trace, .init( + signal_init_logger(SignalLogLevelTrace, .init( enabled: { _, _ in true }, log: { _, level, file, line, message in let file = file.map { String(cString: $0) } ?? ""