Skip to content

Commit 035637c

Browse files
committed
EME_OAEP 修正
1 parent 4a112a0 commit 035637c

File tree

6 files changed

+26
-21
lines changed

6 files changed

+26
-21
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ JDK11以降用 module対応っぽい版
132132
<dependency>
133133
<groupId>net.siisise</groupId>
134134
<artifactId>softlib-crypto.module</artifactId>
135-
<version>1.0.3</version>
135+
<version>1.0.6</version>
136136
<type>jar</type>
137137
</dependency>
138138
~~~
@@ -141,11 +141,11 @@ JDK8用
141141
<dependency>
142142
<groupId>net.siisise</groupId>
143143
<artifactId>softlib-crypto</artifactId>
144-
<version>1.0.3</version>
144+
<version>1.0.6</version>
145145
<type>jar</type>
146146
</dependency>
147147
~~~
148-
バージョンは 1.0.3 です。
149-
開発版は1.0.4-SNAPSHOTかも。
148+
バージョンは 1.0.5 です。
149+
開発版は1.0.7-SNAPSHOTかも。
150150

151151

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>net.siisise</groupId>
55
<artifactId>softlib-crypto.module</artifactId>
6-
<version>1.0.4</version>
6+
<version>1.0.6</version>
77
<packaging>jar</packaging>
88
<name>SoftLibCrypto</name>
99
<description>Block Stream Digest Crypt for Java</description>

src/main/java/net/siisise/security/mode/GCM.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,8 @@ public byte[] doFinalEncrypt(byte[] src, int offset, int length) {
252252
public byte[] doFinalDecrypt(byte[] src, int offset, int length) {
253253
byte[] dec = decrypt(src, offset, length - 16);
254254
byte[] t = tag();
255+
// byte[] st = Arrays.copyOfRange(src, offset + length - 16, 16);
256+
// if (!Arrays.equals(t, st)) {
255257
if (!Arrays.equals(t, 0, 16, src, offset + length - 16, 16)) {
256258
throw new IllegalStateException();
257259
}

src/main/java/net/siisise/security/padding/EME_OAEP.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.security.NoSuchAlgorithmException;
2020
import java.security.SecureRandom;
2121
import java.util.Arrays;
22+
import net.siisise.block.ReadableBlock;
2223
import net.siisise.io.Packet;
2324
import net.siisise.io.PacketA;
2425
import net.siisise.lang.Bin;
@@ -150,32 +151,32 @@ public void decodeCheck(int k, byte[] C) {
150151
}
151152

152153
/**
153-
* EME-OAEPデコード
154+
* EME-OAEP 復号化操作.
155+
* 7.1.2. Decryption Operation
156+
* 3. EME-OAEP decoding.
154157
* @param EM パディングデータ
155158
* @return 元データ
156159
*/
157160
@Override
158161
public byte[] decode(byte[] EM) {
159-
// a. 計算済み
162+
// a.
163+
if ( lHash == null ) {
164+
lHash = md.digest();
165+
}
160166
// b. 分離
161167
byte Y = EM[0];
162-
//byte[] maskedSeed = new byte[hLen];
163-
byte[] maskedSeed = Arrays.copyOfRange(EM, 1, 1 + hLen);
164-
//System.arraycopy(EM, 1, maskedSeed, 0, hLen);
165-
// byte[] maskedDB = new byte[EM.length - hLen - 1];
166-
byte[] maskedDB = Arrays.copyOfRange(EM, 1 + hLen, EM.length);
167-
// System.arraycopy(EM, hLen + 1, maskedDB, 0, maskedDB.length);
168-
// c.
169-
// d.
170-
byte[] seed = Bin.xorl(maskedSeed, mgf.generate(maskedDB, hLen));
171-
// e.
172-
// int k = EM.length;
173-
// f.
174-
byte[] DB = Bin.xorl(maskedDB, mgf.generate(seed, EM.length-hLen -1));
168+
byte[] seed = Arrays.copyOfRange(EM, 1, 1 + hLen);
169+
byte[] DB = Arrays.copyOfRange(EM, 1 + hLen, EM.length);
170+
// c. seedMask = MGF(maskedDB, hLen)
171+
// d. seed = maskedSeed \\xor seedMask
172+
Bin.xorl(seed, mgf.generate(DB, hLen));
173+
// e. dbMask = MGF( seed, k - hLen - 1 )
174+
// f. DB = maskedDB \\xor dbMask
175+
Bin.xorl(DB, mgf.generate(seed, EM.length-hLen -1));
175176
// g.
176177
byte[] lHash2 = new byte[hLen];
177178
// System.arraycopy(DB, 0, lHash2, 0, hLen);
178-
PacketA pac = new PacketA(DB);
179+
ReadableBlock pac = ReadableBlock.wrap(DB);
179180
pac.read(lHash2);
180181
// PS
181182
int i;

src/test/java/net/siisise/security/block/RSAES_OAEPTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public void testSomeMethod() throws NoSuchAlgorithmException {
6363

6464
RSAES es = new RSAES_OAEP(new SHA1());
6565
byte[] encd = es.encrypt(pub, msg);
66+
es = new RSAES_OAEP(new SHA1());
6667
byte[] dec = es.decrypt(key, encd);
6768
assertArrayEquals(msg, dec);
6869
}

src/test/java/net/siisise/security/block/RSAES_PKCS1_v1_5Test.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public void testCode() throws NoSuchAlgorithmException {
6161

6262
RSAES es = new RSAES_PKCS1_v1_5();
6363
byte[] encd = es.encrypt(pub, msg);
64+
es = new RSAES_PKCS1_v1_5();
6465
byte[] dec = es.decrypt(key, encd);
6566
assertArrayEquals(msg, dec);
6667

0 commit comments

Comments
 (0)