iDNIe

这是一个基于 Swift 的库,提供以下功能:


要求 | 功能 | 安装 | 作者 | 许可

要求

此库适用于 iOS 14 或更高版本。该库允许移动设备和西班牙 DNIe 或其他电子身份证件之间通过 NFC 进行通信。 因此,此库只能在配备 NFC 技术的移动设备上使用,此技术在 iPhone 7 及更高版本的所有 iPhone 上都可用。

此库具有以下依赖项:

功能

此库提供以下功能:

读取 DNIe 或任何电子身份证件的公开数据

使用 can 建立安全通道。

        passportReader.readPassport(accessKey: can, paceKeyReference: PACEHandler.CAN_PACE_KEY_REFERENCE, tags: [], skipSecureElements: true, customDisplayMessage: { (displayMessage) in  return NFCUtils.customDisplayMessage(displayMessage: displayMessage)
        }, completed: { (passport, error) in
            if let passport = passport {            
                //passport contiene todos los datos del DNIe
            } else {
                //procesamos error
                print("Error: \(error?.localizedDescription)")
            }
        })
    }

使用 mrz 建立安全通道。

        passportReader.readPassport(accessKey: mrzKey, paceKeyReference: PACEHandler.MRZ_PACE_KEY_REFERENCE, tags: [], skipSecureElements: true, customDisplayMessage: { (displayMessage) in
        return NFCUtils.customDisplayMessage(displayMessage: displayMessage)
        }, leeCertificadosPublicos: false, completed: { (passport, error) in
            if let passport = passport {            
                //passport contiene todos los datos del DNIe
            } else {
                //procesamos error
                print("Error: \(error?.localizedDescription)")
            }
        })
    }   

使用 certToUse 中指定的 DNIe 证书对 String 格式的文本进行签名

```Swift
passportReader.signTextDNIe(accessKey: can, pin: pinDNIe, datosFirma: textoFirmar, certToUse: .FIRMA, passport: passport, paceKeyReference: PACEHandler.CAN_PACE_KEY_REFERENCE, tags: [], skipSecureElements: true, customDisplayMessage: { (displayMessage) in
        return NFCUtils.customDisplayMessage(displayMessage: displayMessage)
    }, completed: { (pass, error) in
        if let passport = passport {            
            //passport.signedMessage contiene los datos firmados
        } else {
            //procesamos error
            print("Error: \(error?.localizedDescription)")
        }
    })
}
```

使用 certToUse 中指定的 DNIe 证书对作为参数传递的文档的哈希值进行签名

```Swift
passportReader.signDocumentDNIe(accessKey: can, pin: pinDNIe, document: urlDocumento, certToUse: .FIRMA, passport: passport, paceKeyReference: PACEHandler.CAN_PACE_KEY_REFERENCE, tags: [], skipSecureElements: true, customDisplayMessage: { (displayMessage) in
        return NFCUtils.customDisplayMessage(displayMessage: displayMessage)
    }, completed: { (pass, error) in
        if let passport = passport {            
            //passport.signedMessage contiene los datos firmados
        } else {
            //procesamos error
            print("Error: \(error?.localizedDescription)")
        }
    })
}
```

使用 certToUse 中指定的 DNIe 证书对作为参数传递的哈希值和摘要进行签名

```Swift
passportReader.signHashDNIe(accessKey: can, pin: pinDNIe, hash: hash, digest: digest, certToUse: DNIeCertificates.FIRMA, passport: passport, paceKeyReference: PACEHandler.CAN_PACE_KEY_REFERENCE, tags: [], skipSecureElements: true, customDisplayMessage: { (displayMessage) in
            return NFCUtils.customDisplayMessage(displayMessage: displayMessage)
        }, operacion: .FIRMA_DOCUMENTO, completed: { (passport, error) in
        if let passport = passport {            
            //passport.signedMessage contiene los datos firmados
        } else {
            //procesamos error
            print("Error: \(error?.localizedDescription)")
        }
    })
}
```

建立必要的连接通道,以使用 DNIe 执行身份验证操作,并保持打开状态,等待签名请求

```Swift
    passportReader.authenticationDNIeOpenSession(accessKey: can, pin: pinDNIe, passport: passport, paceKeyReference: PACEHandler.CAN_PACE_KEY_REFERENCE, tags: [], skipSecureElements: true, customDisplayMessage: { (displayMessage) in
            return NFCUtils.customDisplayMessage(displayMessage: displayMessage)
        }, completed: { (pass, error) in
        if let passport = passport {            
            //passport contiene todos los datos del DNIe
        } else {
            //procesamos error
            print("Error: \(error?.localizedDescription)")
        }
    })
}
```

使用 DNIe 的身份验证证书对作为参数传递的哈希值和摘要进行签名

```Swift
passportReader.signChallengeDNIe(hash: hash, digest: digest, signPadding: .PKCS, passport: passport, paceKeyReference: PACEHandler.CAN_PACE_KEY_REFERENCE, customDisplayMessage: { (displayMessage) in
        return NFCUtils.customDisplayMessage(displayMessage: displayMessage)
        }, completed: { (passport, error) in
        if let passport = passport {            
            //passport.signedMessage contiene los datos firmados
        } else {
            //procesamos error
            print("Error: \(error?.localizedDescription)")
        }
    })
}
```

安装

Swift Package Manager

iDNIe.swift 与 Swift Package Manager v4(Swift 4 及更高版本)兼容。只需将其添加到你的 Package.swift 中的依赖项即可。

dependencies: [
    .package(url: "https://github.com/diegocidm4/iDNIe.git", from: "1.0.0")
]

CocoaPods

iDNIe.swift 通过 CocoaPods 分发。 只需将此行添加到你的 Podfile 文件中

use_frameworks!
pod 'iDNIe'

之后,运行以下命令

pod install

在上述任一选项之后,你可以在你的 .swift 文件中导入它。

import iDNIe

作者

iDNIe 由 [Diego Cid] 创建和维护

你可以在 Twitter 上关注我:@diegocidm4

许可

该库以与 app bundle 关联的年度许可分发。