From ebeae2fe7aa84a24284e3a65aadcd76866191c09 Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Sun, 22 Mar 2020 21:33:52 -0700 Subject: [PATCH] Signing. --- SecretAgentKitTests/StubStore.swift | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/SecretAgentKitTests/StubStore.swift b/SecretAgentKitTests/StubStore.swift index 8a22ef5..cc7b7b6 100644 --- a/SecretAgentKitTests/StubStore.swift +++ b/SecretAgentKitTests/StubStore.swift @@ -13,7 +13,7 @@ extension Stub { public var secrets: [Secret] = [] public init() { - try! create(size: 256) + // try! create(size: 256) } public func create(size: Int) throws { @@ -32,7 +32,7 @@ extension Stub { kSecAttrIsPermanent: true, kSecAttrAccessControl: access ] - ] as CFDictionary + ] as CFDictionary var privateKey: SecKey! = nil var publicKey: SecKey! = nil @@ -46,11 +46,23 @@ extension Stub { print("Public Key OpenSSH: \(OpenSSHKeyWriter().openSSHString(secret: secret))") } - public func delete(secret: Secret) throws { - } - public func sign(data: Data, with secret: Secret) throws -> Data { - return Data() + let privateKey = SecKeyCreateWithData(secret.privateKey as CFData, [ + kSecAttrKeyType: kSecAttrKeyTypeECSECPrimeRandom, + kSecAttrKeySizeInBits: secret.keySize, + kSecAttrKeyClass: kSecAttrKeyClassPrivate + ] as CFDictionary + , nil)! + let signatureAlgorithm: SecKeyAlgorithm + switch secret.keySize { + case 256: + signatureAlgorithm = .ecdsaSignatureMessageX962SHA256 + case 384: + signatureAlgorithm = .ecdsaSignatureMessageX962SHA384 + default: + fatalError() + } + return SecKeyCreateSignature(privateKey, signatureAlgorithm, data as CFData, nil) as! Data } }