You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Ruth Cao (JIRA)" <ji...@apache.org> on 2006/12/31 10:21:22 UTC

[jira] Updated: (HARMONY-2931) [classlib][security] KeyStoreSpi.engineLoad(KeyStore.LoadStoreParameter) catches exception improperly

     [ http://issues.apache.org/jira/browse/HARMONY-2931?page=all ]

Ruth Cao updated HARMONY-2931:
------------------------------

    Attachment: Harmony-2931.diff

Would somebody pls try it?

> [classlib][security] KeyStoreSpi.engineLoad(KeyStore.LoadStoreParameter) catches exception improperly
> -----------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-2931
>                 URL: http://issues.apache.org/jira/browse/HARMONY-2931
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Ruth Cao
>         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.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira