Установка
На текущий момент установке подлежат следующие модули:
- SpatiumSDKSwift - основной пакет Spatium SDK, содержащий логику протокола и основной криптографии.
- SignerClientSwift - вспомогательный пакет, содержащий специфические компоненты для работы SDK cо Spatium Signer Service
Доступ
Общая информация
Пакет SpatiumSDKSwift распространяется в виде бинарного .xcframework'а, содержащего в себе архитектуры: * macox (x86_64, arm64) * ios (arm64) * simulator (x86_64, arm64)
Архив с фреймворком доступен по ссылке: https://registry.spatium.io/repository/files-releases-sdk/SpatiumSDKSwift.xcframework.zip
, чек-сумма: 3a7bbcec02276166f56ac988da57172f93bea23b1cea48811624fdc05c25c11d
.
Для скачивания пакета (или установки зависимостью) необходимо указать креды доступа, получаемые напрямую у команды Спатиума
Пакет SignerClientSwift распространяется в виде публичного swiftpm-пакета: https://bitbucket.org/caspiantechnologies/spatium-signer-client-swift.git и уже включает в себя сконфигурированную зависимость от SpatiumSDKSwift
swiftpm
Для успешной установки пакета в качестве зависимости swiftpm нужно также указать креды доступа, проще всего это сделать, создав в домашней папке пользователя файл .netrc
, со следующим содержимым:
Пример конфигурации зависимости в swiftpm для SpatiumSDKSwift:
targets: [
...
.binaryTarget(
name: "SpatiumSDKSwift",
url: "https://registry.spatium.io/repository/files-releases-sdk/SpatiumSDKSwift.xcframework.zip",
checksum: "3a7bbcec02276166f56ac988da57172f93bea23b1cea48811624fdc05c25c11d"
),
...
.target(
name: <your_target>,
dependencies: [
"SpatiumSDKSwift"
]
),
...
],
Пример конфигурации зависимости в swiftpm для SignerClientSwift:
dependencies: [
...
.package(url: "https://bitbucket.org/caspiantechnologies/spatium-signer-client-swift.git", .upToNextMajor(from: "1.0.1")),
...
],
targets: [
...
.target(
name: <your_target>,
dependencies: [
.product(name: "SignerClientSwift", package: "spatium-signer-client-swift"),
]
),
...
]
Подключение
Данный сниппет позволит проверить корректность подключения, в нем происходит регистрация новой пары секретов и синхронизация публичного ключа.
import SpatiumSDKSwift
import SignerClientSwift
func test() async throws {
let auth = AuthorizationSession(
url: "https://cloud.spatium.net/authorization/v1",
tokenId: UUID().uuidString,
permissions: ["read", "secret"]
)
let clientCache = MemoryStorageDriver()
let clientStorage = MemoryStorageDriver()
let clientCrypto = SpatiumCrypto(cache: clientCache, storage: clientStorage)
let clientProtocol = SignerClient(
url: "https://cloud.spatium.net/signer/v1",
auth: auth,
crypto: clientCrypto,
timeout: 15 * 1000
)
// Retrieve a securityToken for an existing user via Cloud API
try await clientProtocol.auth.establish([securityToken])
try await clientProtocol.connect(timeout: 10 * 1000)
defer {
clientProtocol.disconnect()
}
let secretId = UUID().uuidString
try await clientProtocol.generateDistributedSecret(
secretId: secretId
);
let syncSessionId = UUID().uuidString
let publicKey = try await syncDistributedEcdsaKey(
driver: clientProtocol,
secretId: secretId,
syncSessionId: syncSessionId,
curve: .secp256k1,
derivationCoin: 0,
derivationAccount: 0
)
}