]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/util/SecurityProvider.java
Update libsignal-service-java
[signal-cli] / src / main / java / org / asamk / signal / util / SecurityProvider.java
1 package org.asamk.signal.util;
2
3 import java.security.Provider;
4 import java.security.SecureRandom;
5 import java.security.SecureRandomSpi;
6
7 public class SecurityProvider extends Provider {
8
9 private static final String PROVIDER_NAME = "SSP";
10
11 private static final String info = "Security Provider v1.0";
12
13 public SecurityProvider() {
14 super(PROVIDER_NAME, "1.0", info);
15 put("SecureRandom.DEFAULT", DefaultRandom.class.getName());
16
17 // Workaround for BKS truststore
18 put("KeyStore.BKS", org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi.Std.class.getCanonicalName());
19 put("KeyStore.BKS-V1",
20 org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi.Version1.class.getCanonicalName());
21 put("KeyStore.BouncyCastle",
22 org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi.BouncyCastleStore.class.getCanonicalName());
23 put("KeyFactory.X.509", org.bouncycastle.jcajce.provider.asymmetric.x509.KeyFactory.class.getCanonicalName());
24 put("CertificateFactory.X.509",
25 org.bouncycastle.jcajce.provider.asymmetric.x509.CertificateFactory.class.getCanonicalName());
26 }
27
28 public static class DefaultRandom extends SecureRandomSpi {
29
30 private static final SecureRandom random = RandomUtils.getSecureRandom();
31
32 public DefaultRandom() {
33 }
34
35 protected void engineSetSeed(byte[] bytes) {
36 random.setSeed(bytes);
37 }
38
39 protected void engineNextBytes(byte[] bytes) {
40 random.nextBytes(bytes);
41 }
42
43 protected byte[] engineGenerateSeed(int numBytes) {
44 return random.generateSeed(numBytes);
45 }
46 }
47 }