CocoaPods trunk is moving to be read-only. Read more on the blog, there are 14 months to go.
| TestsTested | ✓ | 
| LangLanguage | Obj-CObjective C | 
| License | MIT | 
| ReleasedLast Release | Dec 2016 | 
Maintained by Enrique de la Torre.
ObjC implementation of the AES Key Wrap (RFC 3394) and AES Key Wrap with Padding (RFC 5649) algorithms.
CommonCrypto already offers a couple of functions that implement RFC 3394:
However, it does not offer any functions to wrap with padding (RFC 5649) ... yet.
AesKeyWrap is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "AesKeyWrap"#import <CommonCrypto/CommonCryptor.h>
#import "AKWAesKeyWrap.h"
u_char keyBytes[kCCKeySizeAES192] = {...};
NSData *keyEncryptionKey = [NSData dataWithBytes:keyBytes length:kCCKeySizeAES192];
// AES Key Wrap
u_char plainBytes[2 * sizeof(uint64_t)] = {...};
NSData *expectedPlainData = [NSData dataWithBytes:plainBytes length:sizeof(plainBytes)];
NSData *cipheredData = [AKWAesKeyWrap cipheredDataByWrappingPlainData:expectedPlainData
                                                 withKeyEncryptionKey:keyEncryptionKey
                                                                error:nil];
NSData *plainData = [AKWAesKeyWrap plainDataByUnwrappingCipheredData:cipheredData
                                                withKeyEncryptionKey:keyEncryptionKey
                                                               error:nil];
XCTAssertEqualObjects(expectedPlainData, plainData);
// AES Key Wrap with Padding
u_char plainBytesWithPadding[1] = {...};
expectedPlainData = [NSData dataWithBytes:plainBytesWithPadding length:sizeof(plainBytesWithPadding)];
cipheredData = [AKWAesKeyWrap cipheredDataByWrappingWithPaddingPlainData:expectedPlainData
                                                   usingKeyEncryptionKey:keyEncryptionKey
                                                                   error:nil];
plainData = [AKWAesKeyWrap plainDataByUnwrappingWithPaddingCipheredData:cipheredData
                                                  usingKeyEncryptionKey:keyEncryptionKey
                                                                  error:nil];
XCTAssertEqualObjects(expectedPlainData, plainData);AesKeyWrap is available under the MIT license. See the LICENSE file for more info.