All files / src/signer/methods acquireDirectCertificate.ts

100% Statements 8/8
62.5% Branches 5/8
100% Functions 1/1
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53      57x             1x 1x                             1x 3x                     1x   1x                   1x    
import { AcquireCertificateResult } from '@bsv/sdk'
import { sdk, table, WalletSigner } from '../../index.client'
 
export async function acquireDirectCertificate(
  signer: WalletSigner,
  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 signer.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
}