Skip to content

Commit e3979e5

Browse files
author
gefeili
committed
Refactor on setInnerMembers and constructor of AEADBufferBaseEngine
1 parent 02deb69 commit e3979e5

File tree

12 files changed

+46
-114
lines changed

12 files changed

+46
-114
lines changed

core/src/main/java/org/bouncycastle/crypto/engines/AEADBufferBaseEngine.java

Lines changed: 16 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ protected enum State
5757
protected AADOperator aadOperator;
5858
protected DataOperator dataOperator;
5959

60-
protected AEADBufferBaseEngine(ProcessingBufferType type)
60+
protected void setInnerMembers(ProcessingBufferType type, AADOperatorType aadOperatorType, DataOperatorType dataOperatorType)
6161
{
6262
switch (type)
6363
{
@@ -74,64 +74,17 @@ protected AEADBufferBaseEngine(ProcessingBufferType type)
7474
processor = new ImmediateLargeMacAADProcessor();
7575
break;
7676
}
77-
}
7877

79-
protected void setInnerMembers(ProcessingBufferType type, AADOperatorType aadOperatorType)
80-
{
81-
// switch (type)
82-
// {
83-
// case Buffered:
84-
// processor = new BufferedAADProcessor();
85-
// break;
86-
// case BufferedLargeMac:
87-
// processor = new BufferedLargeMacAADProcessor();
88-
// break;
89-
// case Immediate:
90-
// processor = new ImmediateAADProcessor();
91-
// break;
92-
// case ImmediateLargeMac:
93-
// processor = new ImmediateLargeMacAADProcessor();
94-
// break;
95-
// }
96-
97-
switch (aadOperatorType)
98-
{
99-
case Default:
100-
aadOperator = new DefaultAADOperator();
101-
break;
102-
case Counter:
103-
aadOperator = new CounterAADOperator();
104-
break;
105-
case Stream:
106-
aadOperator = new StreamAADOperator();
107-
break;
108-
}
109-
}
110-
111-
protected void setInnerMembers(ProcessingBufferType type, AADOperatorType aadOperatorType, DataOperatorType dataOperatorType)
112-
{
113-
// switch (type)
114-
// {
115-
// case Buffered:
116-
// processor = new BufferedAADProcessor();
117-
// break;
118-
// case BufferedLargeMac:
119-
// processor = new BufferedLargeMacAADProcessor();
120-
// break;
121-
// case Immediate:
122-
// processor = new ImmediateAADProcessor();
123-
// break;
124-
// case ImmediateLargeMac:
125-
// processor = new ImmediateLargeMacAADProcessor();
126-
// break;
127-
// }
78+
m_bufferSizeDecrypt = BlockSize + MAC_SIZE;
12879

12980
switch (aadOperatorType)
13081
{
13182
case Default:
83+
m_aad = new byte[AADBufferSize];
13284
aadOperator = new DefaultAADOperator();
13385
break;
13486
case Counter:
87+
m_aad = new byte[AADBufferSize];
13588
aadOperator = new CounterAADOperator();
13689
break;
13790
case Stream:
@@ -142,9 +95,11 @@ protected void setInnerMembers(ProcessingBufferType type, AADOperatorType aadOpe
14295
switch (dataOperatorType)
14396
{
14497
case Default:
98+
m_buf = new byte[m_bufferSizeDecrypt];
14599
dataOperator = new DefaultDataOperator();
146100
break;
147101
case Counter:
102+
m_buf = new byte[m_bufferSizeDecrypt];
148103
dataOperator = new CounterDataOperator();
149104
break;
150105
case Stream:
@@ -802,10 +757,16 @@ protected void finishAAD(State nextState, boolean isDoFinal)
802757

803758
protected void bufferReset()
804759
{
805-
Arrays.fill(m_buf, (byte)0);
806-
Arrays.fill(m_aad, (byte)0);
807-
m_bufPos = 0;
808-
m_aadPos = 0;
760+
if (m_buf != null)
761+
{
762+
Arrays.fill(m_buf, (byte)0);
763+
m_bufPos = 0;
764+
}
765+
if (m_aad != null)
766+
{
767+
Arrays.fill(m_aad, (byte)0);
768+
m_aadPos = 0;
769+
}
809770
switch (m_state)
810771
{
811772
case DecInit:

core/src/main/java/org/bouncycastle/crypto/engines/AsconAEAD128.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ public class AsconAEAD128
2121
{
2222
public AsconAEAD128()
2323
{
24-
super(ProcessingBufferType.Immediate);
2524
KEY_SIZE = 16;
2625
IV_SIZE = 16;
2726
MAC_SIZE = 16;
@@ -33,6 +32,7 @@ public AsconAEAD128()
3332
m_buf = new byte[m_bufferSizeDecrypt];
3433
m_aad = new byte[BlockSize];
3534
dsep = -9223372036854775808L; //0x80L << 56
35+
setInnerMembers(ProcessingBufferType.Immediate, AADOperatorType.Default, DataOperatorType.Default);
3636
}
3737

3838
protected long pad(int i)

core/src/main/java/org/bouncycastle/crypto/engines/AsconBaseEngine.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,6 @@ abstract class AsconBaseEngine
2424

2525
protected abstract void setBytes(long n, byte[] bs, int off);
2626

27-
protected AsconBaseEngine(ProcessingBufferType type)
28-
{
29-
super(type);
30-
setInnerMembers(type, AADOperatorType.Default, DataOperatorType.Default);
31-
}
32-
3327
private void round(long C)
3428
{
3529
long t0 = x0 ^ x1 ^ x2 ^ x3 ^ C ^ (x1 & (x0 ^ x2 ^ x4 ^ C));

core/src/main/java/org/bouncycastle/crypto/engines/AsconEngine.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ public enum AsconParameters
3535

3636
public AsconEngine(AsconParameters asconParameters)
3737
{
38-
super(asconParameters == AsconParameters.ascon128a ? ProcessingBufferType.Immediate : ProcessingBufferType.ImmediateLargeMac);
3938
this.asconParameters = asconParameters;
4039
IV_SIZE = 16;
4140
MAC_SIZE = 16;
@@ -68,6 +67,7 @@ public AsconEngine(AsconParameters asconParameters)
6867
AADBufferSize = BlockSize;
6968
m_aad = new byte[BlockSize];
7069
dsep = 1L;
70+
setInnerMembers(asconParameters == AsconParameters.ascon128a ? ProcessingBufferType.Immediate : ProcessingBufferType.ImmediateLargeMac, AADOperatorType.Default, DataOperatorType.Default);
7171
}
7272

7373
protected long pad(int i)

core/src/main/java/org/bouncycastle/crypto/engines/ElephantEngine.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.bouncycastle.crypto.engines;
22

3-
import java.io.ByteArrayOutputStream;
43
import java.util.Arrays;
54

65
/**
@@ -30,13 +29,10 @@ public enum ElephantParameters
3029
private byte[] next_mask;
3130
private final byte[] buffer;
3231
private final byte[] previous_outputMessage;
33-
private final ByteArrayOutputStream aadData = new ByteArrayOutputStream();
34-
private int messageLen;
3532
private final Permutation instance;
3633

3734
public ElephantEngine(ElephantParameters parameters)
3835
{
39-
super(ProcessingBufferType.Immediate);
4036
KEY_SIZE = 16;
4137
IV_SIZE = 12;
4238
switch (parameters)
@@ -62,16 +58,13 @@ public ElephantEngine(ElephantParameters parameters)
6258
default:
6359
throw new IllegalArgumentException("Invalid parameter settings for Elephant");
6460
}
65-
m_bufferSizeDecrypt = BlockSize + MAC_SIZE;
6661
tag_buffer = new byte[BlockSize];
6762
previous_mask = new byte[BlockSize];
6863
current_mask = new byte[BlockSize];
6964
next_mask = new byte[BlockSize];
7065
buffer = new byte[BlockSize];
71-
m_buf = new byte[BlockSize + MAC_SIZE];
7266
previous_outputMessage = new byte[BlockSize];
73-
setInnerMembers(ProcessingBufferType.Immediate, AADOperatorType.Stream, DataOperatorType.Default);
74-
reset(false);
67+
setInnerMembers(ProcessingBufferType.Immediate, AADOperatorType.Stream, DataOperatorType.Counter);
7568
}
7669

7770
private interface Permutation
@@ -344,7 +337,6 @@ private void processBuffer(byte[] input, int inOff, byte[] output, int outOff, S
344337
// Value of next_mask will be computed in the next iteration
345338
swapMasks();
346339
nb_its++;
347-
messageLen += BlockSize;
348340
}
349341

350342
protected void processBufferDecrypt(byte[] input, int inOff, byte[] output, int outOff)
@@ -396,8 +388,7 @@ private void absorbCiphertext()
396388

397389
protected void processFinalBlock(byte[] output, int outOff)
398390
{
399-
int len = m_bufPos;
400-
int mlen = len + messageLen;
391+
int mlen = dataOperator.getLen() - (forEncryption ? 0 : MAC_SIZE);
401392
processFinalAAD();
402393
int nblocks_c = 1 + mlen / BlockSize;
403394
int nblocks_m = (mlen % BlockSize) != 0 ? nblocks_c : nblocks_c - 1;
@@ -486,11 +477,10 @@ protected void reset(boolean clearMac)
486477
{
487478
Arrays.fill(tag_buffer, (byte)0);
488479
Arrays.fill(previous_outputMessage, (byte)0);
489-
m_bufPos = 0;
490480
nb_its = 0;
491481
adOff = -1;
492-
messageLen = 0;
493482
super.reset(clearMac);
483+
bufferReset();
494484
}
495485

496486
protected void checkAAD()

core/src/main/java/org/bouncycastle/crypto/engines/GiftCofbEngine.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,8 @@ public class GiftCofbEngine
2424

2525
public GiftCofbEngine()
2626
{
27-
super(ProcessingBufferType.Buffered);
2827
AADBufferSize = BlockSize = MAC_SIZE = IV_SIZE = KEY_SIZE = 16;
2928
algorithmName = "GIFT-COFB AEAD";
30-
m_bufferSizeDecrypt = BlockSize + MAC_SIZE;
31-
m_buf = new byte[m_bufferSizeDecrypt];
32-
m_aad = new byte[AADBufferSize];
3329
setInnerMembers(ProcessingBufferType.Buffered, AADOperatorType.Counter, DataOperatorType.Counter);
3430
}
3531

core/src/main/java/org/bouncycastle/crypto/engines/ISAPEngine.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ public enum IsapType
2424

2525
public ISAPEngine(IsapType isapType)
2626
{
27-
super(isapType == IsapType.ISAP_K_128A || isapType == IsapType.ISAP_K_128 ? ProcessingBufferType.Immediate :
28-
ProcessingBufferType.ImmediateLargeMac);
2927
KEY_SIZE = 16;
3028
IV_SIZE = 16;
3129
MAC_SIZE = 16;
@@ -48,9 +46,7 @@ public ISAPEngine(IsapType isapType)
4846
algorithmName = "ISAP-K-128 AEAD";
4947
break;
5048
}
51-
m_bufferSizeDecrypt = BlockSize + MAC_SIZE;
5249
AADBufferSize = BlockSize;
53-
m_aad = new byte[AADBufferSize];
5450
setInnerMembers(isapType == IsapType.ISAP_K_128A || isapType == IsapType.ISAP_K_128 ? ProcessingBufferType.Immediate :
5551
ProcessingBufferType.ImmediateLargeMac, AADOperatorType.Default, DataOperatorType.Default);
5652
}

core/src/main/java/org/bouncycastle/crypto/engines/PhotonBeetleEngine.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ public enum PhotonBeetleParameters
5555

5656
public PhotonBeetleEngine(PhotonBeetleParameters pbp)
5757
{
58-
super(pbp == PhotonBeetleParameters.pb128 ? ProcessingBufferType.Buffered : ProcessingBufferType.BufferedLargeMac);
5958
KEY_SIZE = 16;
6059
IV_SIZE = 16;
6160
MAC_SIZE = 16;
@@ -77,9 +76,6 @@ public PhotonBeetleEngine(PhotonBeetleParameters pbp)
7776
STATE_INBYTES = (STATE_INBITS + 7) >>> 3;
7877
LAST_THREE_BITS_OFFSET = (STATE_INBITS - ((STATE_INBYTES - 1) << 3) - 3);
7978
algorithmName = "Photon-Beetle AEAD";
80-
m_bufferSizeDecrypt = BlockSize + MAC_SIZE;
81-
m_buf = new byte[m_bufferSizeDecrypt];
82-
m_aad = new byte[AADBufferSize];
8379
setInnerMembers(pbp == PhotonBeetleParameters.pb128 ? ProcessingBufferType.Buffered : ProcessingBufferType.BufferedLargeMac,
8480
AADOperatorType.Counter, DataOperatorType.Default);
8581
}

core/src/main/java/org/bouncycastle/crypto/engines/RomulusEngine.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ public enum RomulusParameters
7878

7979
public RomulusEngine(RomulusParameters romulusParameters)
8080
{
81-
super(romulusParameters == RomulusParameters.RomulusT ? ProcessingBufferType.Immediate : ProcessingBufferType.Buffered);
8281
KEY_SIZE = IV_SIZE = MAC_SIZE = BlockSize = AADBufferSize = 16;
8382
CNT = new byte[7];
8483
switch (romulusParameters)
@@ -97,9 +96,6 @@ public RomulusEngine(RomulusParameters romulusParameters)
9796
instance = new RomulusT();
9897
break;
9998
}
100-
m_bufferSizeDecrypt = MAC_SIZE + BlockSize;
101-
m_buf = new byte[m_bufferSizeDecrypt];
102-
m_aad = new byte[AADBufferSize];
10399
setInnerMembers(romulusParameters == RomulusParameters.RomulusT ? ProcessingBufferType.Immediate : ProcessingBufferType.Buffered,
104100
AADOperatorType.Counter,
105101
romulusParameters == RomulusParameters.RomulusM ? DataOperatorType.Stream : DataOperatorType.Counter);

core/src/main/java/org/bouncycastle/crypto/engines/SparkleEngine.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ public enum SparkleParameters
4141

4242
public SparkleEngine(SparkleParameters sparkleParameters)
4343
{
44-
super(ProcessingBufferType.Buffered);
4544
int SPARKLE_STATE;
4645
int SCHWAEMM_TAG_LEN;
4746
int SPARKLE_CAPACITY;
@@ -110,9 +109,6 @@ public SparkleEngine(SparkleParameters sparkleParameters)
110109
k = new int[KEY_WORDS];
111110
npub = new int[RATE_WORDS];
112111
AADBufferSize = BlockSize = IV_SIZE;
113-
m_bufferSizeDecrypt = IV_SIZE + MAC_SIZE;
114-
m_buf = new byte[m_bufferSizeDecrypt];
115-
m_aad = new byte[BlockSize];
116112
setInnerMembers(ProcessingBufferType.Buffered, AADOperatorType.Default, DataOperatorType.Default);
117113

118114
// Relied on by processBytes method for decryption

0 commit comments

Comments
 (0)