import { __commonJS, __require } from "../../../../_virtual/rolldown_runtime.mjs";
import { require_schemes } from "../schemes/schemes.mjs";

//#region ../../node_modules/node-rsa/src/encryptEngines/io.js
var require_io = /* @__PURE__ */ __commonJS({ "../../node_modules/node-rsa/src/encryptEngines/io.js": ((exports, module) => {
	var crypto = __require("crypto");
	var constants = __require("constants");
	var schemes = require_schemes();
	module.exports = function(keyPair, options) {
		var pkcs1Scheme = schemes.pkcs1.makeScheme(keyPair, options);
		return {
			encrypt: function(buffer, usePrivate) {
				var padding;
				if (usePrivate) {
					padding = constants.RSA_PKCS1_PADDING;
					if (options.encryptionSchemeOptions && options.encryptionSchemeOptions.padding) padding = options.encryptionSchemeOptions.padding;
					return crypto.privateEncrypt({
						key: options.rsaUtils.exportKey("private"),
						padding
					}, buffer);
				} else {
					padding = constants.RSA_PKCS1_OAEP_PADDING;
					if (options.encryptionScheme === "pkcs1") padding = constants.RSA_PKCS1_PADDING;
					if (options.encryptionSchemeOptions && options.encryptionSchemeOptions.padding) padding = options.encryptionSchemeOptions.padding;
					var data = buffer;
					if (padding === constants.RSA_NO_PADDING) data = pkcs1Scheme.pkcs0pad(buffer);
					return crypto.publicEncrypt({
						key: options.rsaUtils.exportKey("public"),
						padding
					}, data);
				}
			},
			decrypt: function(buffer, usePublic) {
				var padding;
				if (usePublic) {
					padding = constants.RSA_PKCS1_PADDING;
					if (options.encryptionSchemeOptions && options.encryptionSchemeOptions.padding) padding = options.encryptionSchemeOptions.padding;
					return crypto.publicDecrypt({
						key: options.rsaUtils.exportKey("public"),
						padding
					}, buffer);
				} else {
					padding = constants.RSA_PKCS1_OAEP_PADDING;
					if (options.encryptionScheme === "pkcs1") padding = constants.RSA_PKCS1_PADDING;
					if (options.encryptionSchemeOptions && options.encryptionSchemeOptions.padding) padding = options.encryptionSchemeOptions.padding;
					var res = crypto.privateDecrypt({
						key: options.rsaUtils.exportKey("private"),
						padding
					}, buffer);
					if (padding === constants.RSA_NO_PADDING) return pkcs1Scheme.pkcs0unpad(res);
					return res;
				}
			}
		};
	};
}) });

//#endregion
export default require_io();

export { require_io };
//# sourceMappingURL=io.mjs.map