| // RUN: %target-typecheck-verify-swift |
| |
| // REQUIRES: objc_interop |
| // UNSUPPORTED: OS=watchos |
| // UNSUPPORTED: OS=tvos |
| // UNSUPPORTED: OS=ios |
| |
| import CryptoTokenKit |
| import Security |
| |
| if #available(OSX 10.12, *) { |
| struct TKSmartCardTest { |
| func t1(manager: TKSmartCardSlotManager, name: String) { |
| manager.getSlot(withName: name) { (slot: TKSmartCardSlot?) in |
| let _: TKSmartCardSlot.State = slot!.state |
| } |
| } |
| |
| let p1 = TKSmartCardPINFormat.Charset.numeric |
| let p2 = TKSmartCardPINFormat.Encoding.ascii |
| let p3 = TKSmartCardPINFormat.Encoding.bcd |
| let p4 = TKSmartCardPINFormat.Justification.left |
| let p5 = TKSmartCardUserInteractionForPINOperation.Completion.key |
| let p6 = TKSmartCardUserInteractionForSecurePINChange.Confirmation.current |
| let p7 = TKSmartCardProtocol.t0 |
| let p8 = TKSmartCardProtocol.t1 |
| let p9 = TKSmartCardProtocol.t15 |
| let p10 = TKSmartCardATR.InterfaceGroup() |
| |
| func t2(card: TKSmartCard) throws { |
| card.isSensitive = card.isValid |
| card.transmit(Data()) { (response: Data?, error: Error?) in |
| } |
| |
| card.userInteractionForSecurePINVerification(TKSmartCardPINFormat(), |
| apdu: Data(), pinByteOffset: 0) |
| card.userInteractionForSecurePINChange(TKSmartCardPINFormat(), |
| apdu: Data(), currentPINByteOffset: 0, newPINByteOffset: 0) |
| |
| card.send(ins: 0xa4, p1: 0x04, p2: 0x00, data:Data(), le: 0) { |
| (response: Data?, sw: UInt16, error: Error?) in |
| } |
| |
| card.send(ins: 0xa4, p1: 0x04, p2: 0x00, le: 0) { |
| (response: Data?, sw: UInt16, error: Error?) in |
| } |
| |
| card.send(ins: 0xa4, p1: 0x04, p2: 0x00, data:Data()) { |
| (response: Data?, sw: UInt16, error: Error?) in |
| } |
| |
| card.send(ins: 0xa4, p1: 0x04, p2: 0x00) { |
| (response: Data?, sw: UInt16, error: Error?) in |
| } |
| |
| let _: Int = try card.withSession() { |
| let (_, _): (UInt16, Data) = try card.send(ins: 0xa4, p1: 0x04, |
| p2: 0x00, data: Data(), le: 0) |
| let (_, _): (UInt16, Data) = try card.send(ins: 0xa4, p1: 0x04, |
| p2: 0x00, le: 0) |
| let (_, _): (UInt16, Data) = try card.send(ins: 0xa4, p1: 0x04, |
| p2: 0x00, data: Data()) |
| let (_, _): (UInt16, Data) = try card.send(ins: 0xa4, p1: 0x04, |
| p2: 0x00) |
| return 1 |
| } |
| } |
| } |
| |
| struct TKTokenTest { |
| func f1(session: TKTokenSession, sessionDelegate: TKTokenSessionDelegate, |
| algorithm: TKTokenKeyAlgorithm, |
| parameters: TKTokenKeyExchangeParameters) throws { |
| let _: Bool = sessionDelegate.tokenSession!(session, supports: .none, |
| keyObjectID: "", algorithm: algorithm) |
| let _: Data = try sessionDelegate.tokenSession!(session, sign: Data(), |
| keyObjectID: "", algorithm: algorithm) |
| let _: Data = try sessionDelegate.tokenSession!(session, decrypt: Data(), |
| keyObjectID: "", algorithm: algorithm) |
| let _: Data = try sessionDelegate.tokenSession!(session, |
| performKeyExchange: Data(), keyObjectID: "", algorithm: algorithm, |
| parameters: parameters) |
| let _: Bool = algorithm.isAlgorithm(.rsaSignatureDigestPKCS1v15SHA1) |
| let _: Bool = algorithm.supportsAlgorithm(.rsaSignatureDigestPKCS1v15SHA1) |
| } |
| |
| func f2(token: TKToken, delegate: TKTokenDelegate) throws { |
| let _: TKTokenSession = try delegate.createSession(token) |
| } |
| } |
| } |