iOS MDM 用の Web アプリケーションを使用しています。その中で、mobileconfig 内のペイロードは、デバイスに送信する前に暗号化されます。Apple のドキュメントでは、例として次のコードが提供されています。Ruby であり、正常に動作しています。しかし、Java で同じものを実装することはできません。
OpenSSL::PKCS7.encrypt(p7sign.certificates,
payload, OpenSSL::Cipher::Cipher::new("des-ede3-cbc"),
OpenSSL::PKCS7::BINARY)
私が使用したJavaコードは次のとおりです。
PublicKey publicKey = x509cert.getPublicKey();
//publinKey is key extracted from iOS device response stream
Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
clearText = payloadContents.getBytes();
//payloadContents are contents to be encrypyted
cipherText = cipher.doFinal(clearText);
これを実行した後のエラーは
java.security.InvalidKeyException: このキーをサポートするプロバイダがインストールされていません。 .crypto.Cipher.init(DashoA13*..)