1. Project Clover database Tue Dec 20 2016 21:24:09 CET
  2. Package org.xwiki.crypto.internal.asymmetric.generator

File BcRSAKeyPairGeneratorTest.java

 

Code metrics

2
58
5
1
155
116
6
0.1
11.6
5
1.2

Classes

Class Line # Actions
BcRSAKeyPairGeneratorTest 49 58 0% 6 1
0.984615498.5%
 

Contributing tests

This file is covered by 4 tests. .

Source view

1    /*
2    * See the NOTICE file distributed with this work for additional
3    * information regarding copyright ownership.
4    *
5    * This is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU Lesser General Public License as
7    * published by the Free Software Foundation; either version 2.1 of
8    * the License, or (at your option) any later version.
9    *
10    * This software is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13    * Lesser General Public License for more details.
14    *
15    * You should have received a copy of the GNU Lesser General Public
16    * License along with this software; if not, write to the Free
17    * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18    * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
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})
 
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   
 
57  4 toggle @Before
58    public void configure() throws Exception
59    {
60  4 generator = mocker.getComponentUnderTest();
61   
62    // Reinitialize the random source
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   
 
70  1 toggle @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   
 
98  1 toggle @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   
 
128  1 toggle @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   
 
144  1 toggle @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    }