Skip to content

Commit d84891a

Browse files
committed
expanded PBE support - relates to github #1846
1 parent 6c5bcfb commit d84891a

File tree

9 files changed

+649
-106
lines changed

9 files changed

+649
-106
lines changed

prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/AES.java

Lines changed: 337 additions & 74 deletions
Large diffs are not rendered by default.

prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Camellia.java

Lines changed: 60 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,33 @@ public CBC()
5858
}
5959
}
6060

61+
public static class CBC128
62+
extends BaseBlockCipher
63+
{
64+
public CBC128()
65+
{
66+
super(128, new CBCBlockCipher(new CamelliaEngine()), 128);
67+
}
68+
}
69+
70+
public static class CBC192
71+
extends BaseBlockCipher
72+
{
73+
public CBC192()
74+
{
75+
super(192, new CBCBlockCipher(new CamelliaEngine()), 128);
76+
}
77+
}
78+
79+
public static class CBC256
80+
extends BaseBlockCipher
81+
{
82+
public CBC256()
83+
{
84+
super(256, new CBCBlockCipher(new CamelliaEngine()), 128);
85+
}
86+
}
87+
6188
public static class Wrap
6289
extends BaseWrapCipher
6390
{
@@ -67,6 +94,33 @@ public Wrap()
6794
}
6895
}
6996

97+
public static class Wrap128
98+
extends BaseWrapCipher
99+
{
100+
public Wrap128()
101+
{
102+
super(128, new CamelliaWrapEngine());
103+
}
104+
}
105+
106+
public static class Wrap192
107+
extends BaseWrapCipher
108+
{
109+
public Wrap192()
110+
{
111+
super(192, new CamelliaWrapEngine());
112+
}
113+
}
114+
115+
public static class Wrap256
116+
extends BaseWrapCipher
117+
{
118+
public Wrap256()
119+
{
120+
super(256, new CamelliaWrapEngine());
121+
}
122+
}
123+
70124
public static class RFC3211Wrap
71125
extends BaseWrapCipher
72126
{
@@ -223,15 +277,15 @@ public void configure(ConfigurableProvider provider)
223277
provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator", NTTObjectIdentifiers.id_camellia256_cbc, "CAMELLIA");
224278

225279
provider.addAlgorithm("Cipher.CAMELLIA", PREFIX + "$ECB");
226-
provider.addAlgorithm("Cipher", NTTObjectIdentifiers.id_camellia128_cbc, PREFIX + "$CBC");
227-
provider.addAlgorithm("Cipher", NTTObjectIdentifiers.id_camellia192_cbc, PREFIX + "$CBC");
228-
provider.addAlgorithm("Cipher", NTTObjectIdentifiers.id_camellia256_cbc, PREFIX + "$CBC");
280+
provider.addAlgorithm("Cipher", NTTObjectIdentifiers.id_camellia128_cbc, PREFIX + "$CBC128");
281+
provider.addAlgorithm("Cipher", NTTObjectIdentifiers.id_camellia192_cbc, PREFIX + "$CBC192");
282+
provider.addAlgorithm("Cipher", NTTObjectIdentifiers.id_camellia256_cbc, PREFIX + "$CBC256");
229283

230284
provider.addAlgorithm("Cipher.CAMELLIARFC3211WRAP", PREFIX + "$RFC3211Wrap");
231285
provider.addAlgorithm("Cipher.CAMELLIAWRAP", PREFIX + "$Wrap");
232-
provider.addAlgorithm("Alg.Alias.Cipher", NTTObjectIdentifiers.id_camellia128_wrap, "CAMELLIAWRAP");
233-
provider.addAlgorithm("Alg.Alias.Cipher", NTTObjectIdentifiers.id_camellia192_wrap, "CAMELLIAWRAP");
234-
provider.addAlgorithm("Alg.Alias.Cipher", NTTObjectIdentifiers.id_camellia256_wrap, "CAMELLIAWRAP");
286+
provider.addAlgorithm("Cipher", NTTObjectIdentifiers.id_camellia128_wrap, PREFIX + "$Wrap128");
287+
provider.addAlgorithm("Cipher", NTTObjectIdentifiers.id_camellia192_wrap, PREFIX + "$Wrap192");
288+
provider.addAlgorithm("Cipher", NTTObjectIdentifiers.id_camellia256_wrap, PREFIX + "$Wrap256");
235289

236290
provider.addAlgorithm("SecretKeyFactory.CAMELLIA", PREFIX + "$KeyFactory");
237291
provider.addAlgorithm("Alg.Alias.SecretKeyFactory", NTTObjectIdentifiers.id_camellia128_cbc, "CAMELLIA");

prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/SEED.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public static class ECB
3939
{
4040
public ECB()
4141
{
42-
super(new BlockCipherProvider()
42+
super(128, new BlockCipherProvider()
4343
{
4444
public BlockCipher get()
4545
{
@@ -54,7 +54,7 @@ public static class CBC
5454
{
5555
public CBC()
5656
{
57-
super(new CBCBlockCipher(new SEEDEngine()), 128);
57+
super(128, new CBCBlockCipher(new SEEDEngine()), 128);
5858
}
5959
}
6060

@@ -63,7 +63,7 @@ public static class Wrap
6363
{
6464
public Wrap()
6565
{
66-
super(new SEEDWrapEngine());
66+
super(128, new SEEDWrapEngine());
6767
}
6868
}
6969

prov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/Serpent.java

Lines changed: 138 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,51 @@ public BlockCipher get()
4040
}
4141
}
4242

43+
public static class ECB128
44+
extends BaseBlockCipher
45+
{
46+
public ECB128()
47+
{
48+
super(128, new BlockCipherProvider()
49+
{
50+
public BlockCipher get()
51+
{
52+
return new SerpentEngine();
53+
}
54+
});
55+
}
56+
}
57+
58+
public static class ECB192
59+
extends BaseBlockCipher
60+
{
61+
public ECB192()
62+
{
63+
super(192, new BlockCipherProvider()
64+
{
65+
public BlockCipher get()
66+
{
67+
return new SerpentEngine();
68+
}
69+
});
70+
}
71+
}
72+
73+
public static class ECB256
74+
extends BaseBlockCipher
75+
{
76+
public ECB256()
77+
{
78+
super(256, new BlockCipherProvider()
79+
{
80+
public BlockCipher get()
81+
{
82+
return new SerpentEngine();
83+
}
84+
});
85+
}
86+
}
87+
4388
public static class TECB
4489
extends BaseBlockCipher
4590
{
@@ -64,6 +109,33 @@ public CBC()
64109
}
65110
}
66111

112+
public static class CBC128
113+
extends BaseBlockCipher
114+
{
115+
public CBC128()
116+
{
117+
super(128, new CBCBlockCipher(new SerpentEngine()), 128);
118+
}
119+
}
120+
121+
public static class CBC192
122+
extends BaseBlockCipher
123+
{
124+
public CBC192()
125+
{
126+
super(192, new CBCBlockCipher(new SerpentEngine()), 128);
127+
}
128+
}
129+
130+
public static class CBC256
131+
extends BaseBlockCipher
132+
{
133+
public CBC256()
134+
{
135+
super(256, new CBCBlockCipher(new SerpentEngine()), 128);
136+
}
137+
}
138+
67139
public static class CFB
68140
extends BaseBlockCipher
69141
{
@@ -73,6 +145,33 @@ public CFB()
73145
}
74146
}
75147

148+
public static class CFB128
149+
extends BaseBlockCipher
150+
{
151+
public CFB128()
152+
{
153+
super(128, new BufferedBlockCipher(new CFBBlockCipher(new SerpentEngine(), 128)), 128);
154+
}
155+
}
156+
157+
public static class CFB192
158+
extends BaseBlockCipher
159+
{
160+
public CFB192()
161+
{
162+
super(192, new BufferedBlockCipher(new CFBBlockCipher(new SerpentEngine(), 128)), 128);
163+
}
164+
}
165+
166+
public static class CFB256
167+
extends BaseBlockCipher
168+
{
169+
public CFB256()
170+
{
171+
super(256, new BufferedBlockCipher(new CFBBlockCipher(new SerpentEngine(), 128)), 128);
172+
}
173+
}
174+
76175
public static class OFB
77176
extends BaseBlockCipher
78177
{
@@ -82,6 +181,33 @@ public OFB()
82181
}
83182
}
84183

184+
public static class OFB128
185+
extends BaseBlockCipher
186+
{
187+
public OFB128()
188+
{
189+
super(128, new BufferedBlockCipher(new OFBBlockCipher(new SerpentEngine(), 128)), 128);
190+
}
191+
}
192+
193+
public static class OFB192
194+
extends BaseBlockCipher
195+
{
196+
public OFB192()
197+
{
198+
super(192, new BufferedBlockCipher(new OFBBlockCipher(new SerpentEngine(), 128)), 128);
199+
}
200+
}
201+
202+
public static class OFB256
203+
extends BaseBlockCipher
204+
{
205+
public OFB256()
206+
{
207+
super(256, new BufferedBlockCipher(new OFBBlockCipher(new SerpentEngine(), 128)), 128);
208+
}
209+
}
210+
85211
public static class KeyGen
86212
extends BaseKeyGenerator
87213
{
@@ -174,21 +300,21 @@ public void configure(ConfigurableProvider provider)
174300
provider.addAlgorithm("KeyGenerator.Tnepres", PREFIX + "$TKeyGen");
175301
provider.addAlgorithm("AlgorithmParameters.Tnepres", PREFIX + "$TAlgParams");
176302

177-
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_128_ECB, PREFIX + "$ECB");
178-
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_192_ECB, PREFIX + "$ECB");
179-
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_256_ECB, PREFIX + "$ECB");
303+
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_128_ECB, PREFIX + "$ECB128");
304+
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_192_ECB, PREFIX + "$ECB192");
305+
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_256_ECB, PREFIX + "$ECB256");
180306

181-
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_128_CBC, PREFIX + "$CBC");
182-
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_192_CBC, PREFIX + "$CBC");
183-
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_256_CBC, PREFIX + "$CBC");
307+
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_128_CBC, PREFIX + "$CBC128");
308+
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_192_CBC, PREFIX + "$CBC192");
309+
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_256_CBC, PREFIX + "$CBC256");
184310

185-
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_128_CFB, PREFIX + "$CFB");
186-
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_192_CFB, PREFIX + "$CFB");
187-
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_256_CFB, PREFIX + "$CFB");
311+
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_128_CFB, PREFIX + "$CFB128");
312+
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_192_CFB, PREFIX + "$CFB192");
313+
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_256_CFB, PREFIX + "$CFB256");
188314

189-
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_128_OFB, PREFIX + "$OFB");
190-
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_192_OFB, PREFIX + "$OFB");
191-
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_256_OFB, PREFIX + "$OFB");
315+
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_128_OFB, PREFIX + "$OFB128");
316+
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_192_OFB, PREFIX + "$OFB192");
317+
provider.addAlgorithm("Cipher", GNUObjectIdentifiers.Serpent_256_OFB, PREFIX + "$OFB256");
192318

193319
addGMacAlgorithm(provider, "SERPENT", PREFIX + "$SerpentGMAC", PREFIX + "$KeyGen");
194320
addGMacAlgorithm(provider, "TNEPRES", PREFIX + "$TSerpentGMAC", PREFIX + "$TKeyGen");

0 commit comments

Comments
 (0)