1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.apache.harmony.security.tests.java.security; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.SecureRandomSpi; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Tests for <code>SecureRandomSpi</code> class constructors 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * and methods. 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(SecureRandomSpi.class) 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class SecureRandomSpiTest extends TestCase { 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>SecureRandomSpi</code> constructor 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: constructs SecureRandomSpi 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "SecureRandomSpi", 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineGenerateSeed", 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineNextBytes", 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class} 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineSetSeed", 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class} 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSecureRandomSpi() { 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MySecureRandomSpi srs = new MySecureRandomSpi(); 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(srs instanceof SecureRandomSpi); 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected exception"); 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MySecureRandomSpi srs = new MySecureRandomSpi(); 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srs.engineGenerateSeed(10); 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srs.engineNextBytes(new byte[10]); 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srs.engineSetSeed(new byte[3]); 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected exception"); 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public class MySecureRandomSpi extends SecureRandomSpi { 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineSetSeed(byte[] seed) {} 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineNextBytes(byte[] bytes) {} 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected byte[] engineGenerateSeed(int numBytes) { 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}