mirror of
https://github.com/maxgoedjen/secretive.git
synced 2025-09-15 08:50:57 +00:00
Fix ECDSA test.
This commit is contained in:
parent
d73c1c666e
commit
c0370669a9
@ -33,8 +33,12 @@ final class OpenSSHReader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func readNextChunkAsString() throws -> String {
|
func readNextChunkAsString(convertEndianness: Bool = true) throws(OpenSSHReaderError) -> String {
|
||||||
try String(decoding: readNextChunk(), as: UTF8.self)
|
try String(decoding: readNextChunk(convertEndianness: convertEndianness), as: UTF8.self)
|
||||||
|
}
|
||||||
|
|
||||||
|
func readNextChunkAsSubReader(convertEndianness: Bool = true) throws(OpenSSHReaderError) -> OpenSSHReader {
|
||||||
|
OpenSSHReader(data: try readNextChunk(convertEndianness: convertEndianness))
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -21,11 +21,6 @@ import CryptoKit
|
|||||||
let request = try SSHAgentInputParser().parse(data: Constants.Requests.requestIdentities)
|
let request = try SSHAgentInputParser().parse(data: Constants.Requests.requestIdentities)
|
||||||
let response = await agent.handle(request: request, provenance: .test)
|
let response = await agent.handle(request: request, provenance: .test)
|
||||||
|
|
||||||
let actualHex = response.compactMap { ("0" + String($0, radix: 16, uppercase: false)).suffix(2) }.joined()
|
|
||||||
let expectedHex = Constants.Responses.requestIdentitiesMultiple.compactMap { ("0" + String($0, radix: 16, uppercase: false)).suffix(2) }.joined()
|
|
||||||
print(actualHex)
|
|
||||||
print(expectedHex)
|
|
||||||
|
|
||||||
let actual = OpenSSHReader(data: response)
|
let actual = OpenSSHReader(data: response)
|
||||||
let expected = OpenSSHReader(data: Constants.Responses.requestIdentitiesMultiple)
|
let expected = OpenSSHReader(data: Constants.Responses.requestIdentitiesMultiple)
|
||||||
print(actual, expected)
|
print(actual, expected)
|
||||||
@ -42,13 +37,21 @@ import CryptoKit
|
|||||||
#expect(response == Constants.Responses.requestFailure)
|
#expect(response == Constants.Responses.requestFailure)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(.disabled()) func ecdsaSignature() async throws {
|
@Test func ecdsaSignature() async throws {
|
||||||
let request = try SSHAgentInputParser().parse(data: Constants.Requests.requestSignature)
|
let request = try SSHAgentInputParser().parse(data: Constants.Requests.requestSignature)
|
||||||
guard case SSHAgent.Request.signRequest(let context) = request else { return }
|
guard case SSHAgent.Request.signRequest(let context) = request else { return }
|
||||||
let list = await storeList(with: [Constants.Secrets.ecdsa256Secret, Constants.Secrets.ecdsa384Secret])
|
let list = await storeList(with: [Constants.Secrets.ecdsa256Secret, Constants.Secrets.ecdsa384Secret])
|
||||||
let agent = Agent(storeList: list)
|
let agent = Agent(storeList: list)
|
||||||
let signedData = await agent.handle(request: request, provenance: .test)
|
let response = await agent.handle(request: request, provenance: .test)
|
||||||
let rsData = OpenSSHReader(data: signedData)
|
let responseReader = OpenSSHReader(data: response)
|
||||||
|
let length = try responseReader.readNextBytes(as: UInt32.self).bigEndian
|
||||||
|
let type = try responseReader.readNextBytes(as: UInt8.self).bigEndian
|
||||||
|
#expect(length == response.count - MemoryLayout<UInt32>.size)
|
||||||
|
#expect(type == SSHAgent.Response.agentSignResponse.rawValue)
|
||||||
|
let outer = OpenSSHReader(data: responseReader.remaining)
|
||||||
|
let inner = try outer.readNextChunkAsSubReader()
|
||||||
|
_ = try inner.readNextChunk()
|
||||||
|
let rsData = try inner.readNextChunkAsSubReader()
|
||||||
var r = try rsData.readNextChunk()
|
var r = try rsData.readNextChunk()
|
||||||
var s = try rsData.readNextChunk()
|
var s = try rsData.readNextChunk()
|
||||||
// This is fine IRL, but it freaks out CryptoKit
|
// This is fine IRL, but it freaks out CryptoKit
|
||||||
|
Loading…
Reference in New Issue
Block a user