Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package org.chromium.webapk.lib.client; | |
| 6 | |
| 7 import static org.junit.Assert.assertArrayEquals; | |
| 8 import static org.junit.Assert.assertEquals; | |
| 9 | |
| 10 import org.junit.Test; | |
| 11 import org.junit.runner.RunWith; | |
| 12 import org.robolectric.annotation.Config; | |
| 13 | |
| 14 import org.chromium.testing.local.LocalRobolectricTestRunner; | |
| 15 | |
| 16 import java.nio.file.Files; | |
| 17 import java.nio.file.Paths; | |
| 18 import java.security.KeyFactory; | |
| 19 import java.security.PublicKey; | |
| 20 import java.security.spec.X509EncodedKeySpec; | |
| 21 | |
| 22 /** Unit tests for WebApkVerifySignature for Android. */ | |
| 23 @RunWith(LocalRobolectricTestRunner.class) | |
| 24 @Config(manifest = Config.NONE) | |
| 25 public class WebApkVerifySignatureTest { | |
| 26 /** Elliptical Curves, Digital Signature Algorithm */ | |
| 27 private static final String KEY_FACTORY = "EC"; | |
| 28 | |
| 29 private static final String TEST_DATA_DIR = "/webapks/"; | |
| 30 | |
| 31 static PublicKey readPublicKey(String publicDER) throws Exception { | |
|
pkotwicz
2017/04/06 17:58:29
This function is now unused?
ScottK
2017/04/07 21:57:08
Good catch.
| |
| 32 return createPublicKey(Files.readAllBytes(Paths.get(publicDER))); | |
| 33 } | |
| 34 | |
| 35 private static PublicKey createPublicKey(byte[] bytes) throws Exception { | |
| 36 return KeyFactory.getInstance(KEY_FACTORY).generatePublic(new X509Encode dKeySpec(bytes)); | |
| 37 } | |
| 38 | |
| 39 @Test | |
| 40 public void testHexToBytes() throws Exception { | |
| 41 byte[] empty = {}; | |
| 42 assertArrayEquals(empty, WebApkVerifySignature.hexToBytes("")); | |
| 43 byte[] test = {(byte) 0xFF, (byte) 0xFE, 0x00, 0x01}; | |
| 44 assertArrayEquals(test, WebApkVerifySignature.hexToBytes("fffe0001")); | |
| 45 assertArrayEquals(test, WebApkVerifySignature.hexToBytes("FFFE0001")); | |
| 46 assertEquals(null, WebApkVerifySignature.hexToBytes("f")); // Odd number of nibbles. | |
| 47 } | |
| 48 | |
| 49 @Test | |
| 50 public void testCommentHash() throws Exception { | |
| 51 byte[] bytes = {(byte) 0xde, (byte) 0xca, (byte) 0xfb, (byte) 0xad}; | |
| 52 assertEquals(null, WebApkVerifySignature.parseCommentSignature("weapk:de cafbad")); | |
| 53 assertEquals(null, WebApkVerifySignature.parseCommentSignature("webapk:" )); | |
| 54 assertEquals(null, WebApkVerifySignature.parseCommentSignature("webapk:d ecafbad")); | |
| 55 assertArrayEquals( | |
| 56 bytes, WebApkVerifySignature.parseCommentSignature("webapk:12345 :decafbad")); | |
| 57 assertArrayEquals( | |
| 58 bytes, WebApkVerifySignature.parseCommentSignature("XXXwebapk:00 00:decafbadXXX")); | |
| 59 assertArrayEquals( | |
| 60 bytes, WebApkVerifySignature.parseCommentSignature("\n\nwebapk:0 000:decafbad\n\n")); | |
| 61 assertArrayEquals(bytes, | |
| 62 WebApkVerifySignature.parseCommentSignature("chrome-webapk:000:d ecafbad\n\n")); | |
| 63 assertArrayEquals(bytes, | |
| 64 WebApkVerifySignature.parseCommentSignature( | |
| 65 "prefixed: chrome-webapk:000:decafbad :suffixed")); | |
| 66 } | |
| 67 } | |
| OLD | NEW |