@@ -66,42 +66,42 @@ class X25519Tests: XCTestCase {
66
66
67
67
func testCompressedKeys( ) throws {
68
68
let x963Positive = Data ( base64Encoded: " A+QHCXtGd5WWSQgp37FBPXMy+nnSwFK79QQD0ZeNMv7L " ) !
69
- let key = try P256 . KeyAgreement. PublicKey ( x963Representation : x963Positive)
69
+ let key = try P256 . KeyAgreement. PublicKey ( compressedRepresentation : x963Positive)
70
70
XCTAssertEqual (
71
71
key. x963Representation. base64EncodedString ( ) ,
72
72
" BOQHCXtGd5WWSQgp37FBPXMy+nnSwFK79QQD0ZeNMv7LE6xvfFkB4Y3VXoOpB/Kp6ngpf3Lce9hDMl7fqaDUfYE= "
73
73
)
74
74
75
75
let x963Negative = Data ( base64Encoded: " AuQHCXtGd5WWSQgp37FBPXMy+nnSwFK79QQD0ZeNMv7L " ) !
76
- let negativeKey = try P256 . KeyAgreement. PublicKey ( x963Representation : x963Negative)
76
+ let negativeKey = try P256 . KeyAgreement. PublicKey ( compressedRepresentation : x963Negative)
77
77
XCTAssertEqual (
78
78
negativeKey. x963Representation. base64EncodedString ( ) ,
79
79
" BOQHCXtGd5WWSQgp37FBPXMy+nnSwFK79QQD0ZeNMv7L7FOQgqb+HnMqoXxW+A1WFYfWgI4jhCe8zaEgVl8rgn4= "
80
80
)
81
81
82
82
let p384Positive = Data ( base64Encoded: " AyEfGE5ySReJyfSruLRdsjvCB5RNWGLk8JYrzIrans3MprXf5Q4nh69bQ2rI4+DNpw== " ) !
83
- let p384Key = try P384 . KeyAgreement. PublicKey ( x963Representation : p384Positive)
83
+ let p384Key = try P384 . KeyAgreement. PublicKey ( compressedRepresentation : p384Positive)
84
84
XCTAssertEqual (
85
85
p384Key. x963Representation. base64EncodedString ( ) ,
86
86
" BCEfGE5ySReJyfSruLRdsjvCB5RNWGLk8JYrzIrans3MprXf5Q4nh69bQ2rI4+DNp22k0ZcxSL1Ljf19pe25Y6UgedrZf1sOLBVVDZxO36mxwUgPUqFp5/0nNmGMDdQeTQ== "
87
87
)
88
88
89
89
let p384Negative = Data ( base64Encoded: " AiEfGE5ySReJyfSruLRdsjvCB5RNWGLk8JYrzIrans3MprXf5Q4nh69bQ2rI4+DNpw== " ) !
90
- let p384NegativeKey = try P384 . KeyAgreement. PublicKey ( x963Representation : p384Negative)
90
+ let p384NegativeKey = try P384 . KeyAgreement. PublicKey ( compressedRepresentation : p384Negative)
91
91
XCTAssertEqual (
92
92
p384NegativeKey. x963Representation. base64EncodedString ( ) ,
93
93
" BCEfGE5ySReJyfSruLRdsjvCB5RNWGLk8JYrzIrans3MprXf5Q4nh69bQ2rI4+DNp5JbLmjOt0K0cgKCWhJGnFrfhiUmgKTx0+qq8mOxIFZNPrfwrF6WGALYyZ508ivhsg== "
94
94
)
95
95
96
96
let p521Positive = Data ( base64Encoded: " AwGUsatNKbCi6jeO1oFHpvhxesJnRxeZ45/sqCvaEZgwnpyj+/SsXjgBViEjvlJUdqentCaUFCwjuYZJM9HpdVq4Iw== " ) !
97
- let p521Key = try P521 . KeyAgreement. PublicKey ( x963Representation : p521Positive)
97
+ let p521Key = try P521 . KeyAgreement. PublicKey ( compressedRepresentation : p521Positive)
98
98
XCTAssertEqual (
99
99
p521Key. x963Representation. base64EncodedString ( ) ,
100
100
" BAGUsatNKbCi6jeO1oFHpvhxesJnRxeZ45/sqCvaEZgwnpyj+/SsXjgBViEjvlJUdqentCaUFCwjuYZJM9HpdVq4IwE8xEGqskayEkbPkQCGqSKfVYPZTkBdEs1ham1IXcqT4HSfoGGw98UwjQRiDPfIv0+vU6ocPbxURTdvwUSWPm72WQ== "
101
101
)
102
102
103
103
let p521Negative = Data ( base64Encoded: " AgGUsatNKbCi6jeO1oFHpvhxesJnRxeZ45/sqCvaEZgwnpyj+/SsXjgBViEjvlJUdqentCaUFCwjuYZJM9HpdVq4Iw== " ) !
104
- let p521NegativeKey = try P521 . KeyAgreement. PublicKey ( x963Representation : p521Negative)
104
+ let p521NegativeKey = try P521 . KeyAgreement. PublicKey ( compressedRepresentation : p521Negative)
105
105
XCTAssertEqual (
106
106
p521NegativeKey. x963Representation. base64EncodedString ( ) ,
107
107
" BAGUsatNKbCi6jeO1oFHpvhxesJnRxeZ45/sqCvaEZgwnpyj+/SsXjgBViEjvlJUdqentCaUFCwjuYZJM9HpdVq4IwDDO75VTblN7bkwbv95Vt1gqnwmsb+i7TKelZK3ojVsH4tgX55PCDrPcvud8wg3QLBQrFXjwkOrusiQPrtpwZEJpg== "
@@ -150,6 +150,23 @@ class X25519Tests: XCTestCase {
150
150
p521NegativeKey. compressedRepresentation,
151
151
p521Negative
152
152
)
153
+
154
+ // Check that the uncompressed key gets rejected
155
+ let uncompressedX963 = Data ( base64Encoded: " BOQHCXtGd5WWSQgp37FBPXMy+nnSwFK79QQD0ZeNMv7LE6xvfFkB4Y3VXoOpB/Kp6ngpf3Lce9hDMl7fqaDUfYE= " ) !
156
+
157
+ XCTAssertThrowsError ( try P256 . KeyAgreement. PublicKey ( compressedRepresentation: uncompressedX963) )
158
+ }
159
+
160
+ func testUncompressedKeys( ) throws {
161
+ let uncompressedX963 = Data ( base64Encoded: " BOQHCXtGd5WWSQgp37FBPXMy+nnSwFK79QQD0ZeNMv7LE6xvfFkB4Y3VXoOpB/Kp6ngpf3Lce9hDMl7fqaDUfYE= " ) !
162
+ let key = try P256 . KeyAgreement. PublicKey ( x963Representation: uncompressedX963)
163
+ XCTAssertEqual (
164
+ key. x963Representation. base64EncodedString ( ) ,
165
+ " BOQHCXtGd5WWSQgp37FBPXMy+nnSwFK79QQD0ZeNMv7LE6xvfFkB4Y3VXoOpB/Kp6ngpf3Lce9hDMl7fqaDUfYE= "
166
+ )
167
+
168
+ let compressedX963Positive = Data ( base64Encoded: " A+QHCXtGd5WWSQgp37FBPXMy+nnSwFK79QQD0ZeNMv7L " ) !
169
+ XCTAssertThrowsError ( try P256 . KeyAgreement. PublicKey ( x963Representation: compressedX963Positive) )
153
170
}
154
171
155
172
func testWycheproof( ) throws {
0 commit comments