| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /** |
| * @author Vladimir N. Molotkov |
| * @version $Revision$ |
| */ |
| |
| package org.apache.harmony.security.tests.java.security; |
| |
| import dalvik.annotation.TestTargetClass; |
| import dalvik.annotation.TestTargets; |
| import dalvik.annotation.TestLevel; |
| import dalvik.annotation.TestTargetNew; |
| |
| import java.io.NotSerializableException; |
| import java.io.ObjectStreamException; |
| import java.security.KeyRep; |
| import java.security.Security; |
| import java.util.Iterator; |
| import java.util.Set; |
| |
| import junit.framework.TestCase; |
| @TestTargetClass(KeyRep.class) |
| /** |
| * |
| * |
| */ |
| public class KeyRepTest extends TestCase { |
| |
| private static final Set<String> keyFactoryAlgorithm; |
| static { |
| keyFactoryAlgorithm = Security.getAlgorithms("KeyFactory"); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "", |
| method = "KeyRep", |
| args = {java.security.KeyRep.Type.class, java.lang.String.class, java.lang.String.class, byte[].class} |
| ) |
| public final void testKeyRep01() { |
| try { |
| assertNotNull(new KeyRep(KeyRep.Type.SECRET, "", "", new byte[] {})); |
| } catch (Exception e) { |
| fail("Unexpected exception " + e.getMessage()); |
| } |
| |
| try { |
| assertNotNull(new KeyRep(KeyRep.Type.PUBLIC, "", "", new byte[] {})); |
| } catch (Exception e) { |
| fail("Unexpected exception " + e.getMessage()); |
| } |
| |
| try { |
| assertNotNull(new KeyRep(KeyRep.Type.PRIVATE, "", "", new byte[] {})); |
| } catch (Exception e) { |
| fail("Unexpected exception " + e.getMessage()); |
| } |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "", |
| method = "KeyRep", |
| args = {java.security.KeyRep.Type.class, java.lang.String.class, java.lang.String.class, byte[].class} |
| ) |
| public final void testKeyRep02() { |
| try { |
| new KeyRep(null, "", "", new byte[] {}); |
| fail("NullPointerException has not been thrown (type)"); |
| } catch (NullPointerException ok) { |
| |
| } |
| try { |
| new KeyRep(KeyRep.Type.SECRET, null, "", new byte[] {}); |
| fail("NullPointerException has not been thrown (alg)"); |
| } catch (NullPointerException ok) { |
| |
| } |
| try { |
| new KeyRep(KeyRep.Type.PRIVATE, "", null, new byte[] {}); |
| fail("NullPointerException has not been thrown (format)"); |
| } catch (NullPointerException ok) { |
| |
| } |
| try { |
| new KeyRep(KeyRep.Type.PUBLIC, "", "", null); |
| fail("NullPointerException has not been thrown (encoding)"); |
| } catch (NullPointerException ok) { |
| |
| } |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "", |
| method = "readResolve", |
| args = {} |
| ) |
| public final void testReadResolve01() throws ObjectStreamException { |
| KeyRepChild kr = new KeyRepChild(KeyRep.Type.SECRET, "", "", |
| new byte[] {}); |
| try { |
| kr.readResolve(); |
| fail("NotSerializableException has not been thrown (no format)"); |
| } catch (NotSerializableException ok) { |
| |
| } |
| |
| kr = new KeyRepChild(KeyRep.Type.SECRET, "", "X.509", new byte[] {}); |
| try { |
| kr.readResolve(); |
| fail("NotSerializableException has not been thrown (unacceptable format)"); |
| } catch (NotSerializableException ok) { |
| |
| } |
| |
| kr = new KeyRepChild(KeyRep.Type.SECRET, "", "RAW", new byte[] {}); |
| try { |
| kr.readResolve(); |
| fail("NotSerializableException has not been thrown (empty key)"); |
| } catch (NotSerializableException ok) { |
| |
| } |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "", |
| method = "readResolve", |
| args = {} |
| ) |
| public final void testReadResolve02() throws ObjectStreamException { |
| KeyRepChild kr = new KeyRepChild(KeyRep.Type.PUBLIC, "", "", |
| new byte[] {}); |
| try { |
| kr.readResolve(); |
| fail("NotSerializableException has not been thrown (no format)"); |
| } catch (NotSerializableException ok) { |
| |
| } |
| |
| kr = new KeyRepChild(KeyRep.Type.PUBLIC, "", "RAW", new byte[] {}); |
| try { |
| kr.readResolve(); |
| fail("NotSerializableException has not been thrown (unacceptable format)"); |
| } catch (NotSerializableException ok) { |
| |
| } |
| |
| kr = new KeyRepChild(KeyRep.Type.PUBLIC, "bla-bla", "X.509", |
| new byte[] {}); |
| try { |
| kr.readResolve(); |
| fail("NotSerializableException has not been thrown (unknown KeyFactory algorithm)"); |
| } catch (NotSerializableException ok) { |
| |
| } |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "", |
| method = "readResolve", |
| args = {} |
| ) |
| public final void testReadResolve03() throws ObjectStreamException { |
| KeyRepChild kr = new KeyRepChild(KeyRep.Type.PRIVATE, "", "", |
| new byte[] {}); |
| try { |
| kr.readResolve(); |
| fail("NotSerializableException has not been thrown (no format)"); |
| } catch (NotSerializableException ok) { |
| |
| } |
| |
| kr = new KeyRepChild(KeyRep.Type.PRIVATE, "", "RAW", new byte[] {}); |
| try { |
| kr.readResolve(); |
| fail("NotSerializableException has not been thrown (unacceptable format)"); |
| } catch (NotSerializableException ok) { |
| |
| } |
| |
| kr = new KeyRepChild(KeyRep.Type.PRIVATE, "bla-bla", "PKCS#8", |
| new byte[] {}); |
| try { |
| kr.readResolve(); |
| fail("NotSerializableException has not been thrown (unknown KeyFactory algorithm)"); |
| } catch (NotSerializableException ok) { |
| |
| } |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "", |
| method = "readResolve", |
| args = {} |
| ) |
| public final void testReadResolve04() throws ObjectStreamException { |
| if (keyFactoryAlgorithm.isEmpty()) { |
| System.err.println(getName() |
| + ": skipped - no KeyFactory algorithms available"); |
| return; |
| } else { |
| } |
| for (Iterator<String> i = keyFactoryAlgorithm.iterator(); i.hasNext();) { |
| KeyRepChild kr = new KeyRepChild(KeyRep.Type.PUBLIC, i.next(), |
| "X.509", new byte[] { 1, 2, 3 }); |
| try { |
| kr.readResolve(); |
| fail("NotSerializableException has not been thrown (no format)"); |
| } catch (NotSerializableException ok) { |
| |
| } |
| } |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "", |
| method = "readResolve", |
| args = {} |
| ) |
| public final void testReadResolve05() throws ObjectStreamException { |
| if (keyFactoryAlgorithm.isEmpty()) { |
| System.err.println(getName() |
| + ": skipped - no KeyFactory algorithms available"); |
| return; |
| } else { |
| } |
| for (Iterator<String> i = keyFactoryAlgorithm.iterator(); i.hasNext();) { |
| KeyRepChild kr = new KeyRepChild(KeyRep.Type.PRIVATE, i.next(), |
| "PKCS#8", new byte[] { 1, 2, 3 }); |
| try { |
| kr.readResolve(); |
| fail("NotSerializableException has not been thrown (no format)"); |
| } catch (NotSerializableException ok) { |
| |
| } |
| } |
| } |
| |
| class KeyRepChild extends KeyRep { |
| public KeyRepChild(KeyRep.Type type, String algorithm, String format, |
| byte[] encoded) { |
| super(type, algorithm, format, encoded); |
| } |
| |
| public Object readResolve() throws ObjectStreamException { |
| return super.readResolve(); |
| } |
| |
| } |
| } |