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 54 55 56 57 58 59 60 61 62 | 28x 6x 6x 6x 6x 6x 6x 6x 22x 22x 43x 43x 6x 22x 6x 4x 2x 6x 6x | import * as bsv from "@bsv/sdk"
import { StorageBase, StorageKnex, table } from ".."
import { asString, sdk, verifyOne } from "../.."
export async function listCertificatesSdk(
storage: StorageBase,
vargs: sdk.ValidListCertificatesArgs,
originator?: sdk.OriginatorDomainNameStringUnder250Bytes,
)
: Promise<sdk.ListCertificatesResult>
{
const paged: sdk.Paged = { limit: vargs.limit, offset: vargs.offset }
const partial: Partial<table.Certificate> = { userId: vargs.userId, isDeleted: false }
Iif (vargs.partial) {
const vp = vargs.partial
Iif (vp.type) partial['type'] = partial.type;
Iif (vp.subject) partial['subject'] = partial.subject;
Iif (vp.serialNumber) partial['serialNumber'] = partial.serialNumber;
Iif (vp.certifier) partial['certifier'] = partial.certifier;
Iif (vp.revocationOutpoint) partial['revocationOutpoint'] = partial.revocationOutpoint;
Iif (vp.signature) partial['signature'] = partial.signature;
}
const r = await storage.transaction(async trx => {
const findCertsArgs: sdk.FindCertificatesArgs = { partial, certifiers: vargs.certifiers, types: vargs.types, paged, trx }
const certs = await storage.findCertificates(findCertsArgs)
const certsWithFields = await Promise.all(certs.map(async cert => {
const fields = await storage.findCertificateFields({ partial: { certificateId: cert.certificateId, userId: vargs.userId }, trx })
return {
...cert,
fields: Object.fromEntries(fields.map(f => ([f.fieldName, f.fieldValue]))),
masterKeyring: Object.fromEntries(fields.map(f => ([f.fieldName, f.masterKey])))
}
}))
const r: sdk.ListCertificatesResult = {
totalCertificates: 0,
certificates: certsWithFields.map(cwf => ({
type: cwf.type,
subject: cwf.subject,
serialNumber: cwf.serialNumber,
certifier: cwf.certifier,
revocationOutpoint: cwf.revocationOutpoint,
signature: cwf.signature,
fields: cwf.fields,
verifier: cwf.verifier,
keyring: cwf.masterKeyring
}))
}
if (r.certificates.length < paged.limit)
r.totalCertificates = r.certificates.length
else {
r.totalCertificates = await storage.countCertificates(findCertsArgs)
}
return r
})
return r
}
|