Skip to content

Commit 8b7469d

Browse files
authored
Merge pull request #170 from cconlon/shaOids
Additional JCE MessageDigest OID values for SHA-224/256/384/512
2 parents 0465da1 + ad28132 commit 8b7469d

File tree

6 files changed

+124
-0
lines changed

6 files changed

+124
-0
lines changed

README_JCE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,13 @@ The JCE provider currently supports the following algorithms:
8989
MD5
9090
SHA-1
9191
SHA-224
92+
OID: 2.16.840.1.101.3.4.2.4
9293
SHA-256
94+
OID: 2.16.840.1.101.3.4.2.1
9395
SHA-384
96+
OID: 2.16.840.1.101.3.4.2.2
9497
SHA-512
98+
OID: 2.16.840.1.101.3.4.2.3
9599
SHA3-224
96100
SHA3-256
97101
SHA3-384

src/main/java/com/wolfssl/provider/jce/WolfCryptProvider.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,18 +86,30 @@ private void registerServices() {
8686
if (FeatureDetect.Sha224Enabled()) {
8787
put("MessageDigest.SHA-224",
8888
"com.wolfssl.provider.jce.WolfCryptMessageDigestSha224");
89+
/* SHA-224 OID */
90+
put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.4",
91+
"SHA-224");
8992
}
9093
if (FeatureDetect.Sha256Enabled()) {
9194
put("MessageDigest.SHA-256",
9295
"com.wolfssl.provider.jce.WolfCryptMessageDigestSha256");
96+
/* SHA-256 OID */
97+
put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.1",
98+
"SHA-256");
9399
}
94100
if (FeatureDetect.Sha384Enabled()) {
95101
put("MessageDigest.SHA-384",
96102
"com.wolfssl.provider.jce.WolfCryptMessageDigestSha384");
103+
/* SHA-384 OID */
104+
put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.2",
105+
"SHA-384");
97106
}
98107
if (FeatureDetect.Sha512Enabled()) {
99108
put("MessageDigest.SHA-512",
100109
"com.wolfssl.provider.jce.WolfCryptMessageDigestSha512");
110+
/* SHA-512 OID */
111+
put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.3",
112+
"SHA-512");
101113
}
102114
if (FeatureDetect.Sha3Enabled()) {
103115
put("MessageDigest.SHA3-224",

src/test/java/com/wolfssl/provider/jce/test/WolfCryptMessageDigestSha224Test.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,4 +254,31 @@ public void testSha224GetDigestLength()
254254
MessageDigest sha224 = MessageDigest.getInstance("SHA-224", "wolfJCE");
255255
assertEquals(Sha224.DIGEST_SIZE, sha224.getDigestLength());
256256
}
257+
258+
@Test
259+
public void testSha224OidAlias()
260+
throws NoSuchProviderException, NoSuchAlgorithmException {
261+
262+
byte[] input = "1234567890".getBytes();
263+
264+
/* Get MessageDigest using algorithm name */
265+
MessageDigest mdAlgorithm = MessageDigest.getInstance(
266+
"SHA-224", "wolfJCE");
267+
assertNotNull(mdAlgorithm);
268+
269+
/* Get MessageDigest using OID */
270+
MessageDigest mdOid = MessageDigest.getInstance(
271+
"2.16.840.1.101.3.4.2.4", "wolfJCE");
272+
assertNotNull(mdOid);
273+
274+
/* Verify algorithm name matches */
275+
assertEquals("SHA-224", mdAlgorithm.getAlgorithm());
276+
277+
/* Compute digests */
278+
mdAlgorithm.update(input);
279+
mdOid.update(input);
280+
281+
/* Verify digests match */
282+
assertTrue(Arrays.equals(mdAlgorithm.digest(), mdOid.digest()));
283+
}
257284
}

src/test/java/com/wolfssl/provider/jce/test/WolfCryptMessageDigestSha256Test.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,5 +395,32 @@ public void testUpdateWithOffsetEqualToArraySizeThrows()
395395
/* Test with offset equal to array size */
396396
sha256.update(data, 10, 1);
397397
}
398+
399+
@Test
400+
public void testSha256OidAlias()
401+
throws NoSuchProviderException, NoSuchAlgorithmException {
402+
403+
byte[] input = "1234567890".getBytes();
404+
405+
/* Get MessageDigest using algorithm name */
406+
MessageDigest mdAlgorithm = MessageDigest.getInstance(
407+
"SHA-256", "wolfJCE");
408+
assertNotNull(mdAlgorithm);
409+
410+
/* Get MessageDigest using OID */
411+
MessageDigest mdOid = MessageDigest.getInstance(
412+
"2.16.840.1.101.3.4.2.1", "wolfJCE");
413+
assertNotNull(mdOid);
414+
415+
/* Verify algorithm name matches */
416+
assertEquals("SHA-256", mdAlgorithm.getAlgorithm());
417+
418+
/* Compute digests */
419+
mdAlgorithm.update(input);
420+
mdOid.update(input);
421+
422+
/* Verify digests match */
423+
assertTrue(Arrays.equals(mdAlgorithm.digest(), mdOid.digest()));
424+
}
398425
}
399426

src/test/java/com/wolfssl/provider/jce/test/WolfCryptMessageDigestSha384Test.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,5 +370,32 @@ public void testSha384Threaded()
370370
}
371371
}
372372
}
373+
374+
@Test
375+
public void testSha384OidAlias()
376+
throws NoSuchProviderException, NoSuchAlgorithmException {
377+
378+
byte[] input = "1234567890".getBytes();
379+
380+
/* Get MessageDigest using algorithm name */
381+
MessageDigest mdAlgorithm = MessageDigest.getInstance(
382+
"SHA-384", "wolfJCE");
383+
assertNotNull(mdAlgorithm);
384+
385+
/* Get MessageDigest using OID */
386+
MessageDigest mdOid = MessageDigest.getInstance(
387+
"2.16.840.1.101.3.4.2.2", "wolfJCE");
388+
assertNotNull(mdOid);
389+
390+
/* Verify algorithm name matches */
391+
assertEquals("SHA-384", mdAlgorithm.getAlgorithm());
392+
393+
/* Compute digests */
394+
mdAlgorithm.update(input);
395+
mdOid.update(input);
396+
397+
/* Verify digests match */
398+
assertTrue(Arrays.equals(mdAlgorithm.digest(), mdOid.digest()));
399+
}
373400
}
374401

src/test/java/com/wolfssl/provider/jce/test/WolfCryptMessageDigestSha512Test.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,5 +390,32 @@ public void testSha512Threaded()
390390
}
391391
}
392392
}
393+
394+
@Test
395+
public void testSha512OidAlias()
396+
throws NoSuchProviderException, NoSuchAlgorithmException {
397+
398+
byte[] input = "1234567890".getBytes();
399+
400+
/* Get MessageDigest using algorithm name */
401+
MessageDigest mdAlgorithm = MessageDigest.getInstance(
402+
"SHA-512", "wolfJCE");
403+
assertNotNull(mdAlgorithm);
404+
405+
/* Get MessageDigest using OID */
406+
MessageDigest mdOid = MessageDigest.getInstance(
407+
"2.16.840.1.101.3.4.2.3", "wolfJCE");
408+
assertNotNull(mdOid);
409+
410+
/* Verify algorithm name matches */
411+
assertEquals("SHA-512", mdAlgorithm.getAlgorithm());
412+
413+
/* Compute digests */
414+
mdAlgorithm.update(input);
415+
mdOid.update(input);
416+
417+
/* Verify digests match */
418+
assertTrue(Arrays.equals(mdAlgorithm.digest(), mdOid.digest()));
419+
}
393420
}
394421

0 commit comments

Comments
 (0)