import {
getOpaqueConfig,
OpaqueID,
RegistrationRecord,
CredentialFile
} from '../lib/opaque.mjs'
const cfg = getOpaqueConfig(
OpaqueID.OPAQUE_P256,
'OPAQUE demo'
)
async function register_finish( request, env ) {
const requestJSON = await request.json()
const recordSerialized = requestJSON[ 'record' ]
const client_identity = requestJSON[ 'username' ].trim()
// username is also being used for this demo as server-side credential_identifier
const credential_identifier = client_identity
const record = RegistrationRecord.deserialize( cfg, recordSerialized )
const credential_file = new CredentialFile( credential_identifier, record, client_identity )
// store in DB
let result
if ( env.PERMANENT == 'true' ) {
result = await env.KV.put( credential_identifier, new Uint8Array( credential_file.serialize() ) )
}
else {
result = await env.KV.put( credential_identifier, new Uint8Array( credential_file.serialize() ), { expirationTtl: 3600 } )
}
let retrieve = await env.KV.get( credential_identifier )
return new Response( JSON.stringify( { username: client_identity, message: "'" + client_identity + "' registered" } ), {
headers: { 'Content-Type': 'application/json' }
} )
}
export { register_finish }