The first naïve approach in a JUnit4:
@Test
public void shouldBeAbleToLoadP12Keystore() throws Exception {
KeyStore store = KeyStore.getInstance( "PKCS12", "BC" );
store.load( IOSCertificateUtilTest.class.getResourceAsStream( "ios_build.p12" ), "notSoShortKeystorePassword".toCharArray() );
}
Note: You might have to install
Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files
.Kudos: Java Security: Illegal key size or default parameters?
java.io.IOException: exception decrypting data - java.security.InvalidKeyException: Illegal key size
On a Mac you could grab your Java 8 JAVA_HOME
like this:
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
or copy the files directly into $(/usr/libexec/java_home -v 1.8)/jre/lib/security
Now with unlimited strength let's dig deeper into the iOS certificate:
...
String certificateName = store.aliases().nextElement();
X509Certificate certificate = ( X509Certificate )store.getCertificate( certificateName );
Principal dn = certificate.getSubjectDN();
String splits[] = dn.toString().split( "," );
for( String s : splits ) {
String[] str = s.trim().split( "=" );
String key = str[ 0 ];
if( key.equals( "CN" ) ) {
System.out.println( "CN - Name: " + str[ 1 ] );
}
if( key.equals( "O" ) ) {
System.out.println( "O - Team name: " + str[ 1 ] );
}
if( key.equals( "OU" ) ) {
System.out.println( "OU - Team ID: " + str[ 1 ] );
}
}
Nice little utility to check some of the main information of an (iOS) certificate.