Validate signature

This commit is contained in:
Max Goedjen 2020-03-22 22:57:38 -07:00
parent 65a01f59f1
commit 927dce506a
No known key found for this signature in database
GPG Key ID: E58C21DD77B9B8E8

View File

@ -1,5 +1,6 @@
import Foundation import Foundation
import XCTest import XCTest
import CryptoKit
@testable import SecretKit @testable import SecretKit
@testable import SecretAgentKit @testable import SecretAgentKit
@ -36,13 +37,25 @@ class AgentTests: XCTestCase {
func testSignature() { func testSignature() {
let stubReader = StubFileHandleReader(availableData: Constants.Requests.requestSignature) let stubReader = StubFileHandleReader(availableData: Constants.Requests.requestSignature)
let list = storeList(with: [Constants.Secrets.ecdsa256Secret]) let requestReader = OpenSSHReader(data: Constants.Requests.requestSignature[5...])
_ = requestReader.readNextChunk()
let dataToSign = requestReader.readNextChunk()
let list = storeList(with: [Constants.Secrets.ecdsa256Secret, Constants.Secrets.ecdsa384Secret])
let agent = Agent(storeList: list) let agent = Agent(storeList: list)
agent.handle(reader: stubReader, writer: stubWriter) agent.handle(reader: stubReader, writer: stubWriter)
let reader = OpenSSHReader(data: stubWriter.data) let outer = OpenSSHReader(data: stubWriter.data[5...])
// TODO: VERIFY let payload = outer.readNextChunk()
XCTAssertFalse(true) let inner = OpenSSHReader(data: payload)
print(stubWriter.data.base64EncodedString()) _ = inner.readNextChunk()
let signedData = inner.readNextChunk()
let rsData = OpenSSHReader(data: signedData)
let r = rsData.readNextChunk()
let s = rsData.readNextChunk()
var rs = r
rs.append(s)
let signature = try! P256.Signing.ECDSASignature(rawRepresentation: rs)
let valid = try! P256.Signing.PublicKey(x963Representation: Constants.Secrets.ecdsa256Secret.publicKey).isValidSignature(signature, for: dataToSign)
XCTAssertTrue(valid)
} }
// MARK: Witness protocol // MARK: Witness protocol