]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/util/SecurityProvider.java
9177a781f96bae623938cb61861d9a5b8899d6db
[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");
19 put("KeyStore.BKS-V1", "org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$Version1");
20 put("KeyStore.BouncyCastle", "org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$BouncyCastleStore");
21 put("KeyFactory.X.509", "org.bouncycastle.jcajce.provider.asymmetric.x509.KeyFactory");
22 put("CertificateFactory.X.509", "org.bouncycastle.jcajce.provider.asymmetric.x509.CertificateFactory");
23 }
24
25 public static class DefaultRandom extends SecureRandomSpi {
26
27 private static final SecureRandom random = RandomUtils.getSecureRandom();
28
29 public DefaultRandom() {
30 }
31
32 protected void engineSetSeed(byte[] bytes) {
33 random.setSeed(bytes);
34 }
35
36 protected void engineNextBytes(byte[] bytes) {
37 random.nextBytes(bytes);
38 }
39
40 protected byte[] engineGenerateSeed(int numBytes) {
41 return random.generateSeed(numBytes);
42 }
43 }
44 }