Skip to content

Commit

Permalink
Fixes NSError** in another file
Browse files Browse the repository at this point in the history
  • Loading branch information
valeriyvan committed Dec 9, 2017
1 parent 6314473 commit 221783b
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 23 deletions.
16 changes: 9 additions & 7 deletions src/wrappers/themis/Obj-C/objcthemis/ssession.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,40 +65,42 @@ NS_ASSUME_NONNULL_BEGIN
* @return Connection initialization message on success or nil on failure
*/
// TODO: rename method to reflect it's goal
- (nullable NSData *)connectRequest:(NSError **)error;
- (nullable NSData *)connectRequest:(NSError * __autoreleasing *)error;


/**
* @brief Create connection initialization message and send it to peer by \b send method from callbacks object.
* @see TSSessionTransportInterface.
*/
* @return YES if success, NO if fail.
/
// TODO: rename method to reflect it's goal
- (void)connect:(NSError **)error;
- (BOOL)connect:(NSError * __autoreleasing *)error;
/** @brief Wrap message
* @param [in] message message to wrap
* @param [in] error pointer to Error on failure
* @return Wrapped message in NSData object on success or nil on failure.
*/
- (nullable NSData *)wrapData:(nullable NSData *)message error:(NSError **)error;
- (nullable NSData *)wrapData:(nullable NSData *)message error:(NSError * __autoreleasing *)error;


/** @brief Unwrap message
* @param [in] message message to unwrap
* @param [in] error pointer to Error on failure
* @return Unwrapped message in NSData object on success or nil on failure.
*/
- (nullable NSData *)unwrapData:(nullable NSData *)message error:(NSError **)error;
- (nullable NSData *)unwrapData:(nullable NSData *)message error:(NSError * __autoreleasing *)error;


/** @brief Wrap message and sent it to peer by \b send method from callbacks object.
* @param [in] message message to wrap
* @param [in] error pointer to Error on failure
* @see TSSessionTransportInterface.
* @return YES if success, NO if fail.
*/
// TODO: rename method to reflect it's goal
- (void)wrapAndSend:(nullable NSData *)message error:(NSError **)error;
- (BOOL)wrapAndSend:(nullable NSData *)message error:(NSError * __autoreleasing *)error;


/** @brief Unwrap received from peer by \b receive method from callbacks object message.
Expand All @@ -108,7 +110,7 @@ NS_ASSUME_NONNULL_BEGIN
* @return Plain message in NSData object on success or nil on failure.
*/
// TODO: rename method to reflect it's goal
- (nullable NSData *)unwrapAndReceive:(NSUInteger)length error:(NSError **)error;
- (nullable NSData *)unwrapAndReceive:(NSUInteger)length error:(NSError * __autoreleasing *)error;


/** @brief indicate session established state.
Expand Down
54 changes: 38 additions & 16 deletions src/wrappers/themis/Obj-C/objcthemis/ssession.m
Original file line number Diff line number Diff line change
Expand Up @@ -39,42 +39,52 @@ - (nullable instancetype)initWithUserId:(NSData *)userId
}


- (void)connect:(NSError **)error {
- (BOOL)connect:(NSError * __autoreleasing *)error {
TSErrorType result = (TSErrorType) secure_session_connect(self.session);
if (result != TSErrorTypeSuccess) {
*error = SCERROR(result, @"Secure Session failed connection");
if (error) {
*error = SCERROR(result, @"Secure Session failed connection");
}
return NO;
}
return YES;
}


- (nullable NSData *)connectRequest:(NSError **)error {
- (nullable NSData *)connectRequest:(NSError * __autoreleasing *)error {
size_t connectRequestLength = 0;
TSErrorType result = (TSErrorType) secure_session_generate_connect_request(self.session, NULL, &connectRequestLength);

if (result != TSErrorTypeBufferTooSmall) {
*error = SCERROR(result, @"Secure Session failed making connection request");
if (error) {
*error = SCERROR(result, @"Secure Session failed making connection request");
}
return nil;
}

NSMutableData * requestData = [[NSMutableData alloc] initWithLength:connectRequestLength];
result = (TSErrorType) secure_session_generate_connect_request(self.session, [requestData mutableBytes], &connectRequestLength);

if (result != TSErrorTypeSuccess) {
*error = SCERROR(result, @"Secure Session failed making connection request");
if (error) {
*error = SCERROR(result, @"Secure Session failed making connection request");
}
return nil;
}
return [requestData copy];
}


- (nullable NSData *)wrapData:(nullable NSData *)message error:(NSError **)error {
- (nullable NSData *)wrapData:(nullable NSData *)message error:(NSError * __autoreleasing *)error {
size_t wrappedMessageLength = 0;

TSErrorType result = (TSErrorType) secure_session_wrap(self.session, [message bytes], [message length],
NULL, &wrappedMessageLength);

if (result != TSErrorTypeBufferTooSmall) {
*error = SCERROR(result, @"Secure Session failed encryption");
if (error) {
*error = SCERROR(result, @"Secure Session failed encryption");
}
return nil;
}

Expand All @@ -83,23 +93,27 @@ - (nullable NSData *)wrapData:(nullable NSData *)message error:(NSError **)error
[wrappedMessage mutableBytes], &wrappedMessageLength);

if (result != TSErrorTypeSuccess) {
*error = SCERROR(result, @"Secure Session failed encryption");
if (error) {
*error = SCERROR(result, @"Secure Session failed encryption");
}
return nil;
}
return [wrappedMessage copy];
}


- (nullable NSData *)unwrapData:(nullable NSData *)message error:(NSError **)error {
- (nullable NSData *)unwrapData:(nullable NSData *)message error:(NSError * __autoreleasing *)error {
size_t unwrappedMessageLength = 0;
TSErrorType result = (TSErrorType) secure_session_unwrap(self.session, [message bytes], [message length],
NULL, &unwrappedMessageLength);

if (result != TSErrorTypeBufferTooSmall) {
if (result == TSErrorTypeSuccess) {
return nil;
return nil; // TODO: This is really strange! Success and returning nil???
}
*error = SCERROR(result, @"Secure Session failed decryption");
if (error) {
*error = SCERROR(result, @"Secure Session failed decryption");
}
return nil;
}

Expand All @@ -112,7 +126,9 @@ - (nullable NSData *)unwrapData:(nullable NSData *)message error:(NSError **)err
return unwrappedMessage;
}
else {
*error = SCERROR(result, @"Secure Session failed decryption");
if (error) {
*error = SCERROR(result, @"Secure Session failed decryption");
}
return nil;
}
}
Expand All @@ -121,21 +137,27 @@ - (nullable NSData *)unwrapData:(nullable NSData *)message error:(NSError **)err
}


- (void)wrapAndSend:(nullable NSData *)message error:(NSError **)error {
- (BOOL)wrapAndSend:(nullable NSData *)message error:(NSError * __autoreleasing *)error {
TSErrorType result = (TSErrorType) secure_session_send(self.session, [message bytes], [message length]);
if (result != TSErrorTypeSuccess) {
*error = SCERROR(result, @"Secure Session failed sending");
if (error) {
*error = SCERROR(result, @"Secure Session failed sending");
}
return NO;
}
return YES;
}


- (nullable NSData *)unwrapAndReceive:(NSUInteger)length error:(NSError **)error {
- (nullable NSData *)unwrapAndReceive:(NSUInteger)length error:(NSError * __autoreleasing *)error {
NSMutableData * receivedData = [[NSMutableData alloc] initWithLength:length];
TSErrorType result = (TSErrorType) secure_session_receive(self.session, [receivedData mutableBytes],
[receivedData length]);

if (result != TSErrorTypeSuccess) {
*error = SCERROR(result, @"Secure Session failed receiving");
if (error) {
*error = SCERROR(result, @"Secure Session failed receiving");
}
return nil;
}
return [receivedData copy];
Expand Down

0 comments on commit 221783b

Please # to comment.