@@ -68,6 +68,24 @@ class MasterkeyTests: XCTestCase {
6868 } )
6969 }
7070
71+ func testCreateFromMasterkeyFileWithInvalidVersionMac( ) throws {
72+ let jsonData = """
73+ {
74+ " version " : 3,
75+ " scryptSalt " : " AAAAAAAAAAA= " ,
76+ " scryptCostParam " : 2,
77+ " scryptBlockSize " : 8,
78+ " primaryMasterKey " : " mM+qoQ+o0qvPTiDAZYt+flaC3WbpNAx1sTXaUzxwpy0M9Ctj6Tih/Q== " ,
79+ " hmacMasterKey " : " mM+qoQ+o0qvPTiDAZYt+flaC3WbpNAx1sTXaUzxwpy0M9Ctj6Tih/Q== " ,
80+ " versionMac " : " iUmRRHITuyJsJbVNqGNw+82YQ4A3Rma7j/y1v0DCVLa= "
81+ }
82+ """ . data ( using: . utf8) !
83+
84+ XCTAssertThrowsError ( try Masterkey . createFromMasterkeyFile ( jsonData: jsonData, password: " asd " ) , " invalid password " , { error in
85+ XCTAssertEqual ( error as! MasterkeyError , MasterkeyError . malformedMasterkeyFile ( " incorrect version or versionMac " ) )
86+ } )
87+ }
88+
7189 func testCreateFromMasterkeyFileWithMalformedJson1( ) throws {
7290 let jsonData = """
7391 {
@@ -103,5 +121,23 @@ class MasterkeyTests: XCTestCase {
103121 XCTAssertEqual ( error as! MasterkeyError , MasterkeyError . malformedMasterkeyFile ( " invalid base64 data in hmacMasterKey " ) )
104122 } )
105123 }
124+
125+ func testCreateFromMasterkeyFileWithMalformedJson3( ) throws {
126+ let jsonData = """
127+ {
128+ " version " : 3,
129+ " scryptSalt " : " AAAAAAAAAAA= " ,
130+ " scryptCostParam " : 2,
131+ " scryptBlockSize " : 8,
132+ " primaryMasterKey " : " mM+qoQ+o0qvPTiDAZYt+flaC3WbpNAx1sTXaUzxwpy0M9Ctj6Tih/Q== " ,
133+ " hmacMasterKey " : " mM+qoQ+o0qvPTiDAZYt+flaC3WbpNAx1sTXaUzxwpy0M9Ctj6Tih/Q== " ,
134+ " versionMac " : " iUmRRHITuyJsJbVN "
135+ }
136+ """ . data ( using: . utf8) !
137+
138+ XCTAssertThrowsError ( try Masterkey . createFromMasterkeyFile ( jsonData: jsonData, password: " asd " ) , " invalid password " , { error in
139+ XCTAssertEqual ( error as! MasterkeyError , MasterkeyError . malformedMasterkeyFile ( " invalid base64 data in versionMac " ) )
140+ } )
141+ }
106142
107143}
0 commit comments