const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
const require_forge$1 = require('./forge.cjs');
const require_util$1 = require('./util.cjs');
const require_asn1$1 = require('./asn1.cjs');

//#region ../../node_modules/node-forge/lib/pkcs7asn1.js
var require_pkcs7asn1 = /* @__PURE__ */ require_rolldown_runtime.__commonJS({ "../../node_modules/node-forge/lib/pkcs7asn1.js": ((exports, module) => {
	/**
	* Javascript implementation of ASN.1 validators for PKCS#7 v1.5.
	*
	* @author Dave Longley
	* @author Stefan Siegl
	*
	* Copyright (c) 2012-2015 Digital Bazaar, Inc.
	* Copyright (c) 2012 Stefan Siegl <stesie@brokenpipe.de>
	*
	* The ASN.1 representation of PKCS#7 is as follows
	* (see RFC #2315 for details, http://www.ietf.org/rfc/rfc2315.txt):
	*
	* A PKCS#7 message consists of a ContentInfo on root level, which may
	* contain any number of further ContentInfo nested into it.
	*
	* ContentInfo ::= SEQUENCE {
	*   contentType                ContentType,
	*   content               [0]  EXPLICIT ANY DEFINED BY contentType OPTIONAL
	* }
	*
	* ContentType ::= OBJECT IDENTIFIER
	*
	* EnvelopedData ::= SEQUENCE {
	*   version                    Version,
	*   recipientInfos             RecipientInfos,
	*   encryptedContentInfo       EncryptedContentInfo
	* }
	*
	* EncryptedData ::= SEQUENCE {
	*   version                    Version,
	*   encryptedContentInfo       EncryptedContentInfo
	* }
	*
	* id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
	*   us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }
	*
	* SignedData ::= SEQUENCE {
	*   version           INTEGER,
	*   digestAlgorithms  DigestAlgorithmIdentifiers,
	*   contentInfo       ContentInfo,
	*   certificates      [0] IMPLICIT Certificates OPTIONAL,
	*   crls              [1] IMPLICIT CertificateRevocationLists OPTIONAL,
	*   signerInfos       SignerInfos
	* }
	*
	* SignerInfos ::= SET OF SignerInfo
	*
	* SignerInfo ::= SEQUENCE {
	*   version                    Version,
	*   issuerAndSerialNumber      IssuerAndSerialNumber,
	*   digestAlgorithm            DigestAlgorithmIdentifier,
	*   authenticatedAttributes    [0] IMPLICIT Attributes OPTIONAL,
	*   digestEncryptionAlgorithm  DigestEncryptionAlgorithmIdentifier,
	*   encryptedDigest            EncryptedDigest,
	*   unauthenticatedAttributes  [1] IMPLICIT Attributes OPTIONAL
	* }
	*
	* EncryptedDigest ::= OCTET STRING
	*
	* Attributes ::= SET OF Attribute
	*
	* Attribute ::= SEQUENCE {
	*   attrType    OBJECT IDENTIFIER,
	*   attrValues  SET OF AttributeValue
	* }
	*
	* AttributeValue ::= ANY
	*
	* Version ::= INTEGER
	*
	* RecipientInfos ::= SET OF RecipientInfo
	*
	* EncryptedContentInfo ::= SEQUENCE {
	*   contentType                 ContentType,
	*   contentEncryptionAlgorithm  ContentEncryptionAlgorithmIdentifier,
	*   encryptedContent       [0]  IMPLICIT EncryptedContent OPTIONAL
	* }
	*
	* ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
	*
	* The AlgorithmIdentifier contains an Object Identifier (OID) and parameters
	* for the algorithm, if any. In the case of AES and DES3, there is only one,
	* the IV.
	*
	* AlgorithmIdentifer ::= SEQUENCE {
	*    algorithm OBJECT IDENTIFIER,
	*    parameters ANY DEFINED BY algorithm OPTIONAL
	* }
	*
	* EncryptedContent ::= OCTET STRING
	*
	* RecipientInfo ::= SEQUENCE {
	*   version                     Version,
	*   issuerAndSerialNumber       IssuerAndSerialNumber,
	*   keyEncryptionAlgorithm      KeyEncryptionAlgorithmIdentifier,
	*   encryptedKey                EncryptedKey
	* }
	*
	* IssuerAndSerialNumber ::= SEQUENCE {
	*   issuer                      Name,
	*   serialNumber                CertificateSerialNumber
	* }
	*
	* CertificateSerialNumber ::= INTEGER
	*
	* KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
	*
	* EncryptedKey ::= OCTET STRING
	*/
	var forge = require_forge$1.default;
	require_asn1$1.default;
	require_util$1.default;
	var asn1 = forge.asn1;
	var p7v = module.exports = forge.pkcs7asn1 = forge.pkcs7asn1 || {};
	forge.pkcs7 = forge.pkcs7 || {};
	forge.pkcs7.asn1 = p7v;
	var contentInfoValidator = {
		name: "ContentInfo",
		tagClass: asn1.Class.UNIVERSAL,
		type: asn1.Type.SEQUENCE,
		constructed: true,
		value: [{
			name: "ContentInfo.ContentType",
			tagClass: asn1.Class.UNIVERSAL,
			type: asn1.Type.OID,
			constructed: false,
			capture: "contentType"
		}, {
			name: "ContentInfo.content",
			tagClass: asn1.Class.CONTEXT_SPECIFIC,
			type: 0,
			constructed: true,
			optional: true,
			captureAsn1: "content"
		}]
	};
	p7v.contentInfoValidator = contentInfoValidator;
	var encryptedContentInfoValidator = {
		name: "EncryptedContentInfo",
		tagClass: asn1.Class.UNIVERSAL,
		type: asn1.Type.SEQUENCE,
		constructed: true,
		value: [
			{
				name: "EncryptedContentInfo.contentType",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.OID,
				constructed: false,
				capture: "contentType"
			},
			{
				name: "EncryptedContentInfo.contentEncryptionAlgorithm",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.SEQUENCE,
				constructed: true,
				value: [{
					name: "EncryptedContentInfo.contentEncryptionAlgorithm.algorithm",
					tagClass: asn1.Class.UNIVERSAL,
					type: asn1.Type.OID,
					constructed: false,
					capture: "encAlgorithm"
				}, {
					name: "EncryptedContentInfo.contentEncryptionAlgorithm.parameter",
					tagClass: asn1.Class.UNIVERSAL,
					captureAsn1: "encParameter"
				}]
			},
			{
				name: "EncryptedContentInfo.encryptedContent",
				tagClass: asn1.Class.CONTEXT_SPECIFIC,
				type: 0,
				capture: "encryptedContent",
				captureAsn1: "encryptedContentAsn1"
			}
		]
	};
	p7v.envelopedDataValidator = {
		name: "EnvelopedData",
		tagClass: asn1.Class.UNIVERSAL,
		type: asn1.Type.SEQUENCE,
		constructed: true,
		value: [{
			name: "EnvelopedData.Version",
			tagClass: asn1.Class.UNIVERSAL,
			type: asn1.Type.INTEGER,
			constructed: false,
			capture: "version"
		}, {
			name: "EnvelopedData.RecipientInfos",
			tagClass: asn1.Class.UNIVERSAL,
			type: asn1.Type.SET,
			constructed: true,
			captureAsn1: "recipientInfos"
		}].concat(encryptedContentInfoValidator)
	};
	p7v.encryptedDataValidator = {
		name: "EncryptedData",
		tagClass: asn1.Class.UNIVERSAL,
		type: asn1.Type.SEQUENCE,
		constructed: true,
		value: [{
			name: "EncryptedData.Version",
			tagClass: asn1.Class.UNIVERSAL,
			type: asn1.Type.INTEGER,
			constructed: false,
			capture: "version"
		}].concat(encryptedContentInfoValidator)
	};
	var signerValidator = {
		name: "SignerInfo",
		tagClass: asn1.Class.UNIVERSAL,
		type: asn1.Type.SEQUENCE,
		constructed: true,
		value: [
			{
				name: "SignerInfo.version",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.INTEGER,
				constructed: false
			},
			{
				name: "SignerInfo.issuerAndSerialNumber",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.SEQUENCE,
				constructed: true,
				value: [{
					name: "SignerInfo.issuerAndSerialNumber.issuer",
					tagClass: asn1.Class.UNIVERSAL,
					type: asn1.Type.SEQUENCE,
					constructed: true,
					captureAsn1: "issuer"
				}, {
					name: "SignerInfo.issuerAndSerialNumber.serialNumber",
					tagClass: asn1.Class.UNIVERSAL,
					type: asn1.Type.INTEGER,
					constructed: false,
					capture: "serial"
				}]
			},
			{
				name: "SignerInfo.digestAlgorithm",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.SEQUENCE,
				constructed: true,
				value: [{
					name: "SignerInfo.digestAlgorithm.algorithm",
					tagClass: asn1.Class.UNIVERSAL,
					type: asn1.Type.OID,
					constructed: false,
					capture: "digestAlgorithm"
				}, {
					name: "SignerInfo.digestAlgorithm.parameter",
					tagClass: asn1.Class.UNIVERSAL,
					constructed: false,
					captureAsn1: "digestParameter",
					optional: true
				}]
			},
			{
				name: "SignerInfo.authenticatedAttributes",
				tagClass: asn1.Class.CONTEXT_SPECIFIC,
				type: 0,
				constructed: true,
				optional: true,
				capture: "authenticatedAttributes"
			},
			{
				name: "SignerInfo.digestEncryptionAlgorithm",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.SEQUENCE,
				constructed: true,
				capture: "signatureAlgorithm"
			},
			{
				name: "SignerInfo.encryptedDigest",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.OCTETSTRING,
				constructed: false,
				capture: "signature"
			},
			{
				name: "SignerInfo.unauthenticatedAttributes",
				tagClass: asn1.Class.CONTEXT_SPECIFIC,
				type: 1,
				constructed: true,
				optional: true,
				capture: "unauthenticatedAttributes"
			}
		]
	};
	p7v.signedDataValidator = {
		name: "SignedData",
		tagClass: asn1.Class.UNIVERSAL,
		type: asn1.Type.SEQUENCE,
		constructed: true,
		value: [
			{
				name: "SignedData.Version",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.INTEGER,
				constructed: false,
				capture: "version"
			},
			{
				name: "SignedData.DigestAlgorithms",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.SET,
				constructed: true,
				captureAsn1: "digestAlgorithms"
			},
			contentInfoValidator,
			{
				name: "SignedData.Certificates",
				tagClass: asn1.Class.CONTEXT_SPECIFIC,
				type: 0,
				optional: true,
				captureAsn1: "certificates"
			},
			{
				name: "SignedData.CertificateRevocationLists",
				tagClass: asn1.Class.CONTEXT_SPECIFIC,
				type: 1,
				optional: true,
				captureAsn1: "crls"
			},
			{
				name: "SignedData.SignerInfos",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.SET,
				capture: "signerInfos",
				optional: true,
				value: [signerValidator]
			}
		]
	};
	p7v.recipientInfoValidator = {
		name: "RecipientInfo",
		tagClass: asn1.Class.UNIVERSAL,
		type: asn1.Type.SEQUENCE,
		constructed: true,
		value: [
			{
				name: "RecipientInfo.version",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.INTEGER,
				constructed: false,
				capture: "version"
			},
			{
				name: "RecipientInfo.issuerAndSerial",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.SEQUENCE,
				constructed: true,
				value: [{
					name: "RecipientInfo.issuerAndSerial.issuer",
					tagClass: asn1.Class.UNIVERSAL,
					type: asn1.Type.SEQUENCE,
					constructed: true,
					captureAsn1: "issuer"
				}, {
					name: "RecipientInfo.issuerAndSerial.serialNumber",
					tagClass: asn1.Class.UNIVERSAL,
					type: asn1.Type.INTEGER,
					constructed: false,
					capture: "serial"
				}]
			},
			{
				name: "RecipientInfo.keyEncryptionAlgorithm",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.SEQUENCE,
				constructed: true,
				value: [{
					name: "RecipientInfo.keyEncryptionAlgorithm.algorithm",
					tagClass: asn1.Class.UNIVERSAL,
					type: asn1.Type.OID,
					constructed: false,
					capture: "encAlgorithm"
				}, {
					name: "RecipientInfo.keyEncryptionAlgorithm.parameter",
					tagClass: asn1.Class.UNIVERSAL,
					constructed: false,
					captureAsn1: "encParameter",
					optional: true
				}]
			},
			{
				name: "RecipientInfo.encryptedKey",
				tagClass: asn1.Class.UNIVERSAL,
				type: asn1.Type.OCTETSTRING,
				constructed: false,
				capture: "encKey"
			}
		]
	};
}) });

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