I use MyCrypto library for a IPhone app. The program will comunicate with a web service that is writen by WCF.The service will provide a public key by providing modulus and exponent. Thus, we need use initWithModulus to create a public key. The code is as following.
MYPrivateKey *pair = [[MYKeychain defaultKeychain] generateRSAKeyPairOfSize: 2048];
MYPublicKey *pub = pair.publicKey;
NSData * outModulus;
unsigned outExponent;
[pub getModulus:&outModulus exponent:&outExponent];
MYPublicKey *serverKey = [[MYPublicKey alloc] initWithModulus: outModulus exponent: outExponent];
NSString *tmpStr = @"test!";
NSData *tmpData = [tmpStr dataUsingEncoding: NSASCIIStringEncoding];
NSData *crypted = [serverKey rawEncryptData: tmpData];
NSData *crypted2 = [pub rawEncryptData: tmpData];
For test, I use initWithModulus to create a publickey. Then the same data are encrypted with the original key and the new one. But the lengths of the two encrypted data are different. How shoud I do?
What are the mismatched lengths? When I run this code (in the iOS 4 simulator) it works, and the length of the encrypted data is 256 bytes.
If you try encrypting with the original private key and then decrypting with the reconstituted public key, does that work?