import { encodeBitString, encodeNull, encodeObjectIdentifier, encodeSequence, } from "../asn1/writer.js"; import type { RsaPublicKey } from "./keys.types.js"; import { OID_RSA_ENCRYPTION } from "./oid.js"; import { serializeRsaPublicKeyPkcs1 } from "./serialize-pkcs1-public.js"; /** * Serialise an `RsaPublicKey` to a DER-encoded `SubjectPublicKeyInfo` * (RFC 5280 ยง4.1) wrapping a PKCS#1 `RSAPublicKey`. */ export function serializeRsaPublicKeySpki(key: RsaPublicKey): Uint8Array { const algorithm = encodeSequence( encodeObjectIdentifier(OID_RSA_ENCRYPTION), encodeNull() ); const subjectPublicKey = encodeBitString(serializeRsaPublicKeyPkcs1(key)); return encodeSequence(algorithm, subjectPublicKey); }