Verify certificate provider medium
Reviewed By: antonk52 Differential Revision: D33917041 fbshipit-source-id: 91a9554397063d53a903a5b1406b46ddf07360b2
This commit is contained in:
committed by
Facebook GitHub Bot
parent
c7492a83c7
commit
c238cef5b0
@@ -311,6 +311,8 @@ class ServerController extends EventEmitter implements ServerEventsListener {
|
||||
}
|
||||
}
|
||||
|
||||
certificateProvider.verifyMedium(medium);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
reportPlatformFailures(
|
||||
certificateProvider.processCertificateSigningRequest(
|
||||
|
||||
@@ -15,6 +15,9 @@ import {csrFileName, extractAppNameFromCSR} from '../../utils/certificateUtils';
|
||||
const logTag = 'AndroidCertificateProvider';
|
||||
|
||||
export default class AndroidCertificateProvider extends CertificateProvider {
|
||||
name = 'AndroidCertificateProvider';
|
||||
medium = 'FS_ACCESS' as const;
|
||||
|
||||
constructor(private adb: Client) {
|
||||
super();
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ import CertificateProvider from '../../utils/CertificateProvider';
|
||||
import fs from 'fs-extra';
|
||||
|
||||
export default class DesktopCertificateProvider extends CertificateProvider {
|
||||
name = 'DesktopCertificateProvider';
|
||||
medium = 'FS_ACCESS' as const;
|
||||
async getTargetDeviceId(): Promise<string> {
|
||||
// TODO: Could we use some real device serial? Currently, '' corresponds to a local device.
|
||||
// Whats if some app connects from a remote device?
|
||||
|
||||
@@ -19,6 +19,8 @@ const tmpDir = promisify(tmp.dir) as (options?: DirOptions) => Promise<string>;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
export default class iOSCertificateProvider extends CertificateProvider {
|
||||
name = 'iOSCertificateProvider';
|
||||
medium = 'FS_ACCESS' as const;
|
||||
constructor(private idbConfig: IdbConfig) {
|
||||
super();
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ import {KeytarManager} from '../utils/keytar';
|
||||
import CertificateProvider from '../utils/CertificateProvider';
|
||||
|
||||
export default class WWWCertificateProvider extends CertificateProvider {
|
||||
name = 'WWWCertificateProvider';
|
||||
medium = 'WWW' as const;
|
||||
constructor(private keytarManager: KeytarManager) {
|
||||
super();
|
||||
}
|
||||
|
||||
@@ -19,6 +19,15 @@ import {
|
||||
export type CertificateExchangeMedium = 'FS_ACCESS' | 'WWW' | 'NONE';
|
||||
|
||||
export default abstract class CertificateProvider {
|
||||
abstract medium: CertificateExchangeMedium;
|
||||
abstract name: string;
|
||||
|
||||
verifyMedium(medium: CertificateExchangeMedium) {
|
||||
if (this.medium !== medium) {
|
||||
throw new Error(`${this.name} does not support medium ${medium}`);
|
||||
}
|
||||
}
|
||||
|
||||
async processCertificateSigningRequest(
|
||||
unsanitizedCsr: string,
|
||||
os: string,
|
||||
|
||||
Reference in New Issue
Block a user