// Convert RSA public parameters into an ASN.1 buffer. internal void PublicToASN1(ASN1Builder builder, bool x509) { if (x509) { // Output an X.509 "SubjectPublicKeyInfo" block. ASN1Builder alg = builder.AddSequence(); alg.AddObjectIdentifier(rsaID); alg.AddNull(); ASN1Builder bitString = builder.AddBitStringContents(); ASN1Builder inner = bitString.AddSequence(); inner.AddBigInt(Modulus); inner.AddBigInt(Exponent); } else { // Output a bare list of RSA parameters. builder.AddBigInt(Modulus); builder.AddBigInt(Exponent); } }