Skip to content

Commit

Permalink
(Refactor) Move Pcr list to tunnel module and clarify isProductionParam
Browse files Browse the repository at this point in the history
  • Loading branch information
jomi-se committed Aug 9, 2024
1 parent cc9472e commit d522bce
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 15 deletions.
6 changes: 1 addition & 5 deletions src/endpoints/getAuditLogs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,7 @@ export const getAuditLogs = async (params: {
const { teamDeviceCredentials, queryParams } = params;

const api = await apiConnect({
isProduction: true,
enclavePcrList: [
[3, 'dfb6428f132530b8c021bea8cbdba2c87c96308ba7e81c7aff0655ec71228122a9297fd31fe5db7927a7322e396e4c16'],
[8, '4dbb92401207e019e132d86677857081d8e4d21f946f3561b264b7389c6982d3a86bcf9560cef4a2327eac5c5c6ab820'],
],
useProductionCertificate: true,
});

const { queryExecutionId } = await api.sendSecureContent<StartAuditLogsQueryRequest>({
Expand Down
6 changes: 1 addition & 5 deletions src/modules/auth/confidential-sso/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,7 @@ interface ConfidentialSSOParams {

export const doConfidentialSSOVerification = async ({ requestedLogin }: ConfidentialSSOParams) => {
const api = await apiConnect({
isProduction: true,
enclavePcrList: [
[3, 'dfb6428f132530b8c021bea8cbdba2c87c96308ba7e81c7aff0655ec71228122a9297fd31fe5db7927a7322e396e4c16'],
[8, '4dbb92401207e019e132d86677857081d8e4d21f946f3561b264b7389c6982d3a86bcf9560cef4a2327eac5c5c6ab820'],
],
useProductionCertificate: true,
});
const requestLoginResponse = await api.sendSecureContent<RequestLogin2Request>({
...api,
Expand Down
15 changes: 15 additions & 0 deletions src/modules/tunnel-api-connect/apiconnect.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import sodium from 'libsodium-wrappers';
import { EnclavePcr } from '@dashlane/nsm-attestation';
import { clientHello, terminateHello, SendSecureContentParams, sendSecureContent } from './steps/index.js';
import { ApiConnectParams, ApiConnect, ApiData, ApiRequestsDefault } from './types.js';
import { makeClientKeyPair, makeOrRefreshSession } from './utils/index.js';
Expand All @@ -15,13 +16,27 @@ const hasFullApiData = (data: Partial<ApiData>): data is ApiData => {
return false;
};

const getEnclavePcrList = (): EnclavePcr<string>[] => {
if (process.env.DCLI_STAGING_HOST) {
return [
[3, '90528150e0f0537fa9e96b067137f6494d525f2fcfd15b478ce28ab2cfaf38dd4e24ad73f9d9d6f238a7f39f2d1956b7'],
];
}

return [
[3, 'dfb6428f132530b8c021bea8cbdba2c87c96308ba7e81c7aff0655ec71228122a9297fd31fe5db7927a7322e396e4c16'],
[8, '4dbb92401207e019e132d86677857081d8e4d21f946f3561b264b7389c6982d3a86bcf9560cef4a2327eac5c5c6ab820'],
];
};

/** Return an object that can be used to send secure content through the tunnel
*/
export const apiConnect = async (apiParametersIn: ApiConnectParams): Promise<ApiConnect> => {
await sodium.ready;

const apiParameters = {
...apiParametersIn,
enclavePcrList: getEnclavePcrList(),
...{ clientKeyPair: apiParametersIn.clientKeyPair ?? makeClientKeyPair() },
};

Expand Down
4 changes: 2 additions & 2 deletions src/modules/tunnel-api-connect/steps/terminateHello.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ export const terminateHello = async (
throw new SecureTunnelNotInitialized();
}

const { clientKeyPair, attestation, isProduction, enclavePcrList } = params;
const { clientKeyPair, attestation, useProductionCertificate, enclavePcrList } = params;
const { tunnelUuid } = apiData.clientHello;

const { userData } = await verifyAttestation({
attestation,
useProductionCertificate: isProduction,
useProductionCertificate,
pcrs: enclavePcrList,
});

Expand Down
2 changes: 2 additions & 0 deletions src/modules/tunnel-api-connect/steps/types.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type sodium from 'libsodium-wrappers';
import { ApiRequestsDefault } from '../types.js';
import { EnclavePcr } from '@dashlane/nsm-attestation';

export interface ApiEndpointResponse<T> {
requestId: string;
Expand Down Expand Up @@ -56,6 +57,7 @@ export interface SendSecureContentParams<R extends ApiRequestsDefault> {

export interface TerminateHelloParams {
attestation: Buffer;
enclavePcrList: EnclavePcr<string>[];
}

export interface TerminateHelloResponse {
Expand Down
4 changes: 1 addition & 3 deletions src/modules/tunnel-api-connect/types.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import type { EnclavePcr } from '@dashlane/nsm-attestation';
import type sodium from 'libsodium-wrappers';
import type { ClientHelloParsedResponse, SendSecureContentParams, TerminateHelloResponse } from './steps/index.js';

Expand All @@ -23,9 +22,8 @@ export interface ApiData {
}

export interface ApiConnectParams {
isProduction: boolean;
useProductionCertificate: boolean;
clientKeyPair?: sodium.KeyPair;
enclavePcrList: EnclavePcr<string>[];
}

export interface ApiConnectInternalParams extends ApiConnectParams {
Expand Down

0 comments on commit d522bce

Please sign in to comment.