]>
nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/util/SecurityProvider.java
1 package org
.asamk
.signal
.util
;
3 import java
.security
.Provider
;
4 import java
.security
.SecureRandom
;
5 import java
.security
.SecureRandomSpi
;
7 public class SecurityProvider
extends Provider
{
9 private static final String PROVIDER_NAME
= "SSP";
11 private static final String info
= "Security Provider v1.0";
13 public SecurityProvider() {
14 super(PROVIDER_NAME
, "1.0", info
);
15 put("SecureRandom.DEFAULT", DefaultRandom
.class.getName());
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());
28 public static class DefaultRandom
extends SecureRandomSpi
{
30 private static final SecureRandom random
= RandomUtils
.getSecureRandom();
32 public DefaultRandom() {
35 protected void engineSetSeed(byte[] bytes
) {
36 random
.setSeed(bytes
);
39 protected void engineNextBytes(byte[] bytes
) {
40 random
.nextBytes(bytes
);
43 protected byte[] engineGenerateSeed(int numBytes
) {
44 return random
.generateSeed(numBytes
);