Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ let package = Package(
swiftSettings: [.unsafeFlags(["-suppress-warnings"])]),
.binaryTarget(
name: "BitwardenFFI",
url: "https://bwlivefronttest.blob.core.windows.net/sdk/59cee6e-BitwardenFFI.xcframework.zip",
checksum: "6539debb4d746c5fda9cd4ff36828d6ff65d84ca15dcb71746ef6420ce3775a2"),
url: "https://bwlivefronttest.blob.core.windows.net/sdk/7641717-BitwardenFFI.xcframework.zip",
checksum: "f802265346d49cb39c4284e2ffe68c4b4aa579b5792e5e137627eeec6d9872aa"),
.testTarget(
name: "BitwardenSdkTests",
dependencies: ["BitwardenSdk"])
Expand Down
173 changes: 173 additions & 0 deletions Sources/BitwardenSdk/BitwardenFido.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1753,6 +1753,108 @@ public func FfiConverterTypeSelectedCredential_lower(_ value: SelectedCredential
return FfiConverterTypeSelectedCredential.lower(value)
}


/**
* An Unverified asset link.
*/
public struct UnverifiedAssetLink {
/**
* Application package name.
*/
public let packageName: String
/**
* Fingerprint to compare.
*/
public let sha256CertFingerprint: String
/**
* Host to lookup the well known asset link.
*/
public let host: String
/**
* When sourced from the application statement list or parsed from host for passkeys.
* Will be generated from `host` if not provided.
*/
public let assetLinkUrl: String?

// Default memberwise initializers are never public by default, so we
// declare one manually.
public init(
/**
* Application package name.
*/packageName: String,
/**
* Fingerprint to compare.
*/sha256CertFingerprint: String,
/**
* Host to lookup the well known asset link.
*/host: String,
/**
* When sourced from the application statement list or parsed from host for passkeys.
* Will be generated from `host` if not provided.
*/assetLinkUrl: String?) {
self.packageName = packageName
self.sha256CertFingerprint = sha256CertFingerprint
self.host = host
self.assetLinkUrl = assetLinkUrl
}
}



extension UnverifiedAssetLink: Equatable, Hashable {
public static func ==(lhs: UnverifiedAssetLink, rhs: UnverifiedAssetLink) -> Bool {
if lhs.packageName != rhs.packageName {
return false
}
if lhs.sha256CertFingerprint != rhs.sha256CertFingerprint {
return false
}
if lhs.host != rhs.host {
return false
}
if lhs.assetLinkUrl != rhs.assetLinkUrl {
return false
}
return true
}

public func hash(into hasher: inout Hasher) {
hasher.combine(packageName)
hasher.combine(sha256CertFingerprint)
hasher.combine(host)
hasher.combine(assetLinkUrl)
}
}


public struct FfiConverterTypeUnverifiedAssetLink: FfiConverterRustBuffer {
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> UnverifiedAssetLink {
return
try UnverifiedAssetLink(
packageName: FfiConverterString.read(from: &buf),
sha256CertFingerprint: FfiConverterString.read(from: &buf),
host: FfiConverterString.read(from: &buf),
assetLinkUrl: FfiConverterOptionString.read(from: &buf)
)
}

public static func write(_ value: UnverifiedAssetLink, into buf: inout [UInt8]) {
FfiConverterString.write(value.packageName, into: &buf)
FfiConverterString.write(value.sha256CertFingerprint, into: &buf)
FfiConverterString.write(value.host, into: &buf)
FfiConverterOptionString.write(value.assetLinkUrl, into: &buf)
}
}


public func FfiConverterTypeUnverifiedAssetLink_lift(_ buf: RustBuffer) throws -> UnverifiedAssetLink {
return try FfiConverterTypeUnverifiedAssetLink.lift(buf)
}

public func FfiConverterTypeUnverifiedAssetLink_lower(_ value: UnverifiedAssetLink) -> RustBuffer {
return FfiConverterTypeUnverifiedAssetLink.lower(value)
}

// Note that we don't yet support `indirect` for enums.
// See https://github.com/mozilla/uniffi-rs/issues/396 for further discussion.

Expand Down Expand Up @@ -1814,6 +1916,77 @@ extension ClientData: Equatable, Hashable {}



// Note that we don't yet support `indirect` for enums.
// See https://github.com/mozilla/uniffi-rs/issues/396 for further discussion.
/**
* The origin of a WebAuthn request.
*/

public enum Origin {

/**
* A Url, meant for a request in the web browser.
*/
case web(String
)
/**
* An android digital asset fingerprint.
* Meant for a request coming from an android application.
*/
case android(UnverifiedAssetLink
)
}


public struct FfiConverterTypeOrigin: FfiConverterRustBuffer {
typealias SwiftType = Origin

public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Origin {
let variant: Int32 = try readInt(&buf)
switch variant {

case 1: return .web(try FfiConverterString.read(from: &buf)
)

case 2: return .android(try FfiConverterTypeUnverifiedAssetLink.read(from: &buf)
)

default: throw UniffiInternalError.unexpectedEnumCase
}
}

public static func write(_ value: Origin, into buf: inout [UInt8]) {
switch value {


case let .web(v1):
writeInt(&buf, Int32(1))
FfiConverterString.write(v1, into: &buf)


case let .android(v1):
writeInt(&buf, Int32(2))
FfiConverterTypeUnverifiedAssetLink.write(v1, into: &buf)

}
}
}


public func FfiConverterTypeOrigin_lift(_ buf: RustBuffer) throws -> Origin {
return try FfiConverterTypeOrigin.lift(buf)
}

public func FfiConverterTypeOrigin_lower(_ value: Origin) -> RustBuffer {
return FfiConverterTypeOrigin.lower(value)
}



extension Origin: Equatable, Hashable {}



// Note that we don't yet support `indirect` for enums.
// See https://github.com/mozilla/uniffi-rs/issues/396 for further discussion.

Expand Down
18 changes: 10 additions & 8 deletions Sources/BitwardenSdk/BitwardenSDK.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2166,9 +2166,9 @@ public func FfiConverterTypeClientFido2Authenticator_lower(_ value: ClientFido2A

public protocol ClientFido2ClientProtocol : AnyObject {

func authenticate(origin: String, request: String, clientData: ClientData) async throws -> PublicKeyCredentialAuthenticatorAssertionResponse
func authenticate(origin: Origin, request: String, clientData: ClientData) async throws -> PublicKeyCredentialAuthenticatorAssertionResponse

func register(origin: String, request: String, clientData: ClientData) async throws -> PublicKeyCredentialAuthenticatorAttestationResponse
func register(origin: Origin, request: String, clientData: ClientData) async throws -> PublicKeyCredentialAuthenticatorAttestationResponse

}

Expand Down Expand Up @@ -2213,13 +2213,13 @@ open class ClientFido2Client:



open func authenticate(origin: String, request: String, clientData: ClientData)async throws -> PublicKeyCredentialAuthenticatorAssertionResponse {
open func authenticate(origin: Origin, request: String, clientData: ClientData)async throws -> PublicKeyCredentialAuthenticatorAssertionResponse {
return
try await uniffiRustCallAsync(
rustFutureFunc: {
uniffi_bitwarden_uniffi_fn_method_clientfido2client_authenticate(
self.uniffiClonePointer(),
FfiConverterString.lower(origin),FfiConverterString.lower(request),FfiConverterTypeClientData_lower(clientData)
FfiConverterTypeOrigin_lower(origin),FfiConverterString.lower(request),FfiConverterTypeClientData_lower(clientData)
)
},
pollFunc: ffi_bitwarden_uniffi_rust_future_poll_rust_buffer,
Expand All @@ -2230,13 +2230,13 @@ open func authenticate(origin: String, request: String, clientData: ClientData)a
)
}

open func register(origin: String, request: String, clientData: ClientData)async throws -> PublicKeyCredentialAuthenticatorAttestationResponse {
open func register(origin: Origin, request: String, clientData: ClientData)async throws -> PublicKeyCredentialAuthenticatorAttestationResponse {
return
try await uniffiRustCallAsync(
rustFutureFunc: {
uniffi_bitwarden_uniffi_fn_method_clientfido2client_register(
self.uniffiClonePointer(),
FfiConverterString.lower(origin),FfiConverterString.lower(request),FfiConverterTypeClientData_lower(clientData)
FfiConverterTypeOrigin_lower(origin),FfiConverterString.lower(request),FfiConverterTypeClientData_lower(clientData)
)
},
pollFunc: ffi_bitwarden_uniffi_rust_future_poll_rust_buffer,
Expand Down Expand Up @@ -4832,6 +4832,8 @@ fileprivate struct FfiConverterDictionaryStringBool: FfiConverterRustBuffer {








Expand Down Expand Up @@ -5107,10 +5109,10 @@ private var initializationResult: InitializationResult = {
if (uniffi_bitwarden_uniffi_checksum_method_clientfido2authenticator_silently_discover_credentials() != 47262) {
return InitializationResult.apiChecksumMismatch
}
if (uniffi_bitwarden_uniffi_checksum_method_clientfido2client_authenticate() != 55420) {
if (uniffi_bitwarden_uniffi_checksum_method_clientfido2client_authenticate() != 36920) {
return InitializationResult.apiChecksumMismatch
}
if (uniffi_bitwarden_uniffi_checksum_method_clientfido2client_register() != 51611) {
if (uniffi_bitwarden_uniffi_checksum_method_clientfido2client_register() != 29872) {
return InitializationResult.apiChecksumMismatch
}
if (uniffi_bitwarden_uniffi_checksum_method_clientfolders_decrypt() != 1331) {
Expand Down