@@ -146,17 +146,30 @@ class OptableIdentifierEncoderTests: XCTestCase {
146146 let prefix = OptableIdentifier . hem ( " " ) . prefix
147147 let hem = " a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3 "
148148
149- XCTAssertEqual ( " e: \( hem) " , SUT . hashed ( prefix, hem) )
150- XCTAssertEqual ( " e: \( hem) " , SUT . hashed ( prefix, " \( hem) " ) )
151- XCTAssertEqual ( " e: \( hem) " , SUT . hashed ( prefix, hem. uppercased ( ) ) )
149+ XCTAssertEqual ( " e: \( hem) " , SUT . hem ( prefix, hem) )
150+ XCTAssertEqual ( " e: \( hem) " , SUT . hem ( prefix, " \( hem) " ) )
151+ XCTAssertEqual ( " e: \( hem) " , SUT . hem ( prefix, hem. uppercased ( ) ) )
152+ }
153+
154+ func test_hem_rejectsAnythingNotASHA256( ) {
155+ let prefix = OptableIdentifier . hem ( " " ) . prefix
156+ let hem = " a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3 "
157+
158+ // A plaintext Email must never reach the wire.
159+ XCTAssertEqual ( " " , SUT . hem ( prefix, " test@foobarbaz.com " ) )
160+ XCTAssertEqual ( " " , SUT . hem ( prefix, " " ) )
161+ XCTAssertEqual ( " " , SUT . hem ( prefix, String ( hem. dropLast ( ) ) ) ) // too short
162+ XCTAssertEqual ( " " , SUT . hem ( prefix, hem + " a " ) ) // too long
163+ XCTAssertEqual ( " " , SUT . hem ( prefix, String ( hem. dropLast ( ) ) + " z " ) ) // non-hex
152164 }
153165
154166 func test_hashedPhoneNumber( ) {
155167 let prefix = OptableIdentifier . hashedPhoneNumber ( " " ) . prefix
156168 let hash = " ebad3b64ae96005048fca1af2f15e5251ad3844d00fb80252711de9b651c8e46 "
157169
158- XCTAssertEqual ( " p: \( hash) " , SUT . hashed ( prefix, hash) )
159- XCTAssertEqual ( " p: \( hash) " , SUT . hashed ( prefix, " \( hash) " ) )
170+ XCTAssertEqual ( " p: \( hash) " , SUT . hashedPhoneNumber ( prefix, hash) )
171+ XCTAssertEqual ( " p: \( hash) " , SUT . hashedPhoneNumber ( prefix, " \( hash) " ) )
172+ XCTAssertEqual ( " " , SUT . hashedPhoneNumber ( prefix, " +33555456789 " ) )
160173 }
161174
162175 func test_hem_isNotHashedAgain( ) {
0 commit comments