Перейти к содержанию

Установка

На текущий момент установке подлежат следующие модули:

  • 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, со следующим содержимым:

machine https://registry.spatium.io login <yourlogin> password <yourpassword>

Пример конфигурации зависимости в 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
    )
}