Skip to content

Commit

Permalink
Merge pull request #50 from niscy-eudiw/feature/remove-self-signed
Browse files Browse the repository at this point in the history
[fix] remove self signed
  • Loading branch information
dtsiflit authored Jun 28, 2024
2 parents 0a214db + 55d3913 commit 5dd09f5
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 84 deletions.
13 changes: 6 additions & 7 deletions Sources/Entities/AuthorisationRequest/AuthorizationRequest.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,15 @@ public extension AuthorizationRequest {
throw ValidatedAuthorizationError.conflictingData
}

let usesSelfSignedDelegation = walletConfiguration?.usesSelfSignedDelegation ?? false
if let request = authorizationRequestData.request {
let validatedAuthorizationRequestData = try await ValidatedSiopOpenId4VPRequest(
request: request,
walletConfiguration: walletConfiguration
)

let resolvedSiopOpenId4VPRequestData = try await ResolvedRequestData(
clientMetaDataResolver: ClientMetaDataResolver(usesSelfSignedDelegation: usesSelfSignedDelegation),
presentationDefinitionResolver: PresentationDefinitionResolver(usesSelfSignedDelegation: usesSelfSignedDelegation),
clientMetaDataResolver: ClientMetaDataResolver(),
presentationDefinitionResolver: PresentationDefinitionResolver(),
validatedAuthorizationRequest: validatedAuthorizationRequestData
)
self = .jwt(request: resolvedSiopOpenId4VPRequestData)
Expand All @@ -63,8 +62,8 @@ public extension AuthorizationRequest {
)

let resolvedSiopOpenId4VPRequestData = try await ResolvedRequestData(
clientMetaDataResolver: ClientMetaDataResolver(usesSelfSignedDelegation: usesSelfSignedDelegation),
presentationDefinitionResolver: PresentationDefinitionResolver(usesSelfSignedDelegation: usesSelfSignedDelegation),
clientMetaDataResolver: ClientMetaDataResolver(),
presentationDefinitionResolver: PresentationDefinitionResolver(),
validatedAuthorizationRequest: validatedAuthorizationRequestData
)
self = .jwt(request: resolvedSiopOpenId4VPRequestData)
Expand All @@ -75,8 +74,8 @@ public extension AuthorizationRequest {
)

let resolvedSiopOpenId4VPRequestData = try await ResolvedRequestData(
clientMetaDataResolver: ClientMetaDataResolver(usesSelfSignedDelegation: usesSelfSignedDelegation),
presentationDefinitionResolver: PresentationDefinitionResolver(usesSelfSignedDelegation: usesSelfSignedDelegation),
clientMetaDataResolver: ClientMetaDataResolver(),
presentationDefinitionResolver: PresentationDefinitionResolver(),
validatedAuthorizationRequest: validatedAuthorizationRequestData
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,7 @@ public extension ValidatedSiopOpenId4VPRequest {
throw ValidatedAuthorizationError.invalidRequestUri(requestUri)
}

let usesSelfSignedDelegation = walletConfiguration?.usesSelfSignedDelegation ?? false
let jwt = try await ValidatedSiopOpenId4VPRequest.fetchJwtString(
usesSelfSignedDelegation: usesSelfSignedDelegation,
requestUrl: requestUrl
)

Expand Down Expand Up @@ -239,11 +237,10 @@ public extension ValidatedSiopOpenId4VPRequest {
}

fileprivate static func fetchJwtString(
usesSelfSignedDelegation: Bool = false,
requestUrl: URL
) async throws -> String {
struct ResultType: Codable {}
let fetcher = Fetcher<ResultType>(usesSelfSignedDelegation: usesSelfSignedDelegation)
let fetcher = Fetcher<ResultType>()
let jwtResult = try await fetcher.fetchString(url: requestUrl)

switch jwtResult {
Expand Down
10 changes: 2 additions & 8 deletions Sources/Main/Resolvers/ClientMetaDataResolver.swift
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,10 @@ public protocol ClientMetaDataResolverType {

public actor ClientMetaDataResolver: ClientMetaDataResolverType {

public var usesSelfSignedDelegation: Bool

/**
Initializes an instance.
*/
public init(usesSelfSignedDelegation: Bool = false) {
self.usesSelfSignedDelegation = usesSelfSignedDelegation
public init() {
}

/// Resolves client metadata asynchronously.
Expand All @@ -58,15 +55,12 @@ public actor ClientMetaDataResolver: ClientMetaDataResolverType {
fetcher: Fetcher<ClientMetaData> = Fetcher(),
source: ClientMetaDataSource?
) async -> Result<ClientMetaData?, ResolvingError> {
var resolverFetcher = fetcher
resolverFetcher.usesSelfSignedDelegation = self.usesSelfSignedDelegation

guard let source = source else { return .success(nil) }
switch source {
case .passByValue(metaData: let metaData):
return .success(metaData)
case .fetchByReference(url: let url):
let result = await resolverFetcher.fetch(url: url)
let result = await fetcher.fetch(url: url)
let metaData = try? result.get()
if let metaData = metaData {
return .success(metaData)
Expand Down
10 changes: 2 additions & 8 deletions Sources/Main/Resolvers/PresentationDefinitionResolver.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,10 @@ public protocol PresentationDefinitionResolverType {

public actor PresentationDefinitionResolver: PresentationDefinitionResolverType {

public var usesSelfSignedDelegation: Bool

/**
Initializes an instance.
*/
public init(usesSelfSignedDelegation: Bool = false) {
self.usesSelfSignedDelegation = usesSelfSignedDelegation
public init() {
}

/// Resolves presentation definitions asynchronously.
Expand All @@ -63,14 +60,11 @@ public actor PresentationDefinitionResolver: PresentationDefinitionResolverType
predefinedDefinitions: [String: PresentationDefinition] = [:],
source: PresentationDefinitionSource
) async -> Result<PresentationDefinition, ResolvingError> {
var resolverFetcher = fetcher
resolverFetcher.usesSelfSignedDelegation = self.usesSelfSignedDelegation

switch source {
case .passByValue(presentationDefinition: let presentationDefinition):
return .success(presentationDefinition)
case .fetchByReference(url: let url):
let result = await resolverFetcher.fetch(url: url)
let result = await fetcher.fetch(url: url)
let presentationDefinition = try? result.get()
if let presentationDefinition = presentationDefinition {
return .success(presentationDefinition)
Expand Down
27 changes: 3 additions & 24 deletions Sources/Utilities/RemoteDataAccess/Fetcher.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ public enum FetchError: LocalizedError {
}

public protocol Fetching {
var usesSelfSignedDelegation: Bool { get set }
associatedtype Element: Codable

/**
Expand All @@ -61,13 +60,11 @@ public protocol Fetching {

public struct Fetcher<Element: Codable>: Fetching {
@Injected var reporter: Reporting
public var usesSelfSignedDelegation: Bool

/**
Initializes a Fetcher instance.
*/
public init(usesSelfSignedDelegation: Bool = false) {
self.usesSelfSignedDelegation = usesSelfSignedDelegation
public init() {
}

/**
Expand All @@ -80,16 +77,7 @@ public struct Fetcher<Element: Codable>: Fetching {
*/
public func fetch(session: URLSession = URLSession.shared, url: URL) async -> Result<Element, FetchError> {
do {
let fetchSession: URLSession = {
if self.usesSelfSignedDelegation {
let delegate = SelfSignedSessionDelegate()
let configuration = URLSessionConfiguration.default
return URLSession(configuration: configuration, delegate: delegate, delegateQueue: nil)
} else {
return session
}
}()
let (data, response) = try await fetchSession.data(from: url)
let (data, response) = try await session.data(from: url)
let statusCode = (response as? HTTPURLResponse)?.statusCode ?? 0
if !statusCode.isWithinRange(200...299) {
throw FetchError.invalidStatusCode(url, statusCode)
Expand Down Expand Up @@ -119,16 +107,7 @@ public struct Fetcher<Element: Codable>: Fetching {
url: URL
) async throws -> Result<String, FetchError> {
do {
let fetchSession: URLSession = {
if self.usesSelfSignedDelegation {
let delegate = SelfSignedSessionDelegate()
let configuration = URLSessionConfiguration.default
return URLSession(configuration: configuration, delegate: delegate, delegateQueue: nil)
} else {
return session
}
}()
let (data, response) = try await fetchSession.data(from: url)
let (data, response) = try await session.data(from: url)
let statusCode = (response as? HTTPURLResponse)?.statusCode ?? 0
if !statusCode.isWithinRange(200...299) {
throw FetchError.invalidStatusCode(url, statusCode)
Expand Down
32 changes: 4 additions & 28 deletions Sources/Utilities/RemoteDataAccess/Poster.swift
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ public enum PostError: Error {

public protocol Posting {

var usesSelfSignedDelegation: Bool { get set }

/**
Performs a POST request with the provided URLRequest.

Expand All @@ -61,13 +59,10 @@ public protocol Posting {

public struct Poster: Posting {

public var usesSelfSignedDelegation: Bool

/**
Initializes a Poster instance.
*/
public init(usesSelfSignedDelegation: Bool = false) {
self.usesSelfSignedDelegation = usesSelfSignedDelegation
public init() {
}

/**
Expand All @@ -80,16 +75,7 @@ public struct Poster: Posting {
*/
public func post<Response: Codable>(session: URLSession, request: URLRequest) async -> Result<Response, PostError> {
do {
let postSession: URLSession = {
if self.usesSelfSignedDelegation {
let delegate = SelfSignedSessionDelegate()
let configuration = URLSessionConfiguration.default
return URLSession(configuration: configuration, delegate: delegate, delegateQueue: nil)
} else {
return session
}
}()
let (data, _) = try await postSession.data(for: request)
let (data, _) = try await session.data(for: request)
let object = try JSONDecoder().decode(Response.self, from: data)

return .success(object)
Expand All @@ -115,18 +101,8 @@ public struct Poster: Posting {
public func check(key: String, request: URLRequest) async -> Result<(String, Bool) , PostError> {
do {

let session: URLSession = {
if self.usesSelfSignedDelegation {
let delegate = SelfSignedSessionDelegate()
let configuration = URLSessionConfiguration.default
return URLSession(configuration: configuration, delegate: delegate, delegateQueue: nil)
} else {
return URLSession.shared
}
}()

let (data, response) = try await session.data(for: request)

let (data, response) = try await URLSession.shared.data(for: request)

let string = String(data: data, encoding: .utf8)
let dictionary = string?.toDictionary() ?? [:]
let value = dictionary[key] as? String ?? ""
Expand Down
6 changes: 1 addition & 5 deletions Sources/WalletEntities/WalletOpenId4VPConfig.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ public struct WalletOpenId4VPConfiguration {
public let supportedClientIdSchemes: [SupportedClientIdScheme]
public let vpFormatsSupported: [ClaimFormat]
public let knownPresentationDefinitionsPerScope: [String: PresentationDefinition]
public let usesSelfSignedDelegation: Bool

public init(
subjectSyntaxTypesSupported: [SubjectSyntaxType],
Expand All @@ -38,8 +37,7 @@ public struct WalletOpenId4VPConfiguration {
signingKeySet: WebKeySet,
supportedClientIdSchemes: [SupportedClientIdScheme],
vpFormatsSupported: [ClaimFormat],
knownPresentationDefinitionsPerScope: [String: PresentationDefinition] = [:],
usesSelfSignedDelegation: Bool = false
knownPresentationDefinitionsPerScope: [String: PresentationDefinition] = [:]
) {
self.subjectSyntaxTypesSupported = subjectSyntaxTypesSupported
self.preferredSubjectSyntaxType = preferredSubjectSyntaxType
Expand All @@ -51,7 +49,6 @@ public struct WalletOpenId4VPConfiguration {
self.supportedClientIdSchemes = supportedClientIdSchemes
self.vpFormatsSupported = vpFormatsSupported
self.knownPresentationDefinitionsPerScope = knownPresentationDefinitionsPerScope
self.usesSelfSignedDelegation = usesSelfSignedDelegation
}

internal init() throws {
Expand All @@ -65,6 +62,5 @@ public struct WalletOpenId4VPConfiguration {
supportedClientIdSchemes = []
vpFormatsSupported = []
knownPresentationDefinitionsPerScope = [:]
usesSelfSignedDelegation = false
}
}

0 comments on commit 5dd09f5

Please sign in to comment.