Skip to content

Release 76417172489d5790babbe14bb8c6ad8b3aac2a33 #23

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 19, 2024
Merged
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
@@ -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"])
173 changes: 173 additions & 0 deletions Sources/BitwardenSdk/BitwardenFido.swift
Original file line number Diff line number Diff line change
@@ -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.

@@ -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.

18 changes: 10 additions & 8 deletions Sources/BitwardenSdk/BitwardenSDK.swift
Original file line number Diff line number Diff line change
@@ -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

}

@@ -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,
@@ -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,
@@ -4832,6 +4832,8 @@ fileprivate struct FfiConverterDictionaryStringBool: FfiConverterRustBuffer {








@@ -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) {