1

私は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 を使用してリークを追跡すると、次のような警告が表示されます。 ここに画像の説明を入力

問題の解き方がわからないのですが、どなたかアドバイスいただけないでしょうか?

4

1 に答える 1