Skip to content

Instantly share code, notes, and snippets.

@t0mm13b
Last active December 17, 2015 02:08
Show Gist options
  • Save t0mm13b/5533040 to your computer and use it in GitHub Desktop.
Save t0mm13b/5533040 to your computer and use it in GitHub Desktop.
A direct port of java's bouncy castle implementation of PKCS12ParametersGenerator.java (http://java2s.com/Open-Source/Java/Security/Bouncy-Castle/org/bouncycastle/crypto/generators/PKCS12ParametersGenerator.java.htm)
#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonDigest.h>
@interface PKCS12ParametersGenerator : NSObject {
NSInteger keySize;
NSInteger ivSize;
NSInteger iterations;
NSData *salt;
NSString *password;
NSData *derivedKey;
NSData *derivedIV;
uint8_t *ptrPasswordBytes;
uint8_t *ptrSaltBytes;
uint8_t *ptrPasswdPCKS12Bytes;
size_t szPasswordLen;
size_t szSaltLen;
size_t szPasswdPKCS12Len;
}
@property (nonatomic, assign) NSInteger keySize;
@property (nonatomic, assign) NSInteger ivSize;
@property (nonatomic, assign) NSInteger iterations;
@property (nonatomic, assign) NSString *password;
@property (nonatomic, assign) NSData *salt;
@property (nonatomic, retain) NSData *derivedKey;
@property (nonatomic, retain) NSData *derivedIV;
@property (nonatomic, assign) uint8_t *ptrPasswordBytes;
@property (nonatomic, assign) uint8_t *ptrPasswdPCKS12Bytes;
@property (nonatomic, assign) uint8_t *ptrSaltBytes;
@property (nonatomic, assign) size_t szPasswordLen;
@property (nonatomic, assign) size_t szSaltLen;
@property (nonatomic, assign) size_t szPasswdPKCS12Len;
-(id) init :(NSString *)argPassword
saltedHash:(NSData *)argSalt
iterCount:(NSInteger) argIterations
keySize:(NSInteger) argKeySize
initVectSize:(NSInteger) argIVSize;
-(void) dealloc;
-(void) generateDerivedParameters;
-(uint8_t *) pkcs12Password : (uint8_t *)argPtrPassword;
-(unsigned char *)generateDerivedKey :(NSInteger) iMaterialType
byteLen:(NSInteger)argSizeLen;
-(void) adjust :(unsigned char *)a offset:(size_t)aOff buffer:(unsigned char *)B;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment