blob: e4acca5a3e45898cdc44ea8af618e2c15fd88483 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DEVICE_FIDO_MAC_ICLOUD_KEYCHAIN_INTERNALS_H_
#define DEVICE_FIDO_MAC_ICLOUD_KEYCHAIN_INTERNALS_H_
NS_ASSUME_NONNULL_BEGIN
// The following definitions of ASC* interfaces are from
// AuthenticationServicesCore, which is a private framework. The full
// definitions can be found in
// Source/WebKit/Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h from
// WebKit, but only the needed parts are specified here.
//
// These interfaces are needed to implement several behaviours that browsers
// require. Most importantly, specifying the full clientDataHash rather than
// the challenge.
@interface ASCPublicKeyCredentialDescriptor : NSObject <NSSecureCoding>
- (instancetype)initWithCredentialID:(NSData*)credentialID
transports:
(nullable NSArray<NSString*>*)allowedTransports;
@end
@protocol ASCPublicKeyCredentialCreationOptions
@property(nonatomic, copy) NSData* clientDataHash;
@property(nonatomic, nullable, copy) NSData* challenge;
@property(nonatomic, nullable, copy) NSString* userVerificationPreference;
@property(nonatomic, copy) NSArray<NSNumber*>* supportedAlgorithmIdentifiers;
@property(nonatomic) BOOL shouldRequireResidentKey;
@property(nonatomic, copy)
NSArray<ASCPublicKeyCredentialDescriptor*>* excludedCredentials;
@end
@protocol ASCPublicKeyCredentialAssertionOptions <NSCopying>
@property(nonatomic, copy) NSData* clientDataHash;
@end
@protocol ASCCredentialRequestContext
@property(nonatomic, nullable, copy) id<ASCPublicKeyCredentialAssertionOptions>
platformKeyCredentialAssertionOptions;
@property(nonatomic, nullable, copy) id<ASCPublicKeyCredentialCreationOptions>
platformKeyCredentialCreationOptions;
@end
@interface ASAuthorizationController (Secrets)
- (id<ASCCredentialRequestContext>)
_requestContextWithRequests:(NSArray<ASAuthorizationRequest*>*)requests
error:(NSError**)outError;
@end
NS_ASSUME_NONNULL_END
#endif // DEVICE_FIDO_MAC_ICLOUD_KEYCHAIN_INTERNALS_H_