Changeset View
Changeset View
Standalone View
Standalone View
lib/utils/crypto-utils.js
// @flow | // @flow | ||||
import t from 'tcomb'; | import t from 'tcomb'; | ||||
import { type TInterface } from 'tcomb'; | import { type TInterface } from 'tcomb'; | ||||
import { primaryIdentityPublicKeyRegex } from './siwe-utils.js'; | import { primaryIdentityPublicKeyRegex } from './siwe-utils.js'; | ||||
import { tRegex, tShape } from './validation-utils.js'; | import { tRegex, tShape } from './validation-utils.js'; | ||||
import type { | |||||
IdentityKeysBlob, | |||||
OLMIdentityKeys, | |||||
SignedIdentityKeysBlob, | |||||
} from '../types/crypto-types'; | |||||
const minimumOneTimeKeysRequired = 10; | const minimumOneTimeKeysRequired = 10; | ||||
const signedIdentityKeysBlobValidator: TInterface = tShape({ | const signedIdentityKeysBlobValidator: TInterface<SignedIdentityKeysBlob> = | ||||
tShape({ | |||||
payload: t.String, | payload: t.String, | ||||
signature: t.String, | signature: t.String, | ||||
}); | }); | ||||
const olmIdentityKeysValidator: TInterface = tShape({ | const olmIdentityKeysValidator: TInterface<OLMIdentityKeys> = tShape({ | ||||
ed25519: tRegex(primaryIdentityPublicKeyRegex), | ed25519: tRegex(primaryIdentityPublicKeyRegex), | ||||
curve25519: tRegex(primaryIdentityPublicKeyRegex), | curve25519: tRegex(primaryIdentityPublicKeyRegex), | ||||
}); | }); | ||||
const identityKeysBlobValidator: TInterface = tShape({ | const identityKeysBlobValidator: TInterface<IdentityKeysBlob> = tShape({ | ||||
primaryIdentityPublicKeys: olmIdentityKeysValidator, | primaryIdentityPublicKeys: olmIdentityKeysValidator, | ||||
notificationIdentityPublicKeys: olmIdentityKeysValidator, | notificationIdentityPublicKeys: olmIdentityKeysValidator, | ||||
}); | }); | ||||
export { | export { | ||||
minimumOneTimeKeysRequired, | minimumOneTimeKeysRequired, | ||||
signedIdentityKeysBlobValidator, | signedIdentityKeysBlobValidator, | ||||
identityKeysBlobValidator, | identityKeysBlobValidator, | ||||
}; | }; |