You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Stepan Mishura (JIRA)" <ji...@apache.org> on 2007/01/23 06:59:49 UTC
[jira] Resolved: (HARMONY-2931) [classlib][security]
KeyStoreSpi.engineLoad(KeyStore.LoadStoreParameter) catches exception
improperly
[ https://issues.apache.org/jira/browse/HARMONY-2931?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stepan Mishura resolved HARMONY-2931.
-------------------------------------
Resolution: Fixed
Thanks Ruth - the patch was applied to SECURITY module at r498927.
Please check that the patch was applied as you expected.
> [classlib][security] KeyStoreSpi.engineLoad(KeyStore.LoadStoreParameter) catches exception improperly
> -----------------------------------------------------------------------------------------------------
>
> Key: HARMONY-2931
> URL: https://issues.apache.org/jira/browse/HARMONY-2931
> Project: Harmony
> Issue Type: Bug
> Components: Classlib
> Reporter: Ruth Cao
> Assigned To: Stepan Mishura
> Attachments: Harmony-2931.diff
>
>
> I mocked a simple KeyStoreSpi and KeyStore.LoadStoreParameter as following:
> class MyKeyStoreSpi extends KeyStoreSpi {
> public Key engineGetKey(String alias, char[] password)
> throws NoSuchAlgorithmException, UnrecoverableKeyException {
> return null;
> }
> public Certificate[] engineGetCertificateChain(String alias) {
> return null;
> }
> public Certificate engineGetCertificate(String alias) {
> return null;
> }
> public Date engineGetCreationDate(String alias) {
> return new Date(0);
> }
> public void engineSetKeyEntry(String alias, Key key, char[] password,
> Certificate[] chain) throws KeyStoreException {
> throw new KeyStoreException(
> "engineSetKeyEntry is not supported in myKeyStoreSpi");
> }
> public void engineSetKeyEntry(String alias, byte[] key, Certificate[] chain)
> throws KeyStoreException {
> throw new KeyStoreException(
> "engineSetKeyEntry is not supported in myKeyStoreSpi");
> }
> public void engineSetCertificateEntry(String alias, Certificate cert)
> throws KeyStoreException {
> throw new KeyStoreException(
> "engineSetCertificateEntry is not supported in myKeyStoreSpi");
> }
> public void engineDeleteEntry(String alias) throws KeyStoreException {
> throw new KeyStoreException(
> "engineDeleteEntry is not supported in myKeyStoreSpi");
> }
> public Enumeration engineAliases() {
> return null;
> }
> public boolean engineContainsAlias(String alias) {
> return false;
> }
> public int engineSize() {
> return 0;
> }
> public boolean engineIsKeyEntry(String alias) {
> return false;
> }
> public boolean engineIsCertificateEntry(String alias) {
> return false;
> }
> public String engineGetCertificateAlias(Certificate cert) {
> return "";
> }
> public void engineStore(OutputStream stream, char[] password)
> throws IOException, NoSuchAlgorithmException, CertificateException {
> if (!(stream instanceof ByteArrayOutputStream)) {
> throw new IOException("Incorrect stream");
> }
> if (((ByteArrayOutputStream) stream).size() == 0) {
> throw new IOException("Incorrect stream size ");
> }
> }
> public void engineLoad(InputStream stream, char[] password)
> throws IOException, NoSuchAlgorithmException, CertificateException {
> throw new IOException();
> }
> }
> class MyLoadStoreParams implements KeyStore.LoadStoreParameter {
> KeyStore.ProtectionParameter protPar;
> public MyLoadStoreParams() {
> }
> public MyLoadStoreParams(KeyStore.ProtectionParameter p) {
> if (p == null) {
> throw new NullPointerException("null parameter");
> }
> this.protPar = p;
> }
> public KeyStore.ProtectionParameter getProtectionParameter() {
> return protPar;
> }
> }
> Run the test below:
> public class KeyStoreSpiTest {
> public static void main(String[] args) throws Exception {
> KeyStore.LoadStoreParameter lParam = new MyLoadStoreParams(new KeyStore.PasswordProtection(new char[0]));
> KeyStoreSpi spi = new MyKeyStoreSpi();
> spi.engineLoad(lParam);
> }
> }
> Harmony throws IllegalArgumentException which does not follow spec. IMO, it should simply throws IOException to indicate there is an I/O problem.
> Finally , thanks for reading so far :-)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.