diff options
Diffstat (limited to 'core/src/test/java/org/spongycastle/crypto/test/DHKEKGeneratorTest.java')
-rw-r--r-- | core/src/test/java/org/spongycastle/crypto/test/DHKEKGeneratorTest.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/core/src/test/java/org/spongycastle/crypto/test/DHKEKGeneratorTest.java b/core/src/test/java/org/spongycastle/crypto/test/DHKEKGeneratorTest.java new file mode 100644 index 00000000..7a675739 --- /dev/null +++ b/core/src/test/java/org/spongycastle/crypto/test/DHKEKGeneratorTest.java @@ -0,0 +1,70 @@ +package org.spongycastle.crypto.test; + +import org.spongycastle.asn1.ASN1ObjectIdentifier; +import org.spongycastle.asn1.pkcs.PKCSObjectIdentifiers; +import org.spongycastle.crypto.DerivationFunction; +import org.spongycastle.crypto.DerivationParameters; +import org.spongycastle.crypto.agreement.kdf.DHKDFParameters; +import org.spongycastle.crypto.agreement.kdf.DHKEKGenerator; +import org.spongycastle.crypto.digests.SHA1Digest; +import org.spongycastle.util.encoders.Hex; +import org.spongycastle.util.test.SimpleTest; + +/** + * DHKEK Generator tests - from RFC 2631. + */ +public class DHKEKGeneratorTest + extends SimpleTest +{ + private byte[] seed1 = Hex.decode("000102030405060708090a0b0c0d0e0f10111213"); + private ASN1ObjectIdentifier alg1 = PKCSObjectIdentifiers.id_alg_CMS3DESwrap; + private byte[] result1 = Hex.decode("a09661392376f7044d9052a397883246b67f5f1ef63eb5fb"); + + private byte[] seed2 = Hex.decode("000102030405060708090a0b0c0d0e0f10111213"); + private ASN1ObjectIdentifier alg2 = PKCSObjectIdentifiers.id_alg_CMSRC2wrap; + private byte[] partyAInfo = Hex.decode( + "0123456789abcdeffedcba9876543201" + + "0123456789abcdeffedcba9876543201" + + "0123456789abcdeffedcba9876543201" + + "0123456789abcdeffedcba9876543201"); + private byte[] result2 = Hex.decode("48950c46e0530075403cce72889604e0"); + + public DHKEKGeneratorTest() + { + } + + public void performTest() + { + checkMask(1, new DHKEKGenerator(new SHA1Digest()), new DHKDFParameters(alg1, 192, seed1), result1); + checkMask(2, new DHKEKGenerator(new SHA1Digest()), new DHKDFParameters(alg2, 128, seed2, partyAInfo), result2); + } + + private void checkMask( + int count, + DerivationFunction kdf, + DerivationParameters params, + byte[] result) + { + byte[] data = new byte[result.length]; + + kdf.init(params); + + kdf.generateBytes(data, 0, data.length); + + if (!areEqual(result, data)) + { + fail("DHKEKGenerator failed generator test " + count); + } + } + + public String getName() + { + return "DHKEKGenerator"; + } + + public static void main( + String[] args) + { + runTest(new DHKEKGeneratorTest()); + } +} |