for(String password : passwords) { try { pk = PrivateKey.unpackWithPassword(keyBytes,password); break; } catch (PrivateKey.PasswordProtectedException e1) { break; try { pk = PrivateKey.unpackWithPassword(keyBytes, password); break; } catch (PrivateKey.PasswordProtectedException e1) {
@Test public void passwordProtectedJsCompatibilityTest() throws Exception { byte[] encrypted = Base64.decodeCompactString("NhDIoIYBvB1jb20uaWNvZGljaS5jcnlwdG8uUHJpdmF0ZUtleVtITUFDX1NIQTI1NsQaAe01NLf/Ffcye5nVmAOsYV5uy/Q/OXqbVfH4baSo5rgdtYl3xmTrkwfHEerHVjyB/raQcJ6b96k3oVIHu6I/wDtZ3TMkQ8gpjzlEnzOs6LQ+0OzObrjxFfpiXZdPMLzu4XPMSJINSZtkPkSOeBEqItCf2C2CfPgdI1MniiDAN9qmuWMuGkD4o6UgaGfCjy0WGv8vY0rgkkQUanf8ctcIEgbLCcpu2irJY+OUhh1qC+Dwm3uSDFarXC/94i/YWpSbo2Apyxjq6ynpXVyc2aQiOmOf13iHulq5t9eyoqP4uSXL4xHff23onQRnvvc4OC+vbQvHType64zPTxVCFDpw6rlUhT/bEJ6IOh8XhX+LHZeTEuaTy0LXE055xiT1P375"); byte[] packed = Base64.decodeCompactString("JgAcAQABvIEA96FWTEq/Wjmd7kYbx04I/Ax3OQV+6e4YWu7xBr8k/SexvYvFEE3c9dRsZSsEj7KzYrNpIXezCsxO+j1sHADmeojwuveDdQQM6M6fbvygHq/mxKGllDoJTpzX/CnkuXDwC+lpRkkMTIF48GaYDM525951HYW1pAIYaVr+V5ctVQW8gQDGM71OC1yBLv6n23dEuu9Vqna2lvDpEWNO7MgKY0Ri9vUPwp+F+dUiKsRTbjnukDFqiYiNj+jkcWgiXqnjqdAGf9LUWHfF80W1PwUhkFw7torLJfaAr6bZ6FRzGcxTMad0x7Rz+5lkBjliKqOt8AUAIvMVe45G0c0StJSoqdqc4Q=="); PrivateKey pk1 = PrivateKey.unpackWithPassword(encrypted,"some-password"); PrivateKey pk2 = new PrivateKey(packed); assertEquals(pk1,pk2); try { PrivateKey.unpackWithPassword(encrypted,"some-password1"); fail("should throw"); } catch (PrivateKey.PasswordProtectedException e) { } }
@Test public void passwordProtectedKeyTest() throws Exception { PrivateKey key = TestKeys.privateKey(3); String password = UUID.randomUUID().toString(); byte[] packed = key.pack(); byte[] packedWithPassword = key.packWithPassword(password); //try unpack password protected try { new PrivateKey(packedWithPassword); fail("exception expected"); } catch (PrivateKey.PasswordProtectedException e) { assertEquals(e.getMessage(),"key is password protected"); } //try unpack password with wrong password try { PrivateKey.unpackWithPassword(packedWithPassword,UUID.randomUUID().toString()); fail("exception expected"); } catch (PrivateKey.PasswordProtectedException e) { assertEquals(e.getMessage(),"wrong password"); } //try unpack plain key with password assertEquals(PrivateKey.unpackWithPassword(packed,UUID.randomUUID().toString()),key); assertEquals(PrivateKey.unpackWithPassword(packedWithPassword,password),key); }