1cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root/* 2cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * Copyright (C) 2015 The Android Open Source Project 3cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * 4cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 5cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * you may not use this file except in compliance with the License. 6cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * You may obtain a copy of the License at 7cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * 8cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * http://www.apache.org/licenses/LICENSE-2.0 9cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * 10cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * Unless required by applicable law or agreed to in writing, software 11cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * distributed under the License is distributed on an "AS IS" BASIS, 12cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * See the License for the specific language governing permissions and 14cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root * limitations under the License. 15cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root */ 16cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root 17cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Rootpackage benchmarks.regression; 18cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root 19cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Rootimport java.security.Provider; 20cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Rootimport java.security.Security; 21cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Rootimport javax.crypto.Cipher; 22cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root 23ea13f8291a92b6f47f50011da1d5e8c107984bc3Paul Duffinpublic class ProviderBenchmark { 24cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root public void timeStableProviders(int reps) throws Exception { 25cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root for (int i = 0; i < reps; ++i) { 26cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root Cipher c = Cipher.getInstance("RSA"); 27cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root } 28cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root } 29cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root 30cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root public void timeWithNewProvider(int reps) throws Exception { 31cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root for (int i = 0; i < reps; ++i) { 32cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root Security.addProvider(new MockProvider()); 33cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root try { 34cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root Cipher c = Cipher.getInstance("RSA"); 35cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root } finally { 36cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root Security.removeProvider("Mock"); 37cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root } 38cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root } 39cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root } 40cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root 41cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root private static class MockProvider extends Provider { 42cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root public MockProvider() { 43cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root super("Mock", 1.0, "Mock me!"); 44cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root } 45cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root } 46cc4791ad77128039c93d4c03b582d4dc397e6a02Kenny Root} 47