diff --git a/doc/index.md b/doc/index.md index c664ba1..0d570e6 100644 --- a/doc/index.md +++ b/doc/index.md @@ -1,7 +1,7 @@ # Project Wycheproof This page describes the goals and strategies of project Wycheproof. See -[README](../README.md) for introduction to the project. +[README](../README.md) for an introduction to the project. ## Defense in depth @@ -33,7 +33,7 @@ rather than exploitability. Examples: One of the goals of Wycheproof is to test for compatibility issues. Switching JCE providers should not introduce vulnerabilities simply because -the solution was developed with another provider. +the solution was developed by another provider. An example for this was the following observation: When using AES-GCM then javax.crypto.CipherInputStream worked sort of with JCE and @@ -49,10 +49,10 @@ cryptographic libraries based on the bugs found would be biased: * Libraries used internally in Google get more attention. Serious vulnerabilities in these libraries should be fixed at the time the tests are added to Wycheproof. On the other hand it is also likely that - tests find a larger number of bugs in thsese libraries when old versions are + tests find a larger number of bugs in these libraries when old versions are tested. * Tests often check for expected behaviour and compatibility. - Excpected behaviour is often defined by a prominent library. + Expected behaviour is often defined by a prominent library. Pointing out such problems can therefore penalize smaller third party libraries. * We are working toward covering as many potential vulnerabilities as possible @@ -71,7 +71,7 @@ We should promote robust interfaces with the goal to simplify the use of the library, codereviews of applications using the library and testing the library. -* When cryptrographic primitives require randomness then the random +* When cryptographic primitives require randomness then the random numbers should be chosen by the library. It shouldn't be possible for a user to provide randomness. If the library itself chooses the randomness then it is possible (at least to some degree) to check diff --git a/java/com/google/security/wycheproof/testcases/AesGcmTest.java b/java/com/google/security/wycheproof/testcases/AesGcmTest.java index d71b8c2..9f27992 100644 --- a/java/com/google/security/wycheproof/testcases/AesGcmTest.java +++ b/java/com/google/security/wycheproof/testcases/AesGcmTest.java @@ -16,13 +16,18 @@ package com.google.security.wycheproof; +import com.google.security.wycheproof.WycheproofRunner.ExcludedTest; +import com.google.security.wycheproof.WycheproofRunner.ProviderType; +import com.google.security.wycheproof.WycheproofRunner.SlowTest; import java.nio.ByteBuffer; import java.security.AlgorithmParameterGenerator; import java.security.AlgorithmParameters; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; import java.util.ArrayList; +import java.util.Arrays; import javax.crypto.Cipher; import javax.crypto.ShortBufferException; import javax.crypto.spec.GCMParameterSpec; @@ -178,6 +183,41 @@ public class AesGcmTest extends TestCase { } } + /** + * JCE has a dangerous feature: after a doFinal the cipher is typically reinitialized using the + * previous IV. This "feature" can easily break AES-GCM usages, because encrypting twice with + * the same key and IV leaks the authentication key. Hence any reasonable implementation of + * AES-GCM should not allow this. The expected behaviour of OpenJDK can be derived from the tests + * in jdk/test/com/sun/crypto/provider/Cipher/AES/TestGCMKeyAndIvCheck.java. + * OpenJDK does not allow two consecutive initializations for encryption with the same key and IV. + * + *
The test here is weaker than the restrictions in OpenJDK. The only requirement here is that + * reusing a Cipher without an explicit init() is caught. + * + *
BouncyCastle 1.52 failed this test + * + *
Conscrypt failed this test
+ */
+ public void testIvReuse() throws Exception {
+ for (GcmTestVector test : getTestVectors()) {
+ Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
+ cipher.init(Cipher.ENCRYPT_MODE, test.key, test.parameters);
+ cipher.updateAAD(test.aad);
+ byte[] ct1 = cipher.doFinal(test.pt);
+ try {
+ byte[] ct2 = cipher.doFinal(test.pt);
+ fail(
+ "It should not possible to reuse an IV."
+ + " ct1:"
+ + TestUtil.bytesToHex(ct1)
+ + " ct2:"
+ + TestUtil.bytesToHex(ct2));
+ } catch (java.lang.IllegalStateException ex) {
+ // This is expected.
+ }
+ }
+ }
+
/** Encryption with ByteBuffers. */
public void testByteBuffer() throws Exception {
for (GcmTestVector test : getTestVectors()) {
@@ -370,4 +410,62 @@ public class AesGcmTest extends TestCase {
byte[] output = cipher.doFinal(input);
assertEquals(input.length + 16, output.length);
}
+
+ /**
+ * Test AES-GCM wrapped around counter bug which leaks plaintext and authentication key. Let's
+ * consider 12-byte IV, counter = IV || 0^31 || 1. For each encryption block, the last 4 bytes of
+ * the counter is increased by 1. After 2^32 blocks, the counter will be wrapped around causing
+ * counter collision and hence, leaking plaintext and authentication key as explained below. The
+ * library must make a check to make sure that the plaintext's length never exceeds 2^32 - 2
+ * blocks. Note that this is different from usual IV collisions because it happens even if users
+ * use different IVs.
+ * We have:
+ * J0 = IV || 0^31 || 1
+ * Plaintext: P[0], P[1], P[2], ....
+ * Ciphertext:
+ * C[0] = Enc(K, (J0 + 1) % 2^32) XOR P[0]
+ * C[1] = Enc(K, (J0 + 2) % 2^32) XOR P[1]
+ * C[2] = Enc(K, (J0 + 3) % 2^32) XOR P[2]
+ * ...
+ * C[2^32 - 1] = Enc(K, J0) XOR P[2^32 - 1]
+ * C[2^32] = Enc(K, (J0 + 1)% 2^32) XOR P[2^32]
+ * It means that after 2^32 blocks, the counter is wrapped around causing counter collisions. In
+ * counter mode, once the counter is collided then it's reasonable to assume that the plaintext is
+ * leaked. As the ciphertext is already known to attacker, Enc(K, J0) is leaked.
+ * Now, as the authentication tag T is computed as GHASH(H, {}, C) XOR E(K, J0), the attacker can
+ * learn GHASH(H, {}, C}. It essentially means that the attacker finds a polynomial where H is the
+ * root (see Joux attack http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/Joux_comments.pdf).
+ * Solving polynomial equation in GF(2^128) is enough to extract the authentication key.
+ *
+ *
BouncyCastle used to have this bug (CVE-2015-6644). + * + *
OpenJDK8 used to have this bug (http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/0c3ed12cdaf5) + * + *
The test is slow as we have to encrypt 2^32 blocks. + */ + // TODO(quannguyen): Is there a faster way to test it? + @ExcludedTest( + providers = {ProviderType.CONSCRYPT}, + comment = "Conscrypt doesn't support streaming, would crash") + @SlowTest( + providers = {ProviderType.BOUNCY_CASTLE, ProviderType.SPONGY_CASTLE, ProviderType.OPENJDK}) + public void testWrappedAroundCounter() throws Exception { + try { + byte[] iv = new byte[12]; + byte[] input = new byte[16]; + byte[] key = new byte[16]; + (new SecureRandom()).nextBytes(key); + Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); + cipher.init( + Cipher.ENCRYPT_MODE, new SecretKeySpec(key, "AES"), new GCMParameterSpec(16 * 8, iv)); + byte[] output = cipher.update(input); + for (long i = 0; i < 4294967296L + 2; i++) { + byte[] output1 = cipher.update(input); + assertFalse("GCM Wrapped Around Counter" + i, Arrays.equals(output, output1)); + } + fail("Expected Exception"); + } catch (Exception expected) { + System.out.println("testWrappedAroundcounter:" + expected.toString()); + } + } } diff --git a/java/com/google/security/wycheproof/testcases/BigIntegerTest.java b/java/com/google/security/wycheproof/testcases/BigIntegerTest.java index cd5a992..8173a89 100644 --- a/java/com/google/security/wycheproof/testcases/BigIntegerTest.java +++ b/java/com/google/security/wycheproof/testcases/BigIntegerTest.java @@ -50,17 +50,12 @@ public class BigIntegerTest extends TestCase { new BigInteger("164280218643672633986221"), new BigInteger("318665857834031151167461"), new BigInteger("7395010240794120709381"), - new BigInteger("164280218643672633986221"), - new BigInteger("318665857834031151167461"), new BigInteger("2995741773170734841812261"), new BigInteger("667636712015520329618581"), new BigInteger("3317044064679887385961981"), new BigInteger("3110269097300703345712981"), new BigInteger("552727880697763694556181"), - new BigInteger("360681321802296925566181"), - new BigInteger("7395010240794120709381"), new BigInteger("3404730287403079539471001"), - new BigInteger("164280218643672633986221"), // Richarg G.E. Pinch, "Some primality testing algorithms" // Some composites that passed Maple V's primality test. new BigInteger("10710604680091"), diff --git a/java/com/google/security/wycheproof/testcases/DhTest.java b/java/com/google/security/wycheproof/testcases/DhTest.java index 3e9c9e7..84be8f2 100644 --- a/java/com/google/security/wycheproof/testcases/DhTest.java +++ b/java/com/google/security/wycheproof/testcases/DhTest.java @@ -358,6 +358,8 @@ public class DhTest extends TestCase { * itself cannot prevent all small-subgroup attacks because of the missing parameter q in the * Diffie-Hellman parameters. Implementations must add additional countermeasures such as the ones * proposed in RFC 2785. + * + *
CVE-2016-1000346: BouncyCastle before v.1.56 did not validate the other parties public key. */ public void testSubgroupConfinement() throws Exception { KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH"); diff --git a/java/com/google/security/wycheproof/testcases/DhiesTest.java b/java/com/google/security/wycheproof/testcases/DhiesTest.java index 17ab513..fbf8054 100644 --- a/java/com/google/security/wycheproof/testcases/DhiesTest.java +++ b/java/com/google/security/wycheproof/testcases/DhiesTest.java @@ -35,15 +35,18 @@ import junit.framework.TestCase; * * @author bleichen@google.com (Daniel Bleichenbacher) */ -// Tested providers: -// BC (not recommended) -// // TODO(bleichen): // - maybe again CipherInputStream, CipherOutputStream, // - byteBuffer. // - Exception handling // - Is DHIES using the key derivation function for the key stream? // - BouncyCastle knows an algorithm IES. Is this the same as DHIES? +// - Bouncy fixed a padding oracle bug in version 1.56 (CVE-2016-1000345) +// So far we have no test for this bug mainly because this cannot be tested +// through the JCA interface. BC does not register and algorithm such as +// Cipher.DHIESWITHAES-CBC. +// - So far only BouncyCastles is tesed because this is the only provider +// we use that implements DHIES. public class DhiesTest extends TestCase { // TODO(bleichen): This is the same as DhTest.java diff --git a/java/com/google/security/wycheproof/testcases/DsaTest.java b/java/com/google/security/wycheproof/testcases/DsaTest.java index e466900..4d546bb 100644 --- a/java/com/google/security/wycheproof/testcases/DsaTest.java +++ b/java/com/google/security/wycheproof/testcases/DsaTest.java @@ -15,7 +15,6 @@ */ // TODO(bleichen): -// - add tests for signature malleability and ASN parsing. // - add tests for SHA1WithDSA with wrong key // - add tests for "alternative" algorithm names // - convert tests for deterministic DSA variants. @@ -29,6 +28,8 @@ package com.google.security.wycheproof; import com.google.security.wycheproof.WycheproofRunner.ProviderType; import com.google.security.wycheproof.WycheproofRunner.SlowTest; +import java.lang.management.ManagementFactory; +import java.lang.management.ThreadMXBean; import java.math.BigInteger; import java.security.GeneralSecurityException; import java.security.KeyFactory; @@ -111,7 +112,338 @@ public class DsaTest extends TestCase { + "021d00ade65988d237d30f9ef41dd424a4e1c8f16967cf3365813fe8786236", }; + /** + * The following test vectos are derived from a valid signature by + * using alternative BER encoding as well as legacy formats. + * Accepting such signatures is in many cases benign. Hence the tests + * below will pass if such signatures are accepted as valid. + * The test vectors could be used to check for signature malleability. + * An example where this kind of signature malleability was a problem is + * https://en.bitcoin.it/wiki/Transaction_Malleability + */ + static final String[] MODIFIED_SIGNATURES = { + // BER:long form encoding of length + "30813d021c1e41b479ad576905b960fe14eadb91b0ccf34843dab916173bb8c9" + + "cd021d00ade65988d237d30f9ef41dd424a4e1c8f16967cf3365813fe8786236", + "303e02811c1e41b479ad576905b960fe14eadb91b0ccf34843dab916173bb8c9" + + "cd021d00ade65988d237d30f9ef41dd424a4e1c8f16967cf3365813fe8786236", + "303e021c1e41b479ad576905b960fe14eadb91b0ccf34843dab916173bb8c9cd" + + "02811d00ade65988d237d30f9ef41dd424a4e1c8f16967cf3365813fe8786236", + // BER:length contains leading 0 + "3082003d021c1e41b479ad576905b960fe14eadb91b0ccf34843dab916173bb8" + + "c9cd021d00ade65988d237d30f9ef41dd424a4e1c8f16967cf3365813fe87862" + + "36", + "303f0282001c1e41b479ad576905b960fe14eadb91b0ccf34843dab916173bb8" + + "c9cd021d00ade65988d237d30f9ef41dd424a4e1c8f16967cf3365813fe87862" + + "36", + "303f021c1e41b479ad576905b960fe14eadb91b0ccf34843dab916173bb8c9cd" + + "0282001d00ade65988d237d30f9ef41dd424a4e1c8f16967cf3365813fe87862" + + "36", + // BER:prepending 0's to integer + "303f021e00001e41b479ad576905b960fe14eadb91b0ccf34843dab916173bb8" + + "c9cd021d00ade65988d237d30f9ef41dd424a4e1c8f16967cf3365813fe87862" + + "36", + "303f021c1e41b479ad576905b960fe14eadb91b0ccf34843dab916173bb8c9cd" + + "021f000000ade65988d237d30f9ef41dd424a4e1c8f16967cf3365813fe87862" + + "36", + // The Sun provider accepts DSA signatures where a leading 00 has + // been omitted in the ASN encoding. + "303c021c1e41b479ad576905b960fe14eadb91b0ccf34843dab916173bb8c9cd" + + "021cade65988d237d30f9ef41dd424a4e1c8f16967cf3365813fe8786236", + }; + + /** + * The following test vectors are invalid DSA signatures. + * According to {@link java.security.Signature#verify(byte[])} verifying an invalid + * signature may either return false or throw a SignatureException. + * We expect that a correct implementation of DSA signatures satisfies this contract. + * Throwing a RuntimeException instead of a SignatureException could for example + * result in a denial of service attack. + * + *
A list of problems that are caught by these signatures: + *
Problems found: + *
A failing test simply means that the timing can be used to get information about k. Further + * analysis is necessary to determine if the bias is exploitable and how many timings are + * necessary for an attack. A passing test does not mean that the implementation is secure against + * timing attacks. The test only catches relatively big timing differences. It requires high + * confidence to fail. Noise on the test machine can prevent that a relation between timing and k + * can be detected. + * + *
Claims of what is exploitable: http://www.hpl.hp.com/techreports/1999/HPL-1999-90.pdf 30 + * signatures are sufficient to find the private key if the attacker knows 8 bits of each k. + * http://eprint.iacr.org/2004/277.pdf 27 signatures are sufficient if 8 bits of each k is known. + * Our own old experiments (using 1GB memory on a Pentium-4? CPU): 2^11 signatures are sufficient + * with a 3 bit leakage. 2^15 signatures are sufficient with a 2 bit leakage. 2^24 signatures are + * sufficient with a 1 bit leakage. Estimate for biased generation in the NIST standard: e.g. 2^22 + * signatures, 2^40 memory, 2^64 time + * + *
Sample output for the SUN provider:
+ * count:50000 cutoff:4629300 relative average:0.9992225872624547 sigmas:0.3010906585642381
+ * count:25000 cutoff:733961 relative average:0.976146066585879 sigmas:6.532668708070148
+ * count:12500 cutoff:688305 relative average:0.9070352192339134 sigmas:18.00255238454385
+ * count:6251 cutoff:673971 relative average:0.7747148791368986 sigmas:30.850903417893825
+ * count:3125 cutoff:667045 relative average:0.5901994097874541 sigmas:39.67877152897901
+ * count:1563 cutoff:662088 relative average:0.4060286694971057 sigmas:40.67294313795137
+ * count:782 cutoff:657921 relative average:0.2577955312387898 sigmas:35.94906247333319
+ * count:391 cutoff:653608 relative average:0.1453438859272699 sigmas:29.271192100879457
+ * count:196 cutoff:649280 relative average:0.08035497211567771 sigmas:22.300206785132406
+ * count:98 cutoff:645122 relative average:0.05063589092661368 sigmas:16.27820353139225
+ * count:49 cutoff:641582 relative average:0.018255560447883384 sigmas:11.903018745467488
+ * count:25 cutoff:638235 relative average:0.009082660721102722 sigmas:8.581595888660086
+ * count:13 cutoff:633975 relative average:0.0067892346039088326 sigmas:6.20259924188633
+ *
+ *
+ *
What this shows: The first line uses all 50'000 signatures. The average k of these + * signatures is close to the expected value q/2. Being more selective gives us signatures with a + * more biased k. For example, the 196 signatures with the fastest timing have about a 3-bit bias. + * From this we expect that 2^19 signatures and timings are sufficient to find the private key. + * + *
A list of problems caught by this test: + *
Bouncycastle v.1.53 fails this test. I.e. this version only checks that the shared secret is - * on the curve, but does not check whether the two curves are the same. Currently the test fails - * with a NullPointerException (possibly because of unexpected points at infinity) and it is - * unclear if the bug is exploitable. - */ - // TODO(bleichen): This can be merged with testModifiedPublic once this is fixed. - public void testDistinctCurvesSmallSubGroup() throws Exception { - KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC"); - ECGenParameterSpec ecSpec256 = new ECGenParameterSpec("secp256r1"); - keyGen.initialize(ecSpec256); - ECPrivateKey priv = (ECPrivateKey) keyGen.generateKeyPair().getPrivate(); - // Get public key for a group of order 3. I.e., (W, -W, infinity) where W is the public key - // point. Since W ,-W and infinity are points on secp256r1, implementations fail if they only - // check whether points are on the curve but fail to compare the parameters of the curve. - ECPublicKeySpec weak = EcUtil.getWeakPublicKey(EcUtil.getNistP256Params()); - KeyFactory kf = KeyFactory.getInstance("EC"); - ECPublicKey weakPub; - try { - weakPub = (ECPublicKey) kf.generatePublic(weak); - } catch (GeneralSecurityException ex) { - // The provider does not support non-standard curves or did a validity check. - // Both would be correct. - System.out.println("Skipping testDistinctCurvesSmallSubGroup: can't forge weak public key."); - return; - } - for (String algorithm : ECDH_VARIANTS) { - testDistinctCurves(algorithm, priv, weakPub); - } - } - /** * This test modifies the order of group in the public key. A severe bug would be an * implementation that leaks information whether the private key is larger than the order given in diff --git a/java/com/google/security/wycheproof/testcases/EcdsaTest.java b/java/com/google/security/wycheproof/testcases/EcdsaTest.java index 37cfa82..92058a7 100644 --- a/java/com/google/security/wycheproof/testcases/EcdsaTest.java +++ b/java/com/google/security/wycheproof/testcases/EcdsaTest.java @@ -18,6 +18,8 @@ package com.google.security.wycheproof; import com.google.security.wycheproof.WycheproofRunner.ProviderType; import com.google.security.wycheproof.WycheproofRunner.SlowTest; +import java.lang.management.ManagementFactory; +import java.lang.management.ThreadMXBean; import java.math.BigInteger; import java.security.InvalidAlgorithmParameterException; import java.security.KeyFactory; @@ -54,10 +56,10 @@ public class EcdsaTest extends TestCase { static final String CURVE = "secp256r1"; static final BigInteger PubX = new BigInteger( - "3390396496586153202365024500890309020181905168626402195853036609" + "0984128098564"); + "33903964965861532023650245008903090201819051686264021958530366090984128098564"); static final BigInteger PubY = new BigInteger( - "1135421298983937257390683162600855221890652900790509030911087400" + "65052129055287"); + "113542129898393725739068316260085522189065290079050903091108740065052129055287"); // Valid signatures for MESSAGE static final String[] VALID_SIGNATURES = { @@ -67,82 +69,387 @@ public class EcdsaTest extends TestCase { }; /** - * Test vectors with invalid signatures. The motivation for these test vectors are previously - * broken implementations. - The implementation of DSA in gpg4browsers accepted signatures with - * r=1 and s=q as valid. Similar bugs in ECDSA are thinkable, hence the test vectors contain a - * number of tests with edge case integers. - CVE-2013-2944: strongSwan 5.0.4 accepts invalid - * ECDSA signatures when openssl is used. (Not sure if the following interpretation is correct, - * because of missing details). OpenSSLs error codes are easy to misinterpret. For many functions - * the result can be 0 (verification failed), 1 (verification succeded) or -1 (invalid format). A - * simple if (result) { ... } will be incorrect in such situations. The test vectors below contain - * incorrectly encoded signatures. - careless ASN parsing. For example SunEC throws various run - * time exceptions when the ASN encoding is broken. NOTE(bleichen): The following test vectors - * were generated with some python code. New test vectors should best be done by extending this - * code. + * The following test vectors contain a valid signature that use alternative BER encoding. + * Whether such signatures are accepted as valid or rejected depends on the implementation. + * Allowing alternative BER encodings is in many cases benign. However, there are cases where this + * kind of signature malleability was a problem. See for example + * https://en.bitcoin.it/wiki/Transaction_Malleability */ + // NOTE(bleichen): The following test vectors were generated with some python code. + // New test vectors should best be done by extending this code. Some of the signatures + // can be moved to INVALID_SIGNATURES, when b/31572415 is fixed. + static final String[] MODIFIED_SIGNATURES = { + // BER:long form encoding of length + "308145022100b7babae9332b54b8a3a05b7004579821a887a1b21465f7db8a3d" + + "491b39fd2c3f0220747291dd2f3f44af7ace68ea33431d6f94e418c106a6e762" + + "85cd59f43260ecce", + "304602812100b7babae9332b54b8a3a05b7004579821a887a1b21465f7db8a3d" + + "491b39fd2c3f0220747291dd2f3f44af7ace68ea33431d6f94e418c106a6e762" + + "85cd59f43260ecce", + "3046022100b7babae9332b54b8a3a05b7004579821a887a1b21465f7db8a3d49" + + "1b39fd2c3f028120747291dd2f3f44af7ace68ea33431d6f94e418c106a6e762" + + "85cd59f43260ecce", + // BER:length contains leading 0 + "30820045022100b7babae9332b54b8a3a05b7004579821a887a1b21465f7db8a" + + "3d491b39fd2c3f0220747291dd2f3f44af7ace68ea33431d6f94e418c106a6e7" + + "6285cd59f43260ecce", + "30470282002100b7babae9332b54b8a3a05b7004579821a887a1b21465f7db8a" + + "3d491b39fd2c3f0220747291dd2f3f44af7ace68ea33431d6f94e418c106a6e7" + + "6285cd59f43260ecce", + "3047022100b7babae9332b54b8a3a05b7004579821a887a1b21465f7db8a3d49" + + "1b39fd2c3f02820020747291dd2f3f44af7ace68ea33431d6f94e418c106a6e7" + + "6285cd59f43260ecce", + // BER:prepending 0's to integer + "30470223000000b7babae9332b54b8a3a05b7004579821a887a1b21465f7db8a" + + "3d491b39fd2c3f0220747291dd2f3f44af7ace68ea33431d6f94e418c106a6e7" + + "6285cd59f43260ecce", + "3047022100b7babae9332b54b8a3a05b7004579821a887a1b21465f7db8a3d49" + + "1b39fd2c3f02220000747291dd2f3f44af7ace68ea33431d6f94e418c106a6e7" + + "6285cd59f43260ecce", + // NOTE (bleichen): belongs into INVALID_SIGNATURES. We only keep these + // sigantures here because of b/31572415. + // length = 2**31 - 1 + "30847fffffff022100b7babae9332b54b8a3a05b7004579821a887a1b21465f7" + + "db8a3d491b39fd2c3f0220747291dd2f3f44af7ace68ea33431d6f94e418c106" + + "a6e76285cd59f43260ecce", + "304902847fffffff00b7babae9332b54b8a3a05b7004579821a887a1b21465f7" + + "db8a3d491b39fd2c3f0220747291dd2f3f44af7ace68ea33431d6f94e418c106" + + "a6e76285cd59f43260ecce", + "3049022100b7babae9332b54b8a3a05b7004579821a887a1b21465f7db8a3d49" + + "1b39fd2c3f02847fffffff747291dd2f3f44af7ace68ea33431d6f94e418c106" + + "a6e76285cd59f43260ecce", + }; + + /** + * Test vectors with invalid signatures. + * The motivation for these test vectors are previously broken implementations. E.g. + *
if (result) { ... } will be incorrect in
+ * such situations. The test vectors below contain incorrectly encoded signatures.
+ * {@link java.security.Signature#verify(byte[])} should either return false or throw a + * SignatureException. Other behaviour such as throwing a RuntimeException might allow a denial + * of service attack: + *
This test tries to verify this. */ - /* TODO(bleichen): There's no point to run this test as long as not even the previous basic - test fails. + /* TODO(bleichen): There's no point to run this test as long as the previous basic test fails. public void testByteBufferAlias() throws Exception { byte[] message = "Hello".getBytes("UTF-8"); String algorithm = "ECIESWithAES-CBC"; diff --git a/java/com/google/security/wycheproof/testcases/RsaKeyTest.java b/java/com/google/security/wycheproof/testcases/RsaKeyTest.java index 26480b6..b761dae 100644 --- a/java/com/google/security/wycheproof/testcases/RsaKeyTest.java +++ b/java/com/google/security/wycheproof/testcases/RsaKeyTest.java @@ -23,6 +23,7 @@ import java.security.KeyPairGenerator; import java.security.interfaces.RSAPrivateCrtKey; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; +import java.security.spec.InvalidKeySpecException; import java.security.spec.X509EncodedKeySpec; import junit.framework.TestCase; @@ -53,6 +54,1344 @@ public class RsaKeyTest extends TestCase { + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + "0001"; + /** + * Encodings of the public key from ENCODED_PUBLIC_KEY with modifications. + * This list so far has just a simple purpose: it is used to check whether parsing the key + * leads to some unexpected exceptions. I.e. it should not be possible to crash an + * application with an modified public key. + */ + public static final String[] MODIFIED_PUBLIC_KEY = { + // length contains leading 0 + "3082009f300d06092a864886f70d010101050003818d0030818902818100ab90" + + "14dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590" + + "467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8" + + "823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f7" + + "2295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203" + + "010001", + "3081a13082000d06092a864886f70d010101050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a1300f068200092a864886f70d010101050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a1300f06092a864886f70d0101010582000003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a0300d06092a864886f70d01010105000382008d0030818902818100ab90" + + "14dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590" + + "467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8" + + "823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f7" + + "2295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203" + + "010001", + "30819f300d06092a864886f70d010101050003818d3082008902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d06092a864886f70d010101050003818d30818a0282008100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "3081a0300d06092a864886f70d010101050003818e30818b02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02820003" + + "010001", + // wrong length + "30a0300d06092a864886f70d010101050003818d0030818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "309e300d06092a864886f70d010101050003818d0030818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819f300e06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300c06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d060a2a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d06082a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d06092a864886f70d010101050103818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819e300d06092a864886f70d0101010500038e0030818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819e300d06092a864886f70d0101010500038c0030818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819d300d06092a864886f70d010101050003818b308a02818100ab9014dc47" + + "d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d05" + + "02c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236" + + "ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295db" + + "c3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203010001", + "30819d300d06092a864886f70d010101050003818b308802818100ab9014dc47" + + "d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d05" + + "02c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236" + + "ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295db" + + "c3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203010001", + "30819d300d06092a864886f70d010101050003818b308188028200ab9014dc47" + + "d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d05" + + "02c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236" + + "ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295db" + + "c3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203010001", + "30819d300d06092a864886f70d010101050003818b308188028000ab9014dc47" + + "d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d05" + + "02c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236" + + "ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295db" + + "c3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203010001", + "30819e300d06092a864886f70d010101050003818c30818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02040100" + + "01", + "30819e300d06092a864886f70d010101050003818c30818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02020100" + + "01", + // uint32 overflow in length + "3085010000009f300d06092a864886f70d010101050003818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a43085010000000d06092a864886f70d010101050003818d003081890281" + + "8100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4" + + "edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb" + + "5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e" + + "6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351" + + "a23f0203010001", + "3081a43012068501000000092a864886f70d010101050003818d003081890281" + + "8100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4" + + "edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb" + + "5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e" + + "6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351" + + "a23f0203010001", + "3081a4301206092a864886f70d0101010585010000000003818d003081890281" + + "8100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4" + + "edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb" + + "5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e" + + "6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351" + + "a23f0203010001", + "3081a3300d06092a864886f70d01010105000385010000008d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a2300d06092a864886f70d01010105000381903085010000008902818100" + + "ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9" + + "8590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26" + + "c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6feb" + + "e1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f" + + "0203010001", + "3081a2300d06092a864886f70d010101050003819030818d0285010000008100" + + "ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9" + + "8590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26" + + "c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6feb" + + "e1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f" + + "0203010001", + "3081a3300d06092a864886f70d010101050003819130818e02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02850100" + + "000003010001", + // uint64 overflow in length + "308901000000000000009f300d06092a864886f70d010101050003818d003081" + + "8902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a8308901000000000000000d06092a864886f70d010101050003818d0030" + + "818902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c5410" + + "0cb6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4" + + "d0f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984" + + "b562517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315ac" + + "f9a0b351a23f0203010001", + "3081a8301606890100000000000000092a864886f70d010101050003818d0030" + + "818902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c5410" + + "0cb6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4" + + "d0f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984" + + "b562517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315ac" + + "f9a0b351a23f0203010001", + "3081a8301606092a864886f70d010101058901000000000000000003818d0030" + + "818902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c5410" + + "0cb6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4" + + "d0f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984" + + "b562517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315ac" + + "f9a0b351a23f0203010001", + "3081a7300d06092a864886f70d0101010500038901000000000000008d003081" + + "8902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a6300d06092a864886f70d01010105000381943089010000000000000089" + + "02818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6" + + "e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f1" + + "09fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562" + + "517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0" + + "b351a23f0203010001", + "3081a6300d06092a864886f70d01010105000381943081910289010000000000" + + "00008100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6" + + "e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f1" + + "09fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562" + + "517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0" + + "b351a23f0203010001", + "3081a7300d06092a864886f70d010101050003819530819202818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02890100" + + "00000000000003010001", + // length = 2**32 - 1 + "3084ffffffff300d06092a864886f70d010101050003818d0030818902818100" + + "ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9" + + "8590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26" + + "c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6feb" + + "e1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f" + + "0203010001", + "3081a33084ffffffff06092a864886f70d010101050003818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a330110684ffffffff2a864886f70d010101050003818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a3301106092a864886f70d0101010584ffffffff03818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a2300d06092a864886f70d01010105000384ffffffff0030818902818100" + + "ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9" + + "8590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26" + + "c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6feb" + + "e1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f" + + "0203010001", + "3081a1300d06092a864886f70d010101050003818f3084ffffffff02818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a1300d06092a864886f70d010101050003818f30818c0284ffffffff00ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a2300d06092a864886f70d010101050003819030818d02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0284ffff" + + "ffff010001", + // length = 2**64 - 1 + "3088ffffffffffffffff300d06092a864886f70d010101050003818d00308189" + + "02818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6" + + "e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f1" + + "09fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562" + + "517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0" + + "b351a23f0203010001", + "3081a73088ffffffffffffffff06092a864886f70d010101050003818d003081" + + "8902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a730150688ffffffffffffffff2a864886f70d010101050003818d003081" + + "8902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a7301506092a864886f70d0101010588ffffffffffffffff03818d003081" + + "8902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a6300d06092a864886f70d01010105000388ffffffffffffffff00308189" + + "02818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6" + + "e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f1" + + "09fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562" + + "517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0" + + "b351a23f0203010001", + "3081a5300d06092a864886f70d01010105000381933088ffffffffffffffff02" + + "818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1" + + "d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109" + + "fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b56251" + + "7e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b3" + + "51a23f0203010001", + "3081a5300d06092a864886f70d01010105000381933081900288ffffffffffff" + + "ffff00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1" + + "d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109" + + "fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b56251" + + "7e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b3" + + "51a23f0203010001", + "3081a6300d06092a864886f70d010101050003819430819102818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0288ffff" + + "ffffffffffff010001", + // removing sequence + "", + "30819003818d0030818902818100ab9014dc47d44b6d260fc1fef9ab022042fd" + + "9566e9d7b60c54100cb6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb1" + + "67d8a44ab93d73c4d0f109fb5a26c2f8823236ff517cf84412e173679cfae42e" + + "043b6fec81f9d984b562517e6febe1f72295dbc3fdfc19d3240aa75515563f31" + + "dad83563f3a315acf9a0b351a23f0203010001", + // appending 0's to sequence + "3081a1300d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "00010000", + "3081a1300f06092a864886f70d0101010500000003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a0300d06092a864886f70d010101050003818e30818b02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "010000", + // prepending 0's to sequence + "3081a10000300d06092a864886f70d010101050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a1300f000006092a864886f70d010101050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a0300d06092a864886f70d010101050003818e30818b000002818100ab90" + + "14dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590" + + "467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8" + + "823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f7" + + "2295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203" + + "010001", + // appending unused 0's + "30819f300d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "00010000", + "3081a1300d06092a864886f70d0101010500000003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a1300f06092a864886f70d0101010000050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a0300d06092a864886f70d010101050003818e30818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "010000", + "3081a0300d06092a864886f70d010101050003818e30818b02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f00000203" + + "010001", + // appending null value + "3081a1300d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "00010500", + "3081a1300f06092a864886f70d0101010500050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a1300f060b2a864886f70d0101010500050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a1300f06092a864886f70d0101010502050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a1300d06092a864886f70d010101050003818f0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "00010500", + "3081a0300d06092a864886f70d010101050003818e30818b02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "010500", + "3081a0300d06092a864886f70d010101050003818e30818b02818300ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f05000203" + + "010001", + "3081a0300d06092a864886f70d010101050003818e30818b02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02050100" + + "010500", + // including garbage + "3081a4498030819f300d06092a864886f70d010101050003818d003081890281" + + "8100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4" + + "edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb" + + "5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e" + + "6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351" + + "a23f0203010001", + "3081a4250030819f300d06092a864886f70d010101050003818d003081890281" + + "8100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4" + + "edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb" + + "5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e" + + "6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351" + + "a23f0203010001", + "3081a230819f300d06092a864886f70d010101050003818d0030818902818100" + + "ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9" + + "8590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26" + + "c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6feb" + + "e1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f" + + "02030100010004deadbeef", + "3081a330114980300d06092a864886f70d010101050003818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a330112500300d06092a864886f70d010101050003818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a7300f300d06092a864886f70d01010105000004deadbeef03818d003081" + + "8902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a33011260d498006092a864886f70d010101050003818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a33011260d250006092a864886f70d010101050003818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a73015260b06092a864886f70d0101010004deadbeef050003818d003081" + + "8902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a3301106092a864886f70d01010125044980050003818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a3301106092a864886f70d01010125042500050003818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a7301506092a864886f70d010101250205000004deadbeef03818d003081" + + "8902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a4300d06092a864886f70d0101010500238192498003818d003081890281" + + "8100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4" + + "edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb" + + "5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e" + + "6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351" + + "a23f0203010001", + "3081a4300d06092a864886f70d0101010500238192250003818d003081890281" + + "8100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4" + + "edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb" + + "5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e" + + "6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351" + + "a23f0203010001", + "3081a8300d06092a864886f70d010101050023819003818d0030818902818100" + + "ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9" + + "8590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26" + + "c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6feb" + + "e1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f" + + "02030100010004deadbeef", + "3081a3300d06092a864886f70d010101050003819130818e4980308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a3300d06092a864886f70d010101050003819130818e2500308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a7300d06092a864886f70d010101050003819530818c30818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "030100010004deadbeef", + "3081a3300d06092a864886f70d010101050003819130818e2281864980028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a3300d06092a864886f70d010101050003819130818e2281862500028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a7300d06092a864886f70d010101050003819530819222818402818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f00" + + "04deadbeef0203010001", + "3081a2300d06092a864886f70d010101050003819030818d02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f22074980" + + "0203010001", + "3081a2300d06092a864886f70d010101050003819030818d02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f22072500" + + "0203010001", + "3081a6300d06092a864886f70d010101050003819430819102818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f22050203" + + "0100010004deadbeef", + // including undefined tags + "3081a8aa00bb00cd0030819f300d06092a864886f70d010101050003818d0030" + + "818902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c5410" + + "0cb6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4" + + "d0f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984" + + "b562517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315ac" + + "f9a0b351a23f0203010001", + "3081a6aa02aabb30819f300d06092a864886f70d010101050003818d00308189" + + "02818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6" + + "e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f1" + + "09fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562" + + "517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0" + + "b351a23f0203010001", + "3081a73015aa00bb00cd00300d06092a864886f70d010101050003818d003081" + + "8902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a53013aa02aabb300d06092a864886f70d010101050003818d0030818902" + + "818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1" + + "d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109" + + "fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b56251" + + "7e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b3" + + "51a23f0203010001", + "3081a730152611aa00bb00cd0006092a864886f70d010101050003818d003081" + + "8902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a53013260faa02aabb06092a864886f70d010101050003818d0030818902" + + "818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1" + + "d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109" + + "fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b56251" + + "7e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b3" + + "51a23f0203010001", + "3081a7301506092a864886f70d0101012508aa00bb00cd00050003818d003081" + + "8902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a5301306092a864886f70d0101012506aa02aabb050003818d0030818902" + + "818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1" + + "d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109" + + "fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b56251" + + "7e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b3" + + "51a23f0203010001", + "3081a8300d06092a864886f70d0101010500238196aa00bb00cd0003818d0030" + + "818902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c5410" + + "0cb6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4" + + "d0f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984" + + "b562517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315ac" + + "f9a0b351a23f0203010001", + "3081a6300d06092a864886f70d0101010500238194aa02aabb03818d00308189" + + "02818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6" + + "e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f1" + + "09fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562" + + "517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0" + + "b351a23f0203010001", + "3081a7300d06092a864886f70d0101010500038195308192aa00bb00cd003081" + + "8902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a5300d06092a864886f70d0101010500038193308190aa02aabb30818902" + + "818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1" + + "d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109" + + "fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b56251" + + "7e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b3" + + "51a23f0203010001", + "3081a7300d06092a864886f70d010101050003819530819222818aaa00bb00cd" + + "0002818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100c" + + "b6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0" + + "f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b5" + + "62517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9" + + "a0b351a23f0203010001", + "3081a5300d06092a864886f70d0101010500038193308190228188aa02aabb02" + + "818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1" + + "d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109" + + "fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b56251" + + "7e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b3" + + "51a23f0203010001", + "3081a6300d06092a864886f70d010101050003819430819102818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f220baa00" + + "bb00cd000203010001", + "3081a4300d06092a864886f70d010101050003819230818f02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f2209aa02" + + "aabb0203010001", + // changing tag value + "2e819f300d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "32819f300d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "ff819f300d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f2e0d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f320d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819fff0d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d04092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d08092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300dff092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d06092a864886f70d010101030003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d06092a864886f70d010101070003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d06092a864886f70d010101ff0003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d06092a864886f70d010101050001818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d06092a864886f70d010101050005818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d06092a864886f70d0101010500ff818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819e300d06092a864886f70d010101050003818c2e818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819e300d06092a864886f70d010101050003818c32818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819e300d06092a864886f70d010101050003818cff818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819e300d06092a864886f70d010101050003818c30818900818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819e300d06092a864886f70d010101050003818c30818904818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819e300d06092a864886f70d010101050003818c308189ff818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819e300d06092a864886f70d010101050003818c30818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f00030100" + + "01", + "30819e300d06092a864886f70d010101050003818c30818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f04030100" + + "01", + "30819e300d06092a864886f70d010101050003818c30818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23fff030100" + + "01", + // dropping value of sequence + "3000", + "308192300003818d0030818902818100ab9014dc47d44b6d260fc1fef9ab0220" + + "42fd9566e9d7b60c54100cb6e1d4edc98590467d0502c17fce69d00ac5efb40b" + + "2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236ff517cf84412e173679cfa" + + "e42e043b6fec81f9d984b562517e6febe1f72295dbc3fdfc19d3240aa7551556" + + "3f31dad83563f3a315acf9a0b351a23f0203010001", + // using composition + "3081a430013030819e0d06092a864886f70d010101050003818d003081890281" + + "8100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4" + + "edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb" + + "5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e" + + "6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351" + + "a23f0203010001", + "3081a33011300106300c092a864886f70d010101050003818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a33011260d06012a0608864886f70d010101050003818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a4300d06092a864886f70d010101050023819203010003818c3081890281" + + "8100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4" + + "edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb" + + "5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e" + + "6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351" + + "a23f0203010001", + "3081a3300d06092a864886f70d010101050003819130818e3001023081888181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a3300d06092a864886f70d010101050003819130818e2281860201000281" + + "80ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + "3081a2300d06092a864886f70d010101050003819030818d02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f22070201" + + "0102020001", + // truncate sequence + "30819e300d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "00", + "30819e0d06092a864886f70d010101050003818d0030818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819e300c06092a864886f70d0101010503818d0030818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819e300c092a864886f70d010101050003818d0030818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819d300d06092a864886f70d010101050003818b30818802818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100", + "30819d300d06092a864886f70d010101050003818b308188818100ab9014dc47" + + "d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d05" + + "02c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236" + + "ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295db" + + "c3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203010001", + // prepend empty sequence + "3081a13000300d06092a864886f70d010101050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a1300f300006092a864886f70d010101050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a0300d06092a864886f70d010101050003818e30818b300002818100ab90" + + "14dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590" + + "467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8" + + "823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f7" + + "2295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203" + + "010001", + // append empty sequence + "3081a1300d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "00013000", + "3081a1300f06092a864886f70d0101010500300003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a0300d06092a864886f70d010101050003818e30818b02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "013000", + // sequence of sequence + "3081a230819f300d06092a864886f70d010101050003818d0030818902818100" + + "ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9" + + "8590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26" + + "c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6feb" + + "e1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f" + + "0203010001", + "3081a1300f300d06092a864886f70d010101050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + "3081a1300d06092a864886f70d010101050003818f30818c30818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + // truncated sequence + "300f300d06092a864886f70d0101010500", + "30819d300b06092a864886f70d01010103818d0030818902818100ab9014dc47" + + "d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d05" + + "02c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236" + + "ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295db" + + "c3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203010001", + "308199300d06092a864886f70d010101050003818730818402818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f", + // repeat element in sequence + "3082012f300d06092a864886f70d010101050003818d0030818902818100ab90" + + "14dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590" + + "467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8" + + "823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f7" + + "2295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203" + + "01000103818d0030818902818100ab9014dc47d44b6d260fc1fef9ab022042fd" + + "9566e9d7b60c54100cb6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb1" + + "67d8a44ab93d73c4d0f109fb5a26c2f8823236ff517cf84412e173679cfae42e" + + "043b6fec81f9d984b562517e6febe1f72295dbc3fdfc19d3240aa75515563f31" + + "dad83563f3a315acf9a0b351a23f0203010001", + "3081a3300d06092a864886f70d010101050003819130818e02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "010203010001", + // long form encoding of length + "3081a030810d06092a864886f70d010101050003818d0030818902818100ab90" + + "14dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590" + + "467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8" + + "823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f7" + + "2295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203" + + "010001", + "3081a0300e0681092a864886f70d010101050003818d0030818902818100ab90" + + "14dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590" + + "467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8" + + "823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f7" + + "2295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203" + + "010001", + "3081a0300e06092a864886f70d01010105810003818d0030818902818100ab90" + + "14dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590" + + "467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8" + + "823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f7" + + "2295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203" + + "010001", + "30819f300d06092a864886f70d010101050003818d30818a02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02810301" + + "0001", + // removing oid + "3081943002050003818d0030818902818100ab9014dc47d44b6d260fc1fef9ab" + + "022042fd9566e9d7b60c54100cb6e1d4edc98590467d0502c17fce69d00ac5ef" + + "b40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236ff517cf84412e17367" + + "9cfae42e043b6fec81f9d984b562517e6febe1f72295dbc3fdfc19d3240aa755" + + "15563f31dad83563f3a315acf9a0b351a23f0203010001", + // appending 0's to oid + "3081a1300f060b2a864886f70d0101010000050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + // prepending 0's to oid + "3081a1300f060b00002a864886f70d010101050003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + // dropping value of oid + "30819630040600050003818d0030818902818100ab9014dc47d44b6d260fc1fe" + + "f9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d0502c17fce69d00a" + + "c5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236ff517cf84412e1" + + "73679cfae42e043b6fec81f9d984b562517e6febe1f72295dbc3fdfc19d3240a" + + "a75515563f31dad83563f3a315acf9a0b351a23f0203010001", + // modify first byte of oid + "30819f300d06092b864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + // modify last byte of oid + "30819f300d06092a864886f70d010100050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + // truncate oid + "30819e300c06082a864886f70d0101050003818d0030818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819e300c0608864886f70d010101050003818d0030818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + // wrong oid + "30819b300906052b0e03021a050003818d0030818902818100ab9014dc47d44b" + + "6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d0502c1" + + "7fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236ff51" + + "7cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295dbc3fd" + + "fc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203010001", + "30819f300d0609608648016503040201050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + // longer oid + "3081a0300e060a2a864886f70d01010101050003818d0030818902818100ab90" + + "14dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590" + + "467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8" + + "823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f7" + + "2295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203" + + "010001", + // oid with modified node + "30819f300d06092a864886f70d010111050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "3081a33011060d2a864886f70d01018880808001050003818d00308189028181" + + "00ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4ed" + + "c98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a" + + "26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6f" + + "ebe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a2" + + "3f0203010001", + // large integer in oid + "3081a8301606122a864886f70d010182808080808080808001050003818d0030" + + "818902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c5410" + + "0cb6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4" + + "d0f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984" + + "b562517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315ac" + + "f9a0b351a23f0203010001", + // oid with invalid node + "3081a0300e060a2a864886f70d010101e0050003818d0030818902818100ab90" + + "14dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590" + + "467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8" + + "823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f7" + + "2295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203" + + "010001", + "3081a0300e060a2a80864886f70d010101050003818d0030818902818100ab90" + + "14dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590" + + "467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8" + + "823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f7" + + "2295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203" + + "010001", + // appending 0's to null + "3081a1300f06092a864886f70d0101010502000003818d0030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + // appending 0's to bit string + "3081a1300d06092a864886f70d010101050003818f0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "00010000", + // prepending 0's to bit string + "3081a1300d06092a864886f70d010101050003818f00000030818902818100ab" + + "9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc985" + + "90467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2" + + "f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1" + + "f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02" + + "03010001", + // modify first byte of bit string + "30819f300d06092a864886f70d010101050003818d0130818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + // modify last byte of bit string + "30819f300d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0000", + // truncate bit string + "30819e300d06092a864886f70d010101050003818c0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "00", + "30819e300d06092a864886f70d010101050003818c30818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + // removing integer + "3018300d06092a864886f70d0101010500030730050203010001", + // appending 0's to integer + "3081a0300d06092a864886f70d010101050003818e30818b02818300ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f00000203" + + "010001", + "3081a0300d06092a864886f70d010101050003818e30818b02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02050100" + + "010000", + // prepending 0's to integer + "3081a0300d06092a864886f70d010101050003818e30818b028183000000ab90" + + "14dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590" + + "467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8" + + "823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f7" + + "2295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203" + + "010001", + "3081a0300d06092a864886f70d010101050003818e30818b02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02050000" + + "010001", + // dropping value of integer + "301a300d06092a864886f70d01010105000309300702000203010001", + "30819b300d06092a864886f70d010101050003818930818602818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0200", + // modify first byte of integer + "30819e300d06092a864886f70d010101050003818c30818902818101ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "01", + "30819e300d06092a864886f70d010101050003818c30818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030000" + + "01", + // modify last byte of integer + "30819e300d06092a864886f70d010101050003818c30818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23e02030100" + + "01", + "30819e300d06092a864886f70d010101050003818c30818902818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02030100" + + "00", + // truncate integer + "30819d300d06092a864886f70d010101050003818b30818802818000ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a20203010001", + "30819d300d06092a864886f70d010101050003818b308188028180ab9014dc47" + + "d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d05" + + "02c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236" + + "ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295db" + + "c3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203010001", + "30819d300d06092a864886f70d010101050003818b30818802818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02020100", + "30819d300d06092a864886f70d010101050003818b30818802818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f02020001", + // leading ff in integer + "30819f300d06092a864886f70d010101050003818d30818a028182ff00ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020301" + + "0001", + "30819f300d06092a864886f70d010101050003818d30818a02818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0204ff01" + + "0001", + // infinity + "301b300d06092a864886f70d0101010500030a30080901800203010001", + "30819c300d06092a864886f70d010101050003818a30818702818100ab9014dc" + + "47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d" + + "0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f88232" + + "36ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295" + + "dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f090180", + // n=0 + "301c300d06092a864886f70d0101010500030b0030080201000203010001", + // negative n + "30819f300d06092a864886f70d010101050003818d00308189028181ff546feb" + + "23b82bb492d9f03e010654fddfbd026a99162849f3abeff3491e2b12367a6fb9" + + "82fafd3e8031962ff53a104bf4d34e98275bb546c28c3b2f0ef604a5d93d077d" + + "cdc900ae8307bbed1e8c9863051bd1fbc490137e06267b4a9dae8190141e08dd" + + "6a243c0203e62cdbf558aaeaa9c0ce2527ca9c0c5cea53065f4cae5dc1020301" + + "0001", + // e=0 + "30819d300d06092a864886f70d010101050003818b0030818702818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020100", + // e=1 + "30819d300d06092a864886f70d010101050003818b0030818702818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020101", + // e=2 + "30819d300d06092a864886f70d010101050003818b0030818702818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f020102", + // negative e + "30819f300d06092a864886f70d010101050003818d0030818902818100ab9014" + + "dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc9859046" + + "7d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f882" + + "3236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f722" + + "95dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203fe" + + "ffff", + }; + private void checkPrivateCrtKey(RSAPrivateCrtKey key, int expectedKeySize) throws Exception { BigInteger p = key.getPrimeP(); BigInteger q = key.getPrimeQ(); @@ -136,4 +1475,39 @@ public class RsaKeyTest extends TestCase { "X.509", pub.getFormat()); assertEquals(ENCODED_PUBLIC_KEY, TestUtil.bytesToHex(pub.getEncoded())); } + + /** + * Parses a list of modified encodings of an RSA public key. + * Expects that any modification either results in an InvalidKeySpecException + * or an altered PublicKey. + * This test has mostly "defense in depth" characteristic, since applications should + * never accept unauthenticated public keys. + */ + public void testModifiedPublicKeyDecoding() throws Exception { + KeyFactory kf = KeyFactory.getInstance("RSA"); + int cnt = 0; + for (String encoded : MODIFIED_PUBLIC_KEY) { + X509EncodedKeySpec spec = new X509EncodedKeySpec(TestUtil.hexToBytes(encoded)); + try { + RSAPublicKey unusedKey = (RSAPublicKey) kf.generatePublic(spec); + // TODO(bleichen): check the keys that are accepted. + // To decide whether a key should have been rejected or not the test vectors must be + // divided into several categories: + // - keys that use BER encoding: these are OK + // - keys that include additional fields or garbage: might be OK + // - keys where the modification does not change the values: are probably OK + // - keys with missing parameters: should be rejected + // - keys with impossible values (negative n, negative e): should be rejected. + } catch (InvalidKeySpecException ex) { + // expected + } catch (Exception ex) { + System.out.println("generatePublic throws:" + ex.getMessage() + " for " + encoded); + cnt++; + } + } + assertEquals(0, cnt); + } + + // TODO(bleichen): This test is only needed as long as there are open issues. + } diff --git a/java/com/google/security/wycheproof/testcases/RsaSignatureTest.java b/java/com/google/security/wycheproof/testcases/RsaSignatureTest.java index 2759a84..3d214fe 100644 --- a/java/com/google/security/wycheproof/testcases/RsaSignatureTest.java +++ b/java/com/google/security/wycheproof/testcases/RsaSignatureTest.java @@ -65,6 +65,8 @@ public class RsaSignatureTest extends TestCase { * around 2012. *