From 4e120a0eeb31241316a4a47b166108a7917bd7a4 Mon Sep 17 00:00:00 2001 From: manuroe Date: Tue, 23 Oct 2018 15:55:52 +0200 Subject: OLMKit: Fix file name case --- xcode/OLMKit/OLMPKEncryption.h | 42 ---------------- xcode/OLMKit/OLMPKEncryption.m | 111 ----------------------------------------- xcode/OLMKit/OLMPkEncryption.h | 42 ++++++++++++++++ xcode/OLMKit/OLMPkEncryption.m | 111 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 153 insertions(+), 153 deletions(-) delete mode 100644 xcode/OLMKit/OLMPKEncryption.h delete mode 100644 xcode/OLMKit/OLMPKEncryption.m create mode 100644 xcode/OLMKit/OLMPkEncryption.h create mode 100644 xcode/OLMKit/OLMPkEncryption.m diff --git a/xcode/OLMKit/OLMPKEncryption.h b/xcode/OLMKit/OLMPKEncryption.h deleted file mode 100644 index a55d5bc..0000000 --- a/xcode/OLMKit/OLMPKEncryption.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright 2018 New Vector Ltd - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0OLMPKEncryption - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -#import - -#import "OLMPkMessage.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface OLMPkEncryption : NSObject - -/** - Set the recipient's public key for encrypting to. - - @param recipientKey the recipient's public key. - */ -- (void)setRecipientKey:(NSString*)recipientKey; - -/** - Encrypt a plaintext for the recipient. - - @param message the message to encrypt. - @param error the error if any. - @return the encrypted message. - */ -- (OLMPkMessage *)encryptMessage:(NSString*)message error:(NSError* _Nullable *)error; - -@end - -NS_ASSUME_NONNULL_END diff --git a/xcode/OLMKit/OLMPKEncryption.m b/xcode/OLMKit/OLMPKEncryption.m deleted file mode 100644 index c2e3d04..0000000 --- a/xcode/OLMKit/OLMPKEncryption.m +++ /dev/null @@ -1,111 +0,0 @@ -/* - Copyright 2018 New Vector Ltd - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -#import "OLMPkEncryption.h" - -#include "olm/olm.h" -#include "olm/pk.h" -#include "OLMUtility.h" - -@interface OLMPkEncryption () -{ - OlmPkEncryption *session; -} -@end - -@implementation OLMPkEncryption - -- (void)dealloc { - olm_clear_pk_encryption(session); - free(session); -} - - -- (instancetype)init { - self = [super init]; - if (self) { - session = (OlmPkEncryption *)malloc(olm_pk_encryption_size()); - olm_pk_encryption(session); - } - return self; -} - -- (void)setRecipientKey:(NSString*)recipientKey { - NSData *recipientKeyData = [recipientKey dataUsingEncoding:NSUTF8StringEncoding]; - olm_pk_encryption_set_recipient_key(session, recipientKeyData.bytes, recipientKeyData.length); -} - -- (OLMPkMessage *)encryptMessage:(NSString *)message error:(NSError *__autoreleasing _Nullable *)error { - NSData *plaintextData = [message dataUsingEncoding:NSUTF8StringEncoding]; - - size_t randomLength = olm_pk_encrypt_random_length(session); - NSMutableData *random = [OLMUtility randomBytesOfLength:randomLength]; - if (!random) { - return nil; - } - - size_t ciphertextLength = olm_pk_ciphertext_length(session, plaintextData.length); - NSMutableData *ciphertext = [NSMutableData dataWithLength:ciphertextLength]; - if (!ciphertext) { - return nil; - } - - size_t macLength = olm_pk_mac_length(session); - NSMutableData *macData = [NSMutableData dataWithLength:macLength]; - if (!ciphertext) { - return nil; - } - - size_t ephemeralKeyLength = olm_pk_key_length(); - NSMutableData *ephemeralKeyData = [NSMutableData dataWithLength:ephemeralKeyLength]; - if (!ciphertext) { - return nil; - } - - size_t result = olm_pk_encrypt(session, - plaintextData.bytes, plaintextData.length, - ciphertext.mutableBytes, ciphertext.length, - macData.mutableBytes, macLength, - ephemeralKeyData.mutableBytes, ephemeralKeyLength, - random.mutableBytes, randomLength); - if (result == olm_error()) { - const char *olm_error = olm_pk_encryption_last_error(session); - - NSString *errorString = [NSString stringWithUTF8String:olm_error]; - NSLog(@"[OLMPkEncryption] encryptMessage: olm_group_encrypt error: %@", errorString); - - if (error && olm_error && errorString) { - *error = [NSError errorWithDomain:OLMErrorDomain - code:0 - userInfo:@{ - NSLocalizedDescriptionKey: errorString, - NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_group_encrypt error: %@", errorString] - }]; - } - - return nil; - } - - OLMPkMessage *encryptedMessage = [[OLMPkMessage alloc] - initWithCiphertext:[[NSString alloc] initWithData:ciphertext encoding:NSUTF8StringEncoding] - mac:[[NSString alloc] initWithData:macData encoding:NSUTF8StringEncoding] - ephemeralKey:[[NSString alloc] initWithData:ephemeralKeyData encoding:NSUTF8StringEncoding]]; - - - return encryptedMessage; -} - -@end diff --git a/xcode/OLMKit/OLMPkEncryption.h b/xcode/OLMKit/OLMPkEncryption.h new file mode 100644 index 0000000..a55d5bc --- /dev/null +++ b/xcode/OLMKit/OLMPkEncryption.h @@ -0,0 +1,42 @@ +/* + Copyright 2018 New Vector Ltd + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0OLMPKEncryption + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +#import "OLMPkMessage.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface OLMPkEncryption : NSObject + +/** + Set the recipient's public key for encrypting to. + + @param recipientKey the recipient's public key. + */ +- (void)setRecipientKey:(NSString*)recipientKey; + +/** + Encrypt a plaintext for the recipient. + + @param message the message to encrypt. + @param error the error if any. + @return the encrypted message. + */ +- (OLMPkMessage *)encryptMessage:(NSString*)message error:(NSError* _Nullable *)error; + +@end + +NS_ASSUME_NONNULL_END diff --git a/xcode/OLMKit/OLMPkEncryption.m b/xcode/OLMKit/OLMPkEncryption.m new file mode 100644 index 0000000..c2e3d04 --- /dev/null +++ b/xcode/OLMKit/OLMPkEncryption.m @@ -0,0 +1,111 @@ +/* + Copyright 2018 New Vector Ltd + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "OLMPkEncryption.h" + +#include "olm/olm.h" +#include "olm/pk.h" +#include "OLMUtility.h" + +@interface OLMPkEncryption () +{ + OlmPkEncryption *session; +} +@end + +@implementation OLMPkEncryption + +- (void)dealloc { + olm_clear_pk_encryption(session); + free(session); +} + + +- (instancetype)init { + self = [super init]; + if (self) { + session = (OlmPkEncryption *)malloc(olm_pk_encryption_size()); + olm_pk_encryption(session); + } + return self; +} + +- (void)setRecipientKey:(NSString*)recipientKey { + NSData *recipientKeyData = [recipientKey dataUsingEncoding:NSUTF8StringEncoding]; + olm_pk_encryption_set_recipient_key(session, recipientKeyData.bytes, recipientKeyData.length); +} + +- (OLMPkMessage *)encryptMessage:(NSString *)message error:(NSError *__autoreleasing _Nullable *)error { + NSData *plaintextData = [message dataUsingEncoding:NSUTF8StringEncoding]; + + size_t randomLength = olm_pk_encrypt_random_length(session); + NSMutableData *random = [OLMUtility randomBytesOfLength:randomLength]; + if (!random) { + return nil; + } + + size_t ciphertextLength = olm_pk_ciphertext_length(session, plaintextData.length); + NSMutableData *ciphertext = [NSMutableData dataWithLength:ciphertextLength]; + if (!ciphertext) { + return nil; + } + + size_t macLength = olm_pk_mac_length(session); + NSMutableData *macData = [NSMutableData dataWithLength:macLength]; + if (!ciphertext) { + return nil; + } + + size_t ephemeralKeyLength = olm_pk_key_length(); + NSMutableData *ephemeralKeyData = [NSMutableData dataWithLength:ephemeralKeyLength]; + if (!ciphertext) { + return nil; + } + + size_t result = olm_pk_encrypt(session, + plaintextData.bytes, plaintextData.length, + ciphertext.mutableBytes, ciphertext.length, + macData.mutableBytes, macLength, + ephemeralKeyData.mutableBytes, ephemeralKeyLength, + random.mutableBytes, randomLength); + if (result == olm_error()) { + const char *olm_error = olm_pk_encryption_last_error(session); + + NSString *errorString = [NSString stringWithUTF8String:olm_error]; + NSLog(@"[OLMPkEncryption] encryptMessage: olm_group_encrypt error: %@", errorString); + + if (error && olm_error && errorString) { + *error = [NSError errorWithDomain:OLMErrorDomain + code:0 + userInfo:@{ + NSLocalizedDescriptionKey: errorString, + NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:@"olm_group_encrypt error: %@", errorString] + }]; + } + + return nil; + } + + OLMPkMessage *encryptedMessage = [[OLMPkMessage alloc] + initWithCiphertext:[[NSString alloc] initWithData:ciphertext encoding:NSUTF8StringEncoding] + mac:[[NSString alloc] initWithData:macData encoding:NSUTF8StringEncoding] + ephemeralKey:[[NSString alloc] initWithData:ephemeralKeyData encoding:NSUTF8StringEncoding]]; + + + return encryptedMessage; +} + +@end -- cgit v1.2.3