私はopenssl rsa関数を使用して暗号文を解読しました。いくつかのコードは次のようになります:
+ (NSString *)RsaDecryptWithPrivateKey:(NSString *)encryptedString {
void *encrypt = NULL; // Encrypted message
char *decrypt = NULL; // Decrypted message
char *err = NULL; // Buffer for any error messages
BIO *bio = BIO_new_mem_buf((char *)prikey, -1);
RSA *prikey = PEM_read_bio_RSAPrivateKey(bio, NULL, NULL, NULL);
encrypt = malloc(RSA_size(prikey));
NSData *encryptedData = [NSData dataFromBase64String:encryptedString];
int encryptedData_length = (int)[encryptedData length];
encrypt = (void *)[encryptedData bytes];
decrypt = malloc(encryptedData_length);
memset(decrypt, 0, encryptedData_length);
if(RSA_private_decrypt(encryptedData_length,
(unsigned char*)encrypt,
(unsigned char*)decrypt,
prikey, RSA_PKCS1_OAEP_PADDING) == -1) {
ERR_load_crypto_strings();
ERR_error_string(ERR_get_error(), err);
goto free_stuff;
}
return [[NSString alloc] initWithBytes:decrypt length:strlen(decrypt) encoding:NSUTF8StringEncoding];
free_stuff:
RSA_free(prikey);
free(encrypt);
free(decrypt);
free(err);
}
それは正常に動作します。ただし、Instrument を使用してリークを追跡すると、次のような警告が表示されます。
問題の解き方がわからないのですが、どなたかアドバイスいただけないでしょうか?