-
Notifications
You must be signed in to change notification settings - Fork 0
Getting started
To easily get started with RIA-DigiDoc-iOS project, check out Building source code with XCode
Modules can also be imported manually.
You can find the source code under releases. Just download "Source code (zip or tar.gz)", unpack it and you're ready to go!
- Download latest version of the source code if you haven't done so yet, and unpack it.
- In XCode, choose File -> New -> Package...
- Choose the directory where the unpacked source code is
- Import modules as needed
- After importing, build project
To fetch and package default configuration, run command:
swift-sh SetupConfiguration/Sources/main.swiftThe default configuration setup is:
Configuration downloaded from: https://id.eesti.ee/
Configuration update interval: 7 (days)
The build will be stopped if configuration validation fails.
You're almost done. In order for library to work with containers, it needs to prepare a few things first. For that you need to call setup method. We recommend you to do this at earliest opportunity. Setup will take some time, so you need to make sure it finishes first before starting any container actions.
If you have imported LibdigidocLib, CryptoLib and ConfigLib modules, example setup libdigidocpp as follows:
import LibdigidocLibSwift
import CryptoObjCWrapper
import CryptoSwift
import ConfigLib
import CommonsLib
import UtilsLib
actor LibrarySetup: Loggable {
private let configurationLoader: ConfigurationLoaderProtocol
private let configurationRepository: ConfigurationRepositoryProtocol
private let fileManager: FileManagerProtocol
private let fileUtil: FileUtilProtocol
private let tslUtil: TSLUtilProtocol
private let dataStore: DataStoreProtocol
private let advancedSettingsRepository: AdvancedSettingsRepositoryProtocol
private let keychainStore: KeychainStoreProtocol
private let proxyUtil: ProxyUtilProtocol
private let cryptoSetup: CryptoSetupProtocol
private let userAgentUtil: UserAgentUtilProtocol
init(
configurationLoader: ConfigurationLoaderProtocol,
configurationRepository: ConfigurationRepositoryProtocol,
fileManager: FileManagerProtocol,
fileUtil: FileUtilProtocol,
tslUtil: TSLUtilProtocol,
dataStore: DataStoreProtocol,
advancedSettingsRepository: AdvancedSettingsRepositoryProtocol,
keychainStore: KeychainStoreProtocol,
proxyUtil: ProxyUtilProtocol,
cryptoSetup: CryptoSetupProtocol,
userAgentUtil: UserAgentUtilProtocol
) {
self.configurationLoader = configurationLoader
self.configurationRepository = configurationRepository
self.fileManager = fileManager
self.fileUtil = fileUtil
self.tslUtil = tslUtil
self.dataStore = dataStore
self.advancedSettingsRepository = advancedSettingsRepository
self.keychainStore = keychainStore
self.proxyUtil = proxyUtil
self.cryptoSetup = cryptoSetup
self.userAgentUtil = userAgentUtil
}
func setupLibraries() async {
let isLoggingEnabled = await initializeLogging()
do {
let proxyInfo = await proxyUtil.getProxyInfo()
let appLanguage = await dataStore.getSelectedLanguage()
let userAgent = userAgentUtil.userAgent(diagnostics: .none, language: appLanguage)
try DigiDocConf.observeConfigurationUpdates(
configurationRepository: configurationRepository
)
if let schemaDirectory = Directories.getLibraryDirectory(fileManager: fileManager) {
try tslUtil.setupTSLFiles(tsls: [], destinationDir: schemaDirectory)
}
let configDirectory = try Directories.getCacheDirectory(
fileManager: fileManager
).appending(path:
CommonsLib.Constants.Configuration.CacheConfigFolder
)
// Make sure "initDigiDoc" is still run even if configuration has an error
do {
try await configurationLoader.initConfiguration(
configDir: configDirectory,
proxyInfo: proxyInfo,
userAgent: userAgent
)
} catch {}
try await DigiDocConf.initDigiDoc(
isLoggingEnabled: isLoggingEnabled,
tsaOption: getTSAOption(),
tsaUrl: getTSAUrl(),
tsaCert: getTSACert(),
sivaOption: getSiVaOption(),
sivaUrl: getSiVaUrl(),
sivaCert: getSiVaCert(),
proxyInfo: proxyInfo,
userAgent: userAgent
)
await CryptoContainer.enableLogging(isLoggingEnabled)
let configurationProvider = await configurationRepository.getConfiguration()
await cryptoSetup.setLdapConfig(configurationProvider)
await cryptoSetup.setCdoc2Config(configurationProvider)
await cryptoSetup.setCdoc2Settings(configurationProvider)
try saveLDAPCertsToLibrary(ldapCertsBundle: configurationProvider?.ldapCerts)
} catch let error {}
}