wallet-storage
Version:
BRC100 conforming wallet, wallet storage and wallet signer components
53 lines (48 loc) • 1.49 kB
text/typescript
import { AcquireCertificateResult } from '@bsv/sdk'
import { sdk, table, Wallet } from '../../index.client'
export async function acquireDirectCertificate(
wallet: Wallet,
auth: sdk.AuthId,
vargs: sdk.ValidAcquireDirectCertificateArgs
)
: Promise<AcquireCertificateResult>
{
const now = new Date()
const newCert: table.CertificateX = {
certificateId: 0, // replaced by storage insert
created_at: now,
updated_at: now,
userId: auth.userId!,
type: vargs.type,
subject: vargs.subject,
verifier: vargs.keyringRevealer === 'certifier' ? vargs.certifier : vargs.keyringRevealer,
serialNumber: vargs.serialNumber,
certifier: vargs.certifier,
revocationOutpoint: vargs.revocationOutpoint,
signature: vargs.signature,
fields: [],
isDeleted: false
}
for (const [name, value] of Object.entries(vargs.fields)) {
newCert.fields?.push({
certificateId: 0, // replaced by storage insert
created_at: now,
updated_at: now,
userId: auth.userId!,
fieldName: name,
fieldValue: value,
masterKey: vargs.keyringForSubject[name] || ''
})
}
const count = await wallet.storage.insertCertificate(newCert)
const r: AcquireCertificateResult = {
type: vargs.type,
subject: vargs.subject,
serialNumber: vargs.serialNumber,
certifier: vargs.certifier,
revocationOutpoint: vargs.revocationOutpoint,
signature: vargs.signature,
fields: vargs.fields
}
return r
}