1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
package org.xwiki.crypto.password.internal.kdf; |
21 |
|
|
22 |
|
import java.io.IOException; |
23 |
|
|
24 |
|
import org.bouncycastle.asn1.x509.AlgorithmIdentifier; |
25 |
|
import org.bouncycastle.crypto.PBEParametersGenerator; |
26 |
|
import org.bouncycastle.crypto.params.KeyParameter; |
27 |
|
import org.bouncycastle.crypto.params.ParametersWithIV; |
28 |
|
import org.xwiki.crypto.params.cipher.symmetric.KeyWithIVParameters; |
29 |
|
import org.xwiki.crypto.password.params.KeyDerivationFunctionParameters; |
30 |
|
import org.xwiki.crypto.password.params.PBKDF2Parameters; |
31 |
|
|
32 |
|
|
33 |
|
|
34 |
|
|
35 |
|
@version |
36 |
|
@since |
37 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (22) |
Complexity: 7 |
Complexity Density: 0.5 |
|
38 |
|
public abstract class AbstractBcPBKDF2 extends AbstractBcKDF |
39 |
|
{ |
40 |
|
private final PBEParametersGenerator generator; |
41 |
|
|
42 |
|
private final PBKDF2Parameters parameters; |
43 |
|
|
44 |
|
private final AlgorithmIdentifier algId; |
45 |
|
|
46 |
|
|
47 |
|
|
48 |
|
|
49 |
|
@param |
50 |
|
@param |
51 |
|
@param |
52 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (3) |
Complexity: 1 |
Complexity Density: 0.33 |
|
53 |
45 |
public AbstractBcPBKDF2(PBEParametersGenerator generator, PBKDF2Parameters parameters, AlgorithmIdentifier algId)... |
54 |
|
{ |
55 |
45 |
this.generator = generator; |
56 |
45 |
this.parameters = parameters; |
57 |
45 |
this.algId = algId; |
58 |
|
} |
59 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
60 |
82 |
@Override... |
61 |
|
public KeyDerivationFunctionParameters getParameters() |
62 |
|
{ |
63 |
82 |
return this.parameters; |
64 |
|
} |
65 |
|
|
66 |
|
|
67 |
|
@return |
68 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (5) |
Complexity: 2 |
Complexity Density: 0.67 |
|
69 |
24 |
public AlgorithmIdentifier getPRFAlgorithmIdentifier()... |
70 |
|
{ |
71 |
24 |
if (this.parameters.getPseudoRandomFuntionHint() != null) { |
72 |
12 |
return this.algId; |
73 |
|
} |
74 |
12 |
return null; |
75 |
|
} |
76 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (3) |
Complexity: 1 |
Complexity Density: 0.33 |
|
77 |
34 |
@Override... |
78 |
|
public org.xwiki.crypto.params.cipher.symmetric.KeyParameter derive(byte[] password) |
79 |
|
{ |
80 |
34 |
this.generator.init(password, this.parameters.getSalt(), this.parameters.getIterationCount()); |
81 |
34 |
KeyParameter keyParam = (KeyParameter) this.generator.generateDerivedParameters(getKeySize() * 8); |
82 |
34 |
return new org.xwiki.crypto.params.cipher.symmetric.KeyParameter(keyParam.getKey()); |
83 |
|
} |
84 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (3) |
Complexity: 1 |
Complexity Density: 0.33 |
|
85 |
11 |
@Override... |
86 |
|
public KeyWithIVParameters derive(byte[] password, int ivSize) |
87 |
|
{ |
88 |
11 |
this.generator.init(password, this.parameters.getSalt(), this.parameters.getIterationCount()); |
89 |
11 |
ParametersWithIV keyParam = |
90 |
|
(ParametersWithIV) this.generator.generateDerivedParameters(getKeySize() * 8, ivSize * 8); |
91 |
11 |
return new KeyWithIVParameters(((KeyParameter) keyParam.getParameters()).getKey(), keyParam.getIV()); |
92 |
|
} |
93 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
94 |
2 |
@Override... |
95 |
|
public byte[] getEncoded() throws IOException |
96 |
|
{ |
97 |
2 |
return getKeyDerivationFunction().getEncoded(); |
98 |
|
} |
99 |
|
} |