const require_rolldown_runtime = require('../../../../_virtual/rolldown_runtime.cjs');
const require_utils$1 = require('../utils.cjs');
const require_index = require('../../../asn1/lib/index.cjs');

//#region ../../node_modules/node-rsa/src/formats/pkcs1.js
var require_pkcs1 = /* @__PURE__ */ require_rolldown_runtime.__commonJS({ "../../node_modules/node-rsa/src/formats/pkcs1.js": ((exports, module) => {
	var ber = require_index.default.Ber;
	var _ = require_utils$1.default._;
	var utils = require_utils$1.default;
	const PRIVATE_OPENING_BOUNDARY = "-----BEGIN RSA PRIVATE KEY-----";
	const PRIVATE_CLOSING_BOUNDARY = "-----END RSA PRIVATE KEY-----";
	const PUBLIC_OPENING_BOUNDARY = "-----BEGIN RSA PUBLIC KEY-----";
	const PUBLIC_CLOSING_BOUNDARY = "-----END RSA PUBLIC KEY-----";
	module.exports = {
		privateExport: function(key, options) {
			options = options || {};
			var n = key.n.toBuffer();
			var d = key.d.toBuffer();
			var p = key.p.toBuffer();
			var q = key.q.toBuffer();
			var dmp1 = key.dmp1.toBuffer();
			var dmq1 = key.dmq1.toBuffer();
			var coeff = key.coeff.toBuffer();
			var length = n.length + d.length + p.length + q.length + dmp1.length + dmq1.length + coeff.length + 512;
			var writer = new ber.Writer({ size: length });
			writer.startSequence();
			writer.writeInt(0);
			writer.writeBuffer(n, 2);
			writer.writeInt(key.e);
			writer.writeBuffer(d, 2);
			writer.writeBuffer(p, 2);
			writer.writeBuffer(q, 2);
			writer.writeBuffer(dmp1, 2);
			writer.writeBuffer(dmq1, 2);
			writer.writeBuffer(coeff, 2);
			writer.endSequence();
			if (options.type === "der") return writer.buffer;
			else return PRIVATE_OPENING_BOUNDARY + "\n" + utils.linebrk(writer.buffer.toString("base64"), 64) + "\n-----END RSA PRIVATE KEY-----";
		},
		privateImport: function(key, data, options) {
			options = options || {};
			var buffer;
			if (options.type !== "der") {
				if (Buffer.isBuffer(data)) data = data.toString("utf8");
				if (_.isString(data)) {
					var pem = utils.trimSurroundingText(data, PRIVATE_OPENING_BOUNDARY, PRIVATE_CLOSING_BOUNDARY).replace(/\s+|\n\r|\n|\r$/gm, "");
					buffer = Buffer.from(pem, "base64");
				} else throw Error("Unsupported key format");
			} else if (Buffer.isBuffer(data)) buffer = data;
			else throw Error("Unsupported key format");
			var reader = new ber.Reader(buffer);
			reader.readSequence();
			reader.readString(2, true);
			key.setPrivate(reader.readString(2, true), reader.readString(2, true), reader.readString(2, true), reader.readString(2, true), reader.readString(2, true), reader.readString(2, true), reader.readString(2, true), reader.readString(2, true));
		},
		publicExport: function(key, options) {
			options = options || {};
			var n = key.n.toBuffer();
			var length = n.length + 512;
			var bodyWriter = new ber.Writer({ size: length });
			bodyWriter.startSequence();
			bodyWriter.writeBuffer(n, 2);
			bodyWriter.writeInt(key.e);
			bodyWriter.endSequence();
			if (options.type === "der") return bodyWriter.buffer;
			else return PUBLIC_OPENING_BOUNDARY + "\n" + utils.linebrk(bodyWriter.buffer.toString("base64"), 64) + "\n-----END RSA PUBLIC KEY-----";
		},
		publicImport: function(key, data, options) {
			options = options || {};
			var buffer;
			if (options.type !== "der") {
				if (Buffer.isBuffer(data)) data = data.toString("utf8");
				if (_.isString(data)) {
					var pem = utils.trimSurroundingText(data, PUBLIC_OPENING_BOUNDARY, PUBLIC_CLOSING_BOUNDARY).replace(/\s+|\n\r|\n|\r$/gm, "");
					buffer = Buffer.from(pem, "base64");
				}
			} else if (Buffer.isBuffer(data)) buffer = data;
			else throw Error("Unsupported key format");
			var body = new ber.Reader(buffer);
			body.readSequence();
			key.setPublic(body.readString(2, true), body.readString(2, true));
		},
		autoImport: function(key, data) {
			if (/^[\S\s]*-----BEGIN RSA PRIVATE KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END RSA PRIVATE KEY-----[\S\s]*$/g.test(data)) {
				module.exports.privateImport(key, data);
				return true;
			}
			if (/^[\S\s]*-----BEGIN RSA PUBLIC KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END RSA PUBLIC KEY-----[\S\s]*$/g.test(data)) {
				module.exports.publicImport(key, data);
				return true;
			}
			return false;
		}
	};
}) });

//#endregion
Object.defineProperty(exports, 'default', {
  enumerable: true,
  get: function () {
    return require_pkcs1();
  }
});
//# sourceMappingURL=pkcs1.cjs.map