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

File BcDSAKeyPairGenerator.java

 

Coverage histogram

../../../../../../img/srcFileCovDistChart8.png
54% of files have more coverage

Code metrics

6
13
4
1
107
68
7
0.54
3.25
4
1.75

Classes

Class Line # Actions
BcDSAKeyPairGenerator 49 13 0% 7 5
0.782608778.3%
 

Contributing tests

This file is covered by 3 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.security.SecureRandom;
23   
24    import javax.inject.Inject;
25    import javax.inject.Named;
26    import javax.inject.Provider;
27    import javax.inject.Singleton;
28   
29    import org.bouncycastle.crypto.AsymmetricCipherKeyPairGenerator;
30    import org.bouncycastle.crypto.generators.DSAKeyPairGenerator;
31    import org.xwiki.component.annotation.Component;
32    import org.xwiki.crypto.AsymmetricKeyFactory;
33    import org.xwiki.crypto.KeyParametersGenerator;
34    import org.xwiki.crypto.params.cipher.asymmetric.AsymmetricKeyPair;
35    import org.xwiki.crypto.params.generator.KeyGenerationParameters;
36    import org.xwiki.crypto.params.generator.asymmetric.DSAKeyGenerationParameters;
37    import org.xwiki.crypto.params.generator.asymmetric.DSAKeyParametersGenerationParameters;
38    import org.xwiki.crypto.params.generator.asymmetric.DSAKeyValidationParameters;
39   
40    /**
41    * Generate new RSA key pair.
42    *
43    * @version $Id: 4872dfc0b9efa59a24e4afacd4647f1c7b087e19 $
44    * @since 5.4M1
45    */
46    @Component
47    @Singleton
48    @Named("DSA")
 
49    public class BcDSAKeyPairGenerator extends AbstractBcKeyPairGenerator
50    {
51    @Inject
52    @Named("DSA")
53    private AsymmetricKeyFactory factory;
54   
55    @Inject
56    @Named("DSA")
57    private KeyParametersGenerator parametersGenerator;
58   
59    @Inject
60    private Provider<SecureRandom> random;
61   
 
62  0 toggle @Override
63    protected AsymmetricKeyFactory getFactory()
64    {
65  0 return this.factory;
66    }
67   
 
68  2 toggle @Override
69    public AsymmetricKeyPair generate()
70    {
71  2 return generate(new DSAKeyParametersGenerationParameters());
72    }
73   
 
74  5 toggle @Override
75    public AsymmetricKeyPair generate(KeyGenerationParameters parameters)
76    {
77  5 org.bouncycastle.crypto.params.DSAParameters keyGenParams;
78   
79  5 if (parameters instanceof DSAKeyParametersGenerationParameters) {
80  2 keyGenParams = getDsaParameters((DSAKeyGenerationParameters)
81    this.parametersGenerator.generate((DSAKeyParametersGenerationParameters) parameters));
82  3 } else if (parameters instanceof DSAKeyGenerationParameters) {
83  3 keyGenParams = getDsaParameters((DSAKeyGenerationParameters) parameters);
84    } else {
85  0 throw new IllegalArgumentException("Invalid parameters for DSA key generator: "
86    + parameters.getClass().getName());
87    }
88   
89  5 AsymmetricCipherKeyPairGenerator generator = new DSAKeyPairGenerator();
90  5 generator.init(new org.bouncycastle.crypto.params.DSAKeyGenerationParameters(this.random.get(),
91    keyGenParams));
92   
93  5 return getKeyPair(generator.generateKeyPair());
94    }
95   
 
96  5 toggle private org.bouncycastle.crypto.params.DSAParameters getDsaParameters(DSAKeyGenerationParameters parameters)
97    {
98  5 DSAKeyValidationParameters dsaValidParams = parameters.getValidationParameters();
99   
100  5 return new org.bouncycastle.crypto.params.DSAParameters(parameters.getP(), parameters.getQ(), parameters.getG(),
101  5 (dsaValidParams != null) ? new org.bouncycastle.crypto.params.DSAValidationParameters(
102    dsaValidParams.getSeed(),
103    dsaValidParams.getCounter(),
104    BcDSAKeyParameterGenerator.getUsageIndex(dsaValidParams.getUsage()))
105    : null);
106    }
107    }