Expose PniCredential operations to app languages

This commit is contained in:
Jordan Rose
2021-11-12 15:24:26 -08:00
parent db298e387d
commit 145ba7f47c
26 changed files with 1037 additions and 7 deletions

View File

@@ -9,11 +9,16 @@ import { RANDOM_LENGTH } from '../internal/Constants';
import * as Native from '../../../Native';
import ServerPublicParams from '../ServerPublicParams';
import ProfileKeyCredentialRequestContext from './ProfileKeyCredentialRequestContext';
import GroupSecretParams from '../groups/GroupSecretParams';
import PniCredential from './PniCredential';
import PniCredentialPresentation from './PniCredentialPresentation';
import PniCredentialRequestContext from './PniCredentialRequestContext';
import PniCredentialResponse from './PniCredentialResponse';
import ProfileKey from './ProfileKey';
import ProfileKeyCredential from './ProfileKeyCredential';
import ProfileKeyCredentialPresentation from './ProfileKeyCredentialPresentation';
import GroupSecretParams from '../groups/GroupSecretParams';
import ProfileKeyCredentialRequestContext from './ProfileKeyCredentialRequestContext';
import ProfileKeyCredentialResponse from './ProfileKeyCredentialResponse';
import { UUIDType, fromUUID } from '../internal/UUIDUtil';
@@ -53,6 +58,38 @@ export default class ClientZkProfileOperations {
);
}
createPniCredentialRequestContext(
aci: UUIDType,
pni: UUIDType,
profileKey: ProfileKey
): PniCredentialRequestContext {
const random = randomBytes(RANDOM_LENGTH);
return this.createPniCredentialRequestContextWithRandom(
random,
aci,
pni,
profileKey
);
}
createPniCredentialRequestContextWithRandom(
random: Buffer,
aci: UUIDType,
pni: UUIDType,
profileKey: ProfileKey
): PniCredentialRequestContext {
return new PniCredentialRequestContext(
Native.ServerPublicParams_CreatePniCredentialRequestContextDeterministic(
this.serverPublicParams.getContents(),
random,
fromUUID(aci),
fromUUID(pni),
profileKey.getContents()
)
);
}
receiveProfileKeyCredential(
profileKeyCredentialRequestContext: ProfileKeyCredentialRequestContext,
profileKeyCredentialResponse: ProfileKeyCredentialResponse
@@ -66,6 +103,19 @@ export default class ClientZkProfileOperations {
);
}
receivePniCredential(
requestContext: PniCredentialRequestContext,
response: PniCredentialResponse
): PniCredential {
return new PniCredential(
Native.ServerPublicParams_ReceivePniCredential(
this.serverPublicParams.getContents(),
requestContext.getContents(),
response.getContents()
)
);
}
createProfileKeyCredentialPresentation(
groupSecretParams: GroupSecretParams,
profileKeyCredential: ProfileKeyCredential
@@ -93,4 +143,32 @@ export default class ClientZkProfileOperations {
)
);
}
createPniCredentialPresentation(
groupSecretParams: GroupSecretParams,
credential: PniCredential
): PniCredentialPresentation {
const random = randomBytes(RANDOM_LENGTH);
return this.createPniCredentialPresentationWithRandom(
random,
groupSecretParams,
credential
);
}
createPniCredentialPresentationWithRandom(
random: Buffer,
groupSecretParams: GroupSecretParams,
credential: PniCredential
): PniCredentialPresentation {
return new PniCredentialPresentation(
Native.ServerPublicParams_CreatePniCredentialPresentationDeterministic(
this.serverPublicParams.getContents(),
random,
groupSecretParams.getContents(),
credential.getContents()
)
);
}
}