1717package com.duckduckgo.adblocking.impl.domain
1818
1919import androidx.test.ext.junit.runners.AndroidJUnit4
20- import kotlinx.coroutines.test.runTest
2120import org.junit.Assert
2221import org.junit.Before
2322import org.junit.Test
2423import org.junit.runner.RunWith
25- import java.nio.charset.StandardCharsets
2624import java.security.KeyPair
2725import java.security.KeyPairGenerator
2826import java.security.PrivateKey
27+ import java.security.PublicKey
2928import java.security.Signature
3029import java.security.spec.ECGenParameterSpec
3130import java.util.Base64
@@ -42,23 +41,22 @@ class ScriptletSignatureValidatorTest {
4241 initialize(ECGenParameterSpec (" secp256r1" ))
4342 }.generateKeyPair()
4443 validator = RealScriptletSignatureValidator (
45- publicKey = keyPair.public,
46- signature = Signature .getInstance(" SHA256withECDSA" ),
47- charsetDecoder = StandardCharsets .UTF_8 .newDecoder(),
48- base64Decoder = Base64 .getDecoder(),
44+ publicKeyProvider = object : PublicKeyProvider {
45+ override val publicKey: PublicKey = keyPair.public
46+ },
4947 )
5048 }
5149
5250 @Test
53- fun whenContentAndSignatureMatchThenValidateReturnsValid () = runTest {
51+ fun whenContentAndSignatureMatchThenValidateReturnsValid () {
5452 val content = " console.log('hello')" .toByteArray()
5553 val signature = sign(content, keyPair.private)
5654
5755 Assert .assertEquals(ScriptletValidationResult .Valid , validator.validate(content, signature))
5856 }
5957
6058 @Test
61- fun whenContentIsTamperedThenValidateReturnsSignatureVerificationFailed () = runTest {
59+ fun whenContentIsTamperedThenValidateReturnsSignatureVerificationFailed () {
6260 val original = " original content" .toByteArray()
6361 val signature = sign(original, keyPair.private)
6462 val tampered = " tampered content" .toByteArray()
@@ -70,22 +68,21 @@ class ScriptletSignatureValidatorTest {
7068 }
7169
7270 @Test
73- fun whenSignatureIsFromDifferentKeyThenValidateReturnsSignatureVerificationFailed () =
74- runTest {
75- val content = " content" .toByteArray()
76- val otherKeyPair = KeyPairGenerator .getInstance(" EC" ).apply {
77- initialize(ECGenParameterSpec (" secp256r1" ))
78- }.generateKeyPair()
79- val signature = sign(content, otherKeyPair.private)
80-
81- Assert .assertEquals(
82- ScriptletValidationResult .Invalid .SignatureVerificationFailed ,
83- validator.validate(content, signature),
84- )
85- }
71+ fun whenSignatureIsFromDifferentKeyThenValidateReturnsSignatureVerificationFailed () {
72+ val content = " content" .toByteArray()
73+ val otherKeyPair = KeyPairGenerator .getInstance(" EC" ).apply {
74+ initialize(ECGenParameterSpec (" secp256r1" ))
75+ }.generateKeyPair()
76+ val signature = sign(content, otherKeyPair.private)
77+
78+ Assert .assertEquals(
79+ ScriptletValidationResult .Invalid .SignatureVerificationFailed ,
80+ validator.validate(content, signature),
81+ )
82+ }
8683
8784 @Test
88- fun whenSignatureIsMalformedBase64ThenValidateReturnsInvalidSignatureFormat () = runTest {
85+ fun whenSignatureIsMalformedBase64ThenValidateReturnsInvalidSignatureFormat () {
8986 val content = " content" .toByteArray()
9087
9188 Assert .assertEquals(
@@ -95,19 +92,18 @@ class ScriptletSignatureValidatorTest {
9592 }
9693
9794 @Test
98- fun whenSignatureBytesAreNotValidEcdsaSignatureThenValidateReturnsSignatureVerificationFailed () =
99- runTest {
100- val content = " content" .toByteArray()
101- val garbage = Base64 .getEncoder().encodeToString(ByteArray (64 ) { 0x42 })
102-
103- Assert .assertEquals(
104- ScriptletValidationResult .Invalid .SignatureVerificationFailed ,
105- validator.validate(content, garbage),
106- )
107- }
95+ fun whenSignatureBytesAreNotValidEcdsaSignatureThenValidateReturnsSignatureVerificationFailed () {
96+ val content = " content" .toByteArray()
97+ val garbage = Base64 .getEncoder().encodeToString(ByteArray (64 ) { 0x42 })
98+
99+ Assert .assertEquals(
100+ ScriptletValidationResult .Invalid .SignatureVerificationFailed ,
101+ validator.validate(content, garbage),
102+ )
103+ }
108104
109105 @Test
110- fun whenContentIsNotValidUtf8ThenValidateReturnsInvalidEncoding () = runTest {
106+ fun whenContentIsNotValidUtf8ThenValidateReturnsInvalidEncoding () {
111107 val invalidUtf8 = byteArrayOf(0xFF .toByte(), 0xFE .toByte(), 0x80 .toByte(), 0x81 .toByte())
112108 val signature = sign(invalidUtf8, keyPair.private)
113109
0 commit comments