1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
package org.xwiki.crypto.internal.asymmetric.generator; |
21 |
|
|
22 |
|
import java.math.BigInteger; |
23 |
|
import java.security.SecureRandom; |
24 |
|
|
25 |
|
import javax.inject.Provider; |
26 |
|
|
27 |
|
import org.bouncycastle.crypto.params.RSAKeyParameters; |
28 |
|
import org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters; |
29 |
|
import org.junit.Before; |
30 |
|
import org.junit.Rule; |
31 |
|
import org.junit.Test; |
32 |
|
import org.xwiki.component.util.DefaultParameterizedType; |
33 |
|
import org.xwiki.crypto.KeyPairGenerator; |
34 |
|
import org.xwiki.crypto.internal.FixedSecureRandomProvider; |
35 |
|
import org.xwiki.crypto.internal.asymmetric.BcAsymmetricKeyParameters; |
36 |
|
import org.xwiki.crypto.internal.asymmetric.keyfactory.BcRSAKeyFactory; |
37 |
|
import org.xwiki.crypto.params.cipher.asymmetric.AsymmetricKeyPair; |
38 |
|
import org.xwiki.crypto.params.generator.asymmetric.RSAKeyGenerationParameters; |
39 |
|
import org.xwiki.test.annotation.ComponentList; |
40 |
|
import org.xwiki.test.mockito.MockitoComponentMockingRule; |
41 |
|
|
42 |
|
import static org.hamcrest.CoreMatchers.equalTo; |
43 |
|
import static org.hamcrest.CoreMatchers.instanceOf; |
44 |
|
import static org.hamcrest.CoreMatchers.not; |
45 |
|
import static org.hamcrest.CoreMatchers.nullValue; |
46 |
|
import static org.junit.Assert.assertThat; |
47 |
|
|
48 |
|
@ComponentList({BcRSAKeyFactory.class, FixedSecureRandomProvider.class}) |
|
|
| 98.5% |
Uncovered Elements: 1 (65) |
Complexity: 6 |
Complexity Density: 0.1 |
|
49 |
|
public class BcRSAKeyPairGeneratorTest |
50 |
|
{ |
51 |
|
@Rule |
52 |
|
public final MockitoComponentMockingRule<KeyPairGenerator> mocker = |
53 |
|
new MockitoComponentMockingRule<KeyPairGenerator>(BcRSAKeyPairGenerator.class); |
54 |
|
|
55 |
|
private KeyPairGenerator generator; |
56 |
|
|
|
|
| 83.3% |
Uncovered Elements: 1 (6) |
Complexity: 2 |
Complexity Density: 0.5 |
|
57 |
4 |
@Before... |
58 |
|
public void configure() throws Exception |
59 |
|
{ |
60 |
4 |
generator = mocker.getComponentUnderTest(); |
61 |
|
|
62 |
|
|
63 |
4 |
Provider<SecureRandom> rndprov = |
64 |
|
mocker.getInstance(new DefaultParameterizedType(null, Provider.class, SecureRandom.class)); |
65 |
4 |
if (rndprov instanceof FixedSecureRandomProvider) { |
66 |
4 |
((FixedSecureRandomProvider) rndprov).initialize(); |
67 |
|
} |
68 |
|
} |
69 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (20) |
Complexity: 1 |
Complexity Density: 0.05 |
1PASS
|
|
70 |
1 |
@Test... |
71 |
|
public void testGenerateWithoutArgument() throws Exception |
72 |
|
{ |
73 |
1 |
AsymmetricKeyPair kp1 = generator.generate(); |
74 |
1 |
AsymmetricKeyPair kp2 = generator.generate(); |
75 |
|
|
76 |
1 |
assertThat(kp1, not(nullValue())); |
77 |
1 |
assertThat(kp2, not(nullValue())); |
78 |
1 |
assertThat(kp1.getPrivate(), instanceOf(BcAsymmetricKeyParameters.class)); |
79 |
1 |
assertThat(kp2.getPrivate(), instanceOf(BcAsymmetricKeyParameters.class)); |
80 |
1 |
assertThat(kp1.getPublic(), instanceOf(BcAsymmetricKeyParameters.class)); |
81 |
1 |
assertThat(kp2.getPublic(), instanceOf(BcAsymmetricKeyParameters.class)); |
82 |
1 |
assertThat(((BcAsymmetricKeyParameters) kp1.getPrivate()).getParameters(), instanceOf( |
83 |
|
RSAPrivateCrtKeyParameters.class)); |
84 |
1 |
assertThat(((BcAsymmetricKeyParameters) kp2.getPrivate()).getParameters(), instanceOf( |
85 |
|
RSAPrivateCrtKeyParameters.class)); |
86 |
1 |
assertThat(((BcAsymmetricKeyParameters) kp1.getPublic()).getParameters(), instanceOf(RSAKeyParameters.class)); |
87 |
1 |
assertThat(((BcAsymmetricKeyParameters) kp2.getPublic()).getParameters(), instanceOf(RSAKeyParameters.class)); |
88 |
1 |
assertThat(((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp1.getPrivate()).getParameters()).getModulus().bitLength(), equalTo(2048)); |
89 |
1 |
assertThat(((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp1.getPublic()).getParameters()).getModulus().bitLength(), equalTo(2048)); |
90 |
1 |
assertThat(((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp2.getPrivate()).getParameters()).getModulus().bitLength(), equalTo(2048)); |
91 |
1 |
assertThat(((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp2.getPublic()).getParameters()).getModulus().bitLength(), equalTo(2048)); |
92 |
1 |
assertThat(((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp1.getPrivate()).getParameters()).getPublicExponent(), equalTo(BigInteger.valueOf(0x10001))); |
93 |
1 |
assertThat(((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp1.getPublic()).getParameters()).getExponent(), equalTo(BigInteger.valueOf(0x10001))); |
94 |
1 |
assertThat(((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp2.getPrivate()).getParameters()).getPublicExponent(), equalTo(BigInteger.valueOf(0x10001))); |
95 |
1 |
assertThat(((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp2.getPublic()).getParameters()).getExponent(), equalTo(BigInteger.valueOf(0x10001))); |
96 |
|
} |
97 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (20) |
Complexity: 1 |
Complexity Density: 0.05 |
1PASS
|
|
98 |
1 |
@Test... |
99 |
|
public void testGenerateWithStrengthParameter() throws Exception |
100 |
|
{ |
101 |
1 |
AsymmetricKeyPair kp = generator.generate(new RSAKeyGenerationParameters(64)); |
102 |
|
|
103 |
1 |
assertThat(kp, not(nullValue())); |
104 |
1 |
assertThat(kp.getPrivate(), instanceOf(BcAsymmetricKeyParameters.class)); |
105 |
1 |
assertThat(kp.getPublic(), instanceOf(BcAsymmetricKeyParameters.class)); |
106 |
1 |
assertThat(((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters(), instanceOf( |
107 |
|
RSAPrivateCrtKeyParameters.class)); |
108 |
1 |
assertThat(((BcAsymmetricKeyParameters) kp.getPublic()).getParameters(), instanceOf(RSAKeyParameters.class)); |
109 |
1 |
assertThat(((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters()).getModulus().bitLength(), equalTo(512)); |
110 |
1 |
assertThat(((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp.getPublic()).getParameters()).getModulus().bitLength(), equalTo(512)); |
111 |
1 |
assertThat(((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters()).getPublicExponent(), equalTo(BigInteger.valueOf(0x10001))); |
112 |
1 |
assertThat(((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp.getPublic()).getParameters()).getExponent(), equalTo(BigInteger.valueOf(0x10001))); |
113 |
|
|
114 |
1 |
kp = generator.generate(new RSAKeyGenerationParameters(128)); |
115 |
|
|
116 |
1 |
assertThat(kp, not(nullValue())); |
117 |
1 |
assertThat(kp.getPrivate(), instanceOf(BcAsymmetricKeyParameters.class)); |
118 |
1 |
assertThat(kp.getPublic(), instanceOf(BcAsymmetricKeyParameters.class)); |
119 |
1 |
assertThat(((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters(), instanceOf( |
120 |
|
RSAPrivateCrtKeyParameters.class)); |
121 |
1 |
assertThat(((BcAsymmetricKeyParameters) kp.getPublic()).getParameters(), instanceOf(RSAKeyParameters.class)); |
122 |
1 |
assertThat(((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters()).getModulus().bitLength(), equalTo(1024)); |
123 |
1 |
assertThat(((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp.getPublic()).getParameters()).getModulus().bitLength(), equalTo(1024)); |
124 |
1 |
assertThat(((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters()).getPublicExponent(), equalTo(BigInteger.valueOf(0x10001))); |
125 |
1 |
assertThat(((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp.getPublic()).getParameters()).getExponent(), equalTo(BigInteger.valueOf(0x10001))); |
126 |
|
} |
127 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (8) |
Complexity: 1 |
Complexity Density: 0.12 |
1PASS
|
|
128 |
1 |
@Test... |
129 |
|
public void testGenerateWithPublicExponentParameter() throws Exception |
130 |
|
{ |
131 |
1 |
AsymmetricKeyPair kp = generator.generate(new RSAKeyGenerationParameters(64, BigInteger.valueOf(0x11))); |
132 |
|
|
133 |
1 |
assertThat(kp, not(nullValue())); |
134 |
1 |
assertThat(kp.getPrivate(), instanceOf(BcAsymmetricKeyParameters.class)); |
135 |
1 |
assertThat(kp.getPublic(), instanceOf(BcAsymmetricKeyParameters.class)); |
136 |
1 |
assertThat(((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters(), instanceOf( |
137 |
|
RSAPrivateCrtKeyParameters.class)); |
138 |
1 |
assertThat(((BcAsymmetricKeyParameters) kp.getPublic()).getParameters(), instanceOf(RSAKeyParameters.class)); |
139 |
1 |
assertThat(((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters()).getPublicExponent(), equalTo(BigInteger.valueOf(0x11))); |
140 |
1 |
assertThat(((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp.getPublic()).getParameters()).getExponent(), equalTo(BigInteger.valueOf(0x11))); |
141 |
|
|
142 |
|
} |
143 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (6) |
Complexity: 1 |
Complexity Density: 0.17 |
1PASS
|
|
144 |
1 |
@Test... |
145 |
|
public void testGenerateWithCertaintyParameter() throws Exception |
146 |
|
{ |
147 |
1 |
AsymmetricKeyPair kp = generator.generate(new RSAKeyGenerationParameters(64, 1)); |
148 |
|
|
149 |
1 |
assertThat(kp, not(nullValue())); |
150 |
1 |
assertThat(kp.getPrivate(), instanceOf(BcAsymmetricKeyParameters.class)); |
151 |
1 |
assertThat(kp.getPublic(), instanceOf(BcAsymmetricKeyParameters.class)); |
152 |
1 |
assertThat(((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters(), instanceOf(RSAPrivateCrtKeyParameters.class)); |
153 |
1 |
assertThat(((BcAsymmetricKeyParameters) kp.getPublic()).getParameters(), instanceOf(RSAKeyParameters.class)); |
154 |
|
} |
155 |
|
} |