1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.core5.ssl;
29
30 import java.security.Provider;
31 import java.security.Security;
32 import java.util.HashSet;
33 import java.util.Set;
34 import java.util.concurrent.locks.ReentrantLock;
35
36 public class DummyProvider extends Provider {
37
38 private final Provider realJSSEProvider = Security.getProvider(TestSSLContextBuilder.PROVIDER_SUN_JSSE);
39 private final Provider realJCEEProvider = Security.getProvider(TestSSLContextBuilder.PROVIDER_SUN_JCE);
40 final static String NAME = "FAKE";
41
42 private final Set<String> requestedTypes = new HashSet<>();
43
44 private final ReentrantLock lock;
45
46 public DummyProvider() {
47 super(NAME, 1.1, "http core fake provider 1.1");
48 this.lock = new ReentrantLock();
49 }
50
51 public boolean hasBeenRequested(final String what) {
52 return requestedTypes.contains(what);
53 }
54
55 @Override
56 public Service getService(final String type, final String algorithm) {
57 requestedTypes.add(type);
58 if ("KeyStore".equals(type)) {
59 return realJCEEProvider.getService(type, algorithm);
60 }
61 return realJSSEProvider.getService(type, algorithm);
62 }
63
64 @Override
65 public Set<Service> getServices() {
66 lock.lock();
67 try {
68 return realJSSEProvider.getServices();
69 } finally {
70 lock.unlock();
71 }
72 }
73 }