internal SignerInfoGenerator(SignerIdentifier sigId, ISignatureCalculator contentSigner, CmsAttributeTableGenerator signedGen, CmsAttributeTableGenerator unsignedGen)
 {
     this.sigId = sigId;
     this.contentSigner = contentSigner;
     this.signedGen = signedGen;
     this.unsignedGen = unsignedGen;
     this.isDirectSignature = false;
 }
 /**
  * add a signer with extra signed/unsigned attributes based on generators.
  */
 public void AddSigner(
     AsymmetricKeyParameter privateKey,
     X509Certificate cert,
     string digestOID,
     CmsAttributeTableGenerator signedAttrGen,
     CmsAttributeTableGenerator unsignedAttrGen)
 {
     AddSigner(privateKey, cert, Helper.GetEncOid(privateKey, digestOID), digestOID,
               signedAttrGen, unsignedAttrGen);
 }
 public void AddSigner(
     AsymmetricKeyParameter privateKey,
     byte[]                                          subjectKeyID,
     string digestOid,
     CmsAttributeTableGenerator signedAttrGenerator,
     CmsAttributeTableGenerator unsignedAttrGenerator)
 {
     AddSigner(privateKey, subjectKeyID, GetEncOid(privateKey, digestOid),
               digestOid, signedAttrGenerator, unsignedAttrGenerator);
 }
 public void AddSigner(
     AsymmetricKeyParameter privateKey,
     X509Certificate cert,
     string digestOid,
     CmsAttributeTableGenerator signedAttrGenerator,
     CmsAttributeTableGenerator unsignedAttrGenerator)
 {
     AddSigner(privateKey, cert, GetEncOid(privateKey, digestOid), digestOid,
               signedAttrGenerator, unsignedAttrGenerator);
 }
 /**
  * add a signer with extra signed/unsigned attributes based on generators.
  */
 public void AddSigner(
     AsymmetricKeyParameter privateKey,
     byte[]                                          subjectKeyID,
     string digestOID,
     CmsAttributeTableGenerator signedAttrGen,
     CmsAttributeTableGenerator unsignedAttrGen)
 {
     AddSigner(privateKey, subjectKeyID, Helper.GetEncOid(privateKey, digestOID), digestOID,
               signedAttrGen, unsignedAttrGen);
 }
 /**
  * add a signer, including digest encryption algorithm, with extra signed/unsigned attributes based on generators.
  */
 public void AddSigner(
     AsymmetricKeyParameter privateKey,
     byte[]                                          subjectKeyID,
     string encryptionOID,
     string digestOID,
     CmsAttributeTableGenerator signedAttrGen,
     CmsAttributeTableGenerator unsignedAttrGen)
 {
     signerInfs.Add(new SignerInf(this, privateKey, GetSignerIdentifier(subjectKeyID),
                                  digestOID, encryptionOID, signedAttrGen, unsignedAttrGen, null));
 }
 public void AddSigner(
     AsymmetricKeyParameter privateKey,
     X509Certificate cert,
     string encryptionOid,
     string digestOid,
     CmsAttributeTableGenerator signedAttrGenerator,
     CmsAttributeTableGenerator unsignedAttrGenerator)
 {
     DoAddSigner(privateKey, GetSignerIdentifier(cert), encryptionOid, digestOid,
                 signedAttrGenerator, unsignedAttrGenerator);
 }
Example #8
0
 /// <summary>
 /// add a signer, including digest encryption algorithm, with extra signed/unsigned attributes based on generators
 /// </summary>
 public void AddSigner(
     NetCrypto.RSACryptoServiceProvider crProv,
     byte[] subjectKeyID,
     string encryptionOID,
     string digestOID,
     CmsAttributeTableGenerator signedAttrGen,
     CmsAttributeTableGenerator unsignedAttrGen)
 {
     signerInfs.Add(new SignerInf(this, crProv, null, GetSignerIdentifier(subjectKeyID),
                                  digestOID, encryptionOID, signedAttrGen, unsignedAttrGen, null));
 }
 internal SignerInf(CmsSignedGenerator outer, AsymmetricKeyParameter key, SignerIdentifier signerIdentifier, string digestOID, string encOID, CmsAttributeTableGenerator sAttr, CmsAttributeTableGenerator unsAttr, Org.BouncyCastle.Asn1.Cms.AttributeTable baseSignedTable)
 {
     this.outer            = outer;
     this.key              = key;
     this.signerIdentifier = signerIdentifier;
     this.digestOID        = digestOID;
     this.encOID           = encOID;
     this.sAttr            = sAttr;
     this.unsAttr          = unsAttr;
     this.baseSignedTable  = baseSignedTable;
 }
 public void AddSigner(
     AsymmetricKeyParameter privateKey,
     byte[]                                          subjectKeyID,
     string encryptionOid,
     string digestOid,
     CmsAttributeTableGenerator signedAttrGenerator,
     CmsAttributeTableGenerator unsignedAttrGenerator)
 {
     DoAddSigner(privateKey, GetSignerIdentifier(subjectKeyID), encryptionOid, digestOid,
                 signedAttrGenerator, unsignedAttrGenerator);
 }
Example #11
0
 internal SignerInf(CmsSignedGenerator outer, ISignatureFactory sigCalc, SignerIdentifier signerIdentifier, CmsAttributeTableGenerator sAttr, CmsAttributeTableGenerator unsAttr, Org.BouncyCastle.Asn1.Cms.AttributeTable baseSignedTable)
 {
     this.outer            = outer;
     this.sigCalc          = sigCalc;
     this.signerIdentifier = signerIdentifier;
     digestOID             = new DefaultDigestAlgorithmIdentifierFinder().find((AlgorithmIdentifier)sigCalc.AlgorithmDetails).Algorithm.Id;
     encOID               = ((AlgorithmIdentifier)sigCalc.AlgorithmDetails).Algorithm.Id;
     this.sAttr           = sAttr;
     this.unsAttr         = unsAttr;
     this.baseSignedTable = baseSignedTable;
 }
            internal SignerInfoGeneratorImpl(CmsSignedDataStreamGenerator outer, AsymmetricKeyParameter key, SignerIdentifier signerIdentifier, string digestOID,
                                             string encOID, CmsAttributeTableGenerator sAttr, CmsAttributeTableGenerator unsAttr)
            {
                _outer = outer;

                _signerIdentifier = signerIdentifier;
                _digestOID        = digestOID;
                _encOID           = encOID;
                _sAttr            = sAttr;
                _unsAttr          = unsAttr;
                _encName          = Helper.GetEncryptionAlgName(_encOID);

                string digestName    = Helper.GetDigestAlgName(_digestOID);
                string signatureName = digestName + "with" + _encName;

                if (_sAttr != null)
                {
                    _sig = Helper.GetSignatureInstance(signatureName);
                }
                else
                {
                    // Note: Need to use raw signatures here since we have already calculated the digest
                    if (_encName.Equals("RSA"))
                    {
                        _sig = Helper.GetSignatureInstance("RSA");
                    }
                    else if (_encName.Equals("DSA"))
                    {
                        _sig = Helper.GetSignatureInstance("NONEwithDSA");
                    }
                    // TODO Add support for raw PSS
//					else if (_encName.equals("RSAandMGF1"))
//					{
//						_sig = CMSSignedHelper.INSTANCE.getSignatureInstance("NONEWITHRSAPSS", _sigProvider);
//						try
//						{
//							// Init the params this way to avoid having a 'raw' version of each PSS algorithm
//							Signature sig2 = CMSSignedHelper.INSTANCE.getSignatureInstance(signatureName, _sigProvider);
//							PSSParameterSpec spec = (PSSParameterSpec)sig2.getParameters().getParameterSpec(PSSParameterSpec.class);
//							_sig.setParameter(spec);
//						}
//						catch (Exception e)
//						{
//							throw new SignatureException("algorithm: " + _encName + " could not be configured.");
//						}
//					}
                    else
                    {
                        throw new SignatureException("algorithm: " + _encName + " not supported in base signatures.");
                    }
                }

                _sig.Init(true, new ParametersWithRandom(key, outer.rand));
            }
 private void doAddSigner(
     AsymmetricKeyParameter privateKey,
     SignerIdentifier signerIdentifier,
     string encryptionOID,
     string digestOID,
     CmsAttributeTableGenerator signedAttrGen,
     CmsAttributeTableGenerator unsignedAttrGen,
     AttributeTable baseSignedTable)
 {
     signerInfs.Add(new SignerInf(this, privateKey, signerIdentifier, digestOID, encryptionOID,
                                  signedAttrGen, unsignedAttrGen, baseSignedTable));
 }
Example #14
0
 internal SignerInf(CmsSignedGenerator outer, AsymmetricKeyParameter key, SignerIdentifier signerIdentifier, string digestOID, string encOID,
                    CmsAttributeTableGenerator sAttr, CmsAttributeTableGenerator unsAttr, Asn1.Cms.AttributeTable baseSignedTable)
 {
     _outer            = outer;
     _key              = key;
     _signerIdentifier = signerIdentifier;
     _digestOID        = digestOID;
     _encOID           = encOID;
     _sAttr            = sAttr;
     _unsAttr          = unsAttr;
     _baseSignedTable  = baseSignedTable;
 }
        /**
         * add a signer with extra signed/unsigned attributes based on generators.
         */
        public void AddSigner(
            AsymmetricKeyParameter privateKey,
            X509Certificate cert,
            string digestOID,
            CmsAttributeTableGenerator signedAttrGen,
            CmsAttributeTableGenerator unsignedAttrGen)
        {
            string encOID = GetEncOid(privateKey, digestOID);

            signerInfs.Add(new SignerInf(this, privateKey, cert, digestOID, encOID,
                                         signedAttrGen, unsignedAttrGen, null));
        }
        /**
         * add a signer with extra signed/unsigned attributes based on generators.
         */
        public void AddSigner(
            AsymmetricKeyParameter privateKey,
            byte[]                                          subjectKeyID,
            string digestOID,
            CmsAttributeTableGenerator signedAttrGen,
            CmsAttributeTableGenerator unsignedAttrGen)
        {
            string encOID = GetEncOid(privateKey, digestOID);

            signerInfs.Add(new SignerInf(this, privateKey, subjectKeyID, digestOID, encOID,
                                         signedAttrGen, unsignedAttrGen, null));
        }
Example #17
0
 /**
  * add a signer, specifying the digest encryption algorithm, with extra signed/unsigned attributes based on generators.
  */
 public void AddSigner(
     AsymmetricKeyParameter privateKey,
     X509Certificate cert,
     string encryptionOID,
     string digestOID,
     CmsAttributeTableGenerator signedAttrGen,
     CmsAttributeTableGenerator unsignedAttrGen)
 {
     signerInfs.Add(new SignerInf(this, null, privateKey, GetSignerIdentifier(cert),
                                  digestOID, encryptionOID,
                                  signedAttrGen, unsignedAttrGen, null));
 }
        public void AddSigner(
            AsymmetricKeyParameter privateKey,
            byte[]                                          subjectKeyID,
            string encryptionOid,
            string digestOid,
            CmsAttributeTableGenerator signedAttrGenerator,
            CmsAttributeTableGenerator unsignedAttrGenerator)
        {
            ConfigureDigest(digestOid);

            _signerInfs.Add(new SignerInf(this, privateKey, GetSignerIdentifier(subjectKeyID), digestOid, encryptionOid,
                                          signedAttrGenerator, unsignedAttrGenerator));
        }
Example #19
0
            internal SignerInf(CmsSignedGenerator outer, AsymmetricKeyParameter key, SignerIdentifier signerIdentifier, string digestOID, string encOID, CmsAttributeTableGenerator sAttr, CmsAttributeTableGenerator unsAttr, Org.BouncyCastle.Asn1.Cms.AttributeTable baseSignedTable)
            {
                string digestAlgName = Helper.GetDigestAlgName(digestOID);
                string algorithm     = digestAlgName + "with" + Helper.GetEncryptionAlgName(encOID);

                this.outer            = outer;
                sigCalc               = new Asn1SignatureFactory(algorithm, key);
                this.signerIdentifier = signerIdentifier;
                this.digestOID        = digestOID;
                this.encOID           = encOID;
                this.sAttr            = sAttr;
                this.unsAttr          = unsAttr;
                this.baseSignedTable  = baseSignedTable;
            }
        private void DoAddSigner(
            AsymmetricKeyParameter privateKey,
            SignerIdentifier signerIdentifier,
            string encryptionOid,
            string digestOid,
            CmsAttributeTableGenerator signedAttrGenerator,
            CmsAttributeTableGenerator unsignedAttrGenerator)
        {
            ConfigureDigest(digestOid);

            SignerInfoGeneratorImpl signerInf = new SignerInfoGeneratorImpl(this, privateKey,
                                                                            signerIdentifier, digestOid, encryptionOid, signedAttrGenerator, unsignedAttrGenerator);

            _signerInfs.Add(new DigestAndSignerInfoGeneratorHolder(signerInf, digestOid));
        }
 internal SignerInfoGenerator(SignerIdentifier sigId, ISignatureCalculator contentSigner, bool isDirectSignature)
 {
     this.sigId = sigId;
     this.contentSigner = contentSigner;
     this.isDirectSignature = isDirectSignature;
     if (this.isDirectSignature)
     {
         this.signedGen = null;
         this.unsignedGen = null;
     }
     else
     {
         this.signedGen = new DefaultSignedAttributeTableGenerator();
         this.unsignedGen = null;
     }
 }
Example #22
0
 internal SignerInfoGenerator(SignerIdentifier sigId, ISignatureCalculator contentSigner, bool isDirectSignature)
 {
     this.sigId             = sigId;
     this.contentSigner     = contentSigner;
     this.isDirectSignature = isDirectSignature;
     if (this.isDirectSignature)
     {
         this.signedGen   = null;
         this.unsignedGen = null;
     }
     else
     {
         this.signedGen   = new DefaultSignedAttributeTableGenerator();
         this.unsignedGen = null;
     }
 }
Example #23
0
 internal SignerInfoGenerator(SignerIdentifier sigId, ISignatureFactory signerFactory, bool isDirectSignature)
 {
     this.sigId             = sigId;
     contentSigner          = signerFactory;
     this.isDirectSignature = isDirectSignature;
     if (this.isDirectSignature)
     {
         signedGen   = null;
         unsignedGen = null;
     }
     else
     {
         signedGen   = new DefaultSignedAttributeTableGenerator();
         unsignedGen = null;
     }
 }
Example #24
0
 private SignerInfoGenerator CreateGenerator(ISignatureFactory contentSigner, SignerIdentifier sigId)
 {
     if (directSignature)
     {
         return(new SignerInfoGenerator(sigId, contentSigner, isDirectSignature: true));
     }
     if (signedGen != null || unsignedGen != null)
     {
         if (signedGen == null)
         {
             signedGen = new DefaultSignedAttributeTableGenerator();
         }
         return(new SignerInfoGenerator(sigId, contentSigner, signedGen, unsignedGen));
     }
     return(new SignerInfoGenerator(sigId, contentSigner));
 }
 internal SignerInf(
     CmsSignedGenerator outer,
     ISignatureFactory sigCalc,
     SignerIdentifier signerIdentifier,
     CmsAttributeTableGenerator sAttr,
     CmsAttributeTableGenerator unsAttr,
     Asn1.Cms.AttributeTable baseSignedTable)
 {
     this.outer = outer;
     this.sigCalc = sigCalc;
     this.signerIdentifier = signerIdentifier;
     this.digestOID = new DefaultDigestAlgorithmIdentifierFinder().find((AlgorithmIdentifier)sigCalc.AlgorithmDetails).Algorithm.Id;
     this.encOID = ((AlgorithmIdentifier)sigCalc.AlgorithmDetails).Algorithm.Id;
     this.sAttr = sAttr;
     this.unsAttr = unsAttr;
     this.baseSignedTable = baseSignedTable;
 }
            internal SignerInf(
                CmsSignedDataStreamGenerator outer,
                AsymmetricKeyParameter key,
                SignerIdentifier signerIdentifier,
                string digestOID,
                string encOID,
                CmsAttributeTableGenerator sAttr,
                CmsAttributeTableGenerator unsAttr)
            {
                this.outer = outer;

                _key = key;
                _signerIdentifier = signerIdentifier;
                _digestOID        = digestOID;
                _encOID           = encOID;
                _sAttr            = sAttr;
                _unsAttr          = unsAttr;
            }
            internal SignerInfoGeneratorImpl(
                CmsSignedDataStreamGenerator outer,
                AsymmetricKeyParameter key,
                SignerIdentifier signerIdentifier,
                string digestOID,
                string encOID,
                CmsAttributeTableGenerator sAttr,
                CmsAttributeTableGenerator unsAttr)
            {
                this.outer = outer;

                _signerIdentifier = signerIdentifier;
                _digestOID        = digestOID;
                _encOID           = encOID;
                _sAttr            = sAttr;
                _unsAttr          = unsAttr;
                _encName          = Helper.GetEncryptionAlgName(_encOID);

                string digestName    = Helper.GetDigestAlgName(_digestOID);
                string signatureName = digestName + "with" + _encName;

                if (_sAttr != null)
                {
                    _sig = Helper.GetSignatureInstance(signatureName);
                }
                else
                {
                    // Note: Need to use raw signatures here since we have already calculated the digest
                    if (_encName.Equals("RSA"))
                    {
                        _sig = Helper.GetSignatureInstance("RSA");
                    }
                    else if (_encName.Equals("DSA"))
                    {
                        _sig = Helper.GetSignatureInstance("NONEwithDSA");
                    }
                    else
                    {
                        throw new SignatureException("algorithm: " + _encName + " not supported in base signatures.");
                    }
                }

                _sig.Init(true, new ParametersWithRandom(key, outer.rand));
            }
Example #28
0
        public void AddSigner(
            AsymmetricKeyParameter privateKey,
            X509Certificate cert,
            string digestOID,
            CmsAttributeTableGenerator signedAttrGenerator,
            CmsAttributeTableGenerator unsignedAttrGenerator)
        {
            string  encOID        = GetEncOid(privateKey, digestOID);
            string  digestName    = Helper.GetDigestAlgName(digestOID);
            string  signatureName = digestName + "with" + Helper.GetEncryptionAlgName(encOID);
            ISigner sig           = Helper.GetSignatureInstance(signatureName);
            IDigest dig           = Helper.GetDigestInstance(digestName);

            sig.Init(true, privateKey);

            _signerInfs.Add(new SignerInf(this, privateKey, cert, digestOID, encOID,
                                          signedAttrGenerator, unsignedAttrGenerator, dig, sig));
            _messageDigests.Add(dig);
        }
        public void AddSigner(
            AsymmetricKeyParameter privateKey,
            byte[]                                          subjectKeyID,
            string digestOid,
            CmsAttributeTableGenerator signedAttrGenerator,
            CmsAttributeTableGenerator unsignedAttrGenerator)
        {
            ConfigureDigest(digestOid);

            string  digestName    = Helper.GetDigestAlgName(digestOid);
            string  encOID        = GetEncOid(privateKey, digestOid);
            string  signatureName = digestName + "with" + Helper.GetEncryptionAlgName(encOID);
            ISigner sig           = Helper.GetSignatureInstance(signatureName);

            sig.Init(true, new ParametersWithRandom(privateKey, rand));

            _signerInfs.Add(new SignerInf(this, privateKey, subjectKeyID, digestOid, encOID,
                                          signedAttrGenerator, unsignedAttrGenerator, sig));
        }
			internal SignerInf(
                CmsSignedGenerator			outer,
	            AsymmetricKeyParameter		key,
	            SignerIdentifier			signerIdentifier,
	            string						digestOID,
	            string						encOID,
	            CmsAttributeTableGenerator	sAttr,
	            CmsAttributeTableGenerator	unsAttr,
	            Asn1.Cms.AttributeTable		baseSignedTable)
	        {
                this.outer = outer;
                this.key = key;
                this.signerIdentifier = signerIdentifier;
                this.digestOID = digestOID;
                this.encOID = encOID;
	            this.sAttr = sAttr;
	            this.unsAttr = unsAttr;
	            this.baseSignedTable = baseSignedTable;
            }
 internal SignerInf(
     CmsSignedGenerator outer,
     AsymmetricKeyParameter key,
     X509Certificate cert,
     string digestOID,
     string encOID,
     CmsAttributeTableGenerator sAttr,
     CmsAttributeTableGenerator unsAttr,
     Asn1.Cms.AttributeTable baseSignedTable)
 {
     this.outer           = outer;
     this.key             = key;
     this.cert            = cert;
     this.digestOID       = digestOID;
     this.encOID          = encOID;
     this.sAttr           = sAttr;
     this.unsAttr         = unsAttr;
     this.baseSignedTable = baseSignedTable;
 }
            internal SignerInf(
                CmsSignedDataStreamGenerator outer,
                AsymmetricKeyParameter key,
                X509Certificate cert,
                string digestOID,
                string encOID,
                CmsAttributeTableGenerator sAttr,
                CmsAttributeTableGenerator unsAttr,
                ISigner signature)
            {
                this.outer = outer;

                _key       = key;
                _cert      = cert;
                _digestOID = digestOID;
                _encOID    = encOID;
                _sAttr     = sAttr;
                _unsAttr   = unsAttr;
                _signature = signature;
            }
            internal SignerInf(
                CmsSignedDataStreamGenerator outer,
                AsymmetricKeyParameter key,
                byte[]                                                  subjectKeyID,
                string digestOID,
                string encOID,
                CmsAttributeTableGenerator sAttr,
                CmsAttributeTableGenerator unsAttr,
                ISigner signature)
            {
                this.outer = outer;

                _key          = key;
                _subjectKeyID = subjectKeyID;
                _digestOID    = digestOID;
                _encOID       = encOID;
                _sAttr        = sAttr;
                _unsAttr      = unsAttr;
                _signature    = signature;
            }
            internal SignerInf(
				CmsSignedDataStreamGenerator	outer,
				AsymmetricKeyParameter			key,
				X509Certificate					cert,
				string							digestOID,
				string							encOID,
				CmsAttributeTableGenerator		sAttr,
				CmsAttributeTableGenerator		unsAttr,
				ISigner							signature)
			{
				this.outer = outer;

				_key = key;
				_cert = cert;
				_digestOID = digestOID;
				_encOID = encOID;
				_sAttr = sAttr;
				_unsAttr = unsAttr;
				_signature = signature;
			}
Example #35
0
 /// <summary>
 /// Signer is received with crypto provider or pr. key (if the crypto provider == null)
 /// </summary>
 /// <param name="krProv">Crypto provider. if null than use key</param>
 /// <param name="key">Private key</param>
 internal SignerInf(
     CmsSignedGenerator outer,
     NetCrypto.RSACryptoServiceProvider krProv,
     AsymmetricKeyParameter key,
     SignerIdentifier signerIdentifier,
     string digestOID,
     string encOID,
     CmsAttributeTableGenerator sAttr,
     CmsAttributeTableGenerator unsAttr,
     Asn1.Cms.AttributeTable baseSignedTable)
 {
     this.outer            = outer;
     this.key              = key;
     this.krProv           = krProv;
     this.signerIdentifier = signerIdentifier;
     this.digestOID        = digestOID;
     this.encOID           = encOID;
     this.sAttr            = sAttr;
     this.unsAttr          = unsAttr;
     this.baseSignedTable  = baseSignedTable;
 }
			internal SignerInf(
                CmsSignedGenerator			outer,
	            AsymmetricKeyParameter		key,
	            SignerIdentifier			signerIdentifier,
	            string						digestOID,
	            string						encOID,
	            CmsAttributeTableGenerator	sAttr,
	            CmsAttributeTableGenerator	unsAttr,
	            Asn1.Cms.AttributeTable		baseSignedTable)
	        {
                string digestName = Helper.GetDigestAlgName(digestOID);

                string signatureName = digestName + "with" + Helper.GetEncryptionAlgName(encOID);

                this.outer = outer;
                this.sigCalc = new Asn1SignatureFactory(signatureName, key);
                this.signerIdentifier = signerIdentifier;
                this.digestOID = digestOID;
                this.encOID = encOID;
	            this.sAttr = sAttr;
	            this.unsAttr = unsAttr;
	            this.baseSignedTable = baseSignedTable;
            }
        private void DoAddSigner(
            AsymmetricKeyParameter		privateKey,
            SignerIdentifier			signerIdentifier,
            string						encryptionOid,
            string						digestOid,
            CmsAttributeTableGenerator	signedAttrGenerator,
            CmsAttributeTableGenerator	unsignedAttrGenerator)
        {
            ConfigureDigest(digestOid);

            SignerInfoGeneratorImpl signerInf = new SignerInfoGeneratorImpl(this, privateKey,
                signerIdentifier, digestOid, encryptionOid, signedAttrGenerator, unsignedAttrGenerator);

            _signerInfs.Add(new DigestAndSignerInfoGeneratorHolder(signerInf, digestOid));
        }
        private SignerInfoGenerator CreateGenerator(ISignatureCalculator contentSigner, SignerIdentifier sigId)
        {
            if (directSignature)
            {
                return new SignerInfoGenerator(sigId, contentSigner, true);
            }

            if (signedGen != null || unsignedGen != null)
            {
                if (signedGen == null)
                {
                    signedGen = new DefaultSignedAttributeTableGenerator();
                }

                return new SignerInfoGenerator(sigId, contentSigner, signedGen, unsignedGen);
            }

            return new SignerInfoGenerator(sigId, contentSigner);
        }
        /**
         *  Provide a custom signed attribute generator.
         *
         * @param signedGen a generator of signed attributes.
         * @return the builder object
         */
        public SignerInfoGeneratorBuilder WithSignedAttributeGenerator(CmsAttributeTableGenerator signedGen)
        {
            this.signedGen = signedGen;

            return this;
        }
Example #40
0
	    /**
	     * add a signer with extra signed/unsigned attributes based on generators.
	     */
	    public void AddSigner(
			AsymmetricKeyParameter		privateKey,
	        byte[]						subjectKeyID,
	        string						digestOID,
	        CmsAttributeTableGenerator	signedAttrGen,
	        CmsAttributeTableGenerator	unsignedAttrGen)
	    {
	        string encOID = GetEncOid(privateKey, digestOID);

	        signerInfs.Add(new SignerInf(this, privateKey, subjectKeyID, digestOID, encOID,
				signedAttrGen, unsignedAttrGen, null));
	    }
			internal SignerInf(
				CmsSignedDataStreamGenerator	outer,
				AsymmetricKeyParameter			key,
				byte[]							subjectKeyID,
				string							digestOID,
				string							encOID,
				CmsAttributeTableGenerator		sAttr,
				CmsAttributeTableGenerator		unsAttr,
				ISigner							signature)
	        {
				this.outer = outer;

	            _key = key;
	            _subjectKeyID = subjectKeyID;
	            _digestOID = digestOID;
	            _encOID = encOID;
	            _sAttr = sAttr;
	            _unsAttr = unsAttr;
	            _signature = signature;
	        }
Example #42
0
		/**
		 * add a signer with extra signed/unsigned attributes based on generators.
		 */
		public void AddSigner(
			AsymmetricKeyParameter		privateKey,
			X509Certificate				cert,
			string						digestOID,
			CmsAttributeTableGenerator	signedAttrGen,
			CmsAttributeTableGenerator	unsignedAttrGen)
		{
			string encOID = GetEncOid(privateKey, digestOID);

			signerInfs.Add(new SignerInf(this, privateKey, cert, digestOID, encOID,
				signedAttrGen, unsignedAttrGen, null));
		}
	    /**
	     * add a signer with extra signed/unsigned attributes based on generators.
	     */
	    public void AddSigner(
			AsymmetricKeyParameter		privateKey,
	        byte[]						subjectKeyID,
	        string						digestOID,
	        CmsAttributeTableGenerator	signedAttrGen,
	        CmsAttributeTableGenerator	unsignedAttrGen)
	    {
			AddSigner(privateKey, subjectKeyID, GetEncOid(privateKey, digestOID), digestOID,
				signedAttrGen, unsignedAttrGen);
	    }
		/**
		 * add a signer with extra signed/unsigned attributes based on generators.
		 */
		public void AddSigner(
			AsymmetricKeyParameter		privateKey,
			X509Certificate				cert,
			string						digestOID,
			CmsAttributeTableGenerator	signedAttrGen,
			CmsAttributeTableGenerator	unsignedAttrGen)
		{
			AddSigner(privateKey, cert, GetEncOid(privateKey, digestOID), digestOID,
				signedAttrGen, unsignedAttrGen);
		}
 internal SignerInf(CmsSignedGenerator outer, AsymmetricKeyParameter key, SignerIdentifier signerIdentifier, string digestOID, string encOID,
     CmsAttributeTableGenerator sAttr, CmsAttributeTableGenerator unsAttr, Asn1.Cms.AttributeTable baseSignedTable)
 {
     _outer = outer;
     _key = key;
     _signerIdentifier = signerIdentifier;
     _digestOID = digestOID;
     _encOID = encOID;
     _sAttr = sAttr;
     _unsAttr = unsAttr;
     _baseSignedTable = baseSignedTable;
 }
 public void AddSigner(
     IAsymmetricKeyParameter privateKey,
     X509Certificate cert,
     string encryptionOid,
     string digestOid,
     CmsAttributeTableGenerator signedAttrGenerator,
     CmsAttributeTableGenerator unsignedAttrGenerator)
 {
     DoAddSigner(privateKey, GetSignerIdentifier(cert), encryptionOid, digestOid,
         signedAttrGenerator, unsignedAttrGenerator);
 }
		private void doAddSigner(
			AsymmetricKeyParameter		privateKey,
			SignerIdentifier            signerIdentifier,
			string                      encryptionOID,
			string                      digestOID,
			CmsAttributeTableGenerator  signedAttrGen,
			CmsAttributeTableGenerator  unsignedAttrGen,
			Asn1.Cms.AttributeTable		baseSignedTable)
		{
			signerInfs.Add(new SignerInf(this, privateKey, signerIdentifier, digestOID, encryptionOID,
				signedAttrGen, unsignedAttrGen, baseSignedTable));
		}
        public void AddSigner(
			AsymmetricKeyParameter		privateKey,
			X509Certificate				cert,
			string						digestOID,
			CmsAttributeTableGenerator  signedAttrGenerator,
			CmsAttributeTableGenerator  unsignedAttrGenerator)
        {
            string encOID = GetEncOid(privateKey, digestOID);
            string digestName = Helper.GetDigestAlgName(digestOID);
            string signatureName = digestName + "with" + Helper.GetEncryptionAlgName(encOID);
            ISigner sig = Helper.GetSignatureInstance(signatureName);
            IDigest dig = Helper.GetDigestInstance(digestName);

            sig.Init(true, privateKey);

            _signerInfs.Add(new SignerInf(this, privateKey, cert, digestOID, encOID,
                signedAttrGenerator, unsignedAttrGenerator, dig, sig));
            _messageDigests.Add(dig);
        }
 public void AddSigner(
     IAsymmetricKeyParameter privateKey,
     byte[] subjectKeyID,
     string encryptionOid,
     string digestOid,
     CmsAttributeTableGenerator signedAttrGenerator,
     CmsAttributeTableGenerator unsignedAttrGenerator)
 {
     DoAddSigner(privateKey, GetSignerIdentifier(subjectKeyID), encryptionOid, digestOid,
         signedAttrGenerator, unsignedAttrGenerator);
 }
            internal SignerInfoGeneratorImpl(
                CmsSignedDataStreamGenerator	outer,
                AsymmetricKeyParameter			key,
                SignerIdentifier				signerIdentifier,
                string							digestOID,
                string							encOID,
                CmsAttributeTableGenerator		sAttr,
                CmsAttributeTableGenerator		unsAttr)
            {
                this.outer = outer;

                _signerIdentifier = signerIdentifier;
                _digestOID = digestOID;
                _encOID = encOID;
                _sAttr = sAttr;
                _unsAttr = unsAttr;
                _encName = Helper.GetEncryptionAlgName(_encOID);

                string digestName = Helper.GetDigestAlgName(_digestOID);
                string signatureName = digestName + "with" + _encName;

                if (_sAttr != null)
                {
                    _sig = Helper.GetSignatureInstance(signatureName);
                }
                else
                {
                    // Note: Need to use raw signatures here since we have already calculated the digest
                    if (_encName.Equals("RSA"))
                    {
                        _sig = Helper.GetSignatureInstance("RSA");
                    }
                    else if (_encName.Equals("DSA"))
                    {
                        _sig = Helper.GetSignatureInstance("NONEwithDSA");
                    }
                    // TODO Add support for raw PSS
                //					else if (_encName.equals("RSAandMGF1"))
                //					{
                //						_sig = CMSSignedHelper.INSTANCE.getSignatureInstance("NONEWITHRSAPSS", _sigProvider);
                //						try
                //						{
                //							// Init the params this way to avoid having a 'raw' version of each PSS algorithm
                //							Signature sig2 = CMSSignedHelper.INSTANCE.getSignatureInstance(signatureName, _sigProvider);
                //							PSSParameterSpec spec = (PSSParameterSpec)sig2.getParameters().getParameterSpec(PSSParameterSpec.class);
                //							_sig.setParameter(spec);
                //						}
                //						catch (Exception e)
                //						{
                //							throw new SignatureException("algorithm: " + _encName + " could not be configured.");
                //						}
                //					}
                    else
                    {
                        throw new SignatureException("algorithm: " + _encName + " not supported in base signatures.");
                    }
                }

                _sig.Init(true, new ParametersWithRandom(key, outer.rand));
            }
		/**
		 * add a signer, specifying the digest encryption algorithm, with extra signed/unsigned attributes based on generators.
		 */
		public void AddSigner(
			AsymmetricKeyParameter		privateKey,
			X509Certificate				cert,
			string						encryptionOID,
			string						digestOID,
			CmsAttributeTableGenerator	signedAttrGen,
			CmsAttributeTableGenerator	unsignedAttrGen)
		{
			doAddSigner(privateKey, GetSignerIdentifier(cert), encryptionOID, digestOID, signedAttrGen,
				unsignedAttrGen, null);
		}
		public void AddSigner(
			AsymmetricKeyParameter		privateKey,
			byte[]						subjectKeyID,
			string						digestOid,
			CmsAttributeTableGenerator	signedAttrGenerator,
			CmsAttributeTableGenerator	unsignedAttrGenerator)
		{
			ConfigureDigest(digestOid);

            string digestName = Helper.GetDigestAlgName(digestOid);
            string encOID = GetEncOid(privateKey, digestOid);
            string signatureName = digestName + "with" + Helper.GetEncryptionAlgName(encOID);
            ISigner sig = Helper.GetSignatureInstance(signatureName);
            sig.Init(true, new ParametersWithRandom(privateKey, rand));

			_signerInfs.Add(new SignerInf(this, privateKey, subjectKeyID, digestOid, encOID,
				signedAttrGenerator, unsignedAttrGenerator, sig));
		}
		/**
		 * add a signer, including digest encryption algorithm, with extra signed/unsigned attributes based on generators.
		 */
		public void AddSigner(
			AsymmetricKeyParameter		privateKey,
			byte[]						subjectKeyID,
			string						encryptionOID,
			string						digestOID,
			CmsAttributeTableGenerator	signedAttrGen,
			CmsAttributeTableGenerator	unsignedAttrGen)
		{
			doAddSigner(privateKey, GetSignerIdentifier(subjectKeyID), encryptionOID, digestOID,
				signedAttrGen, unsignedAttrGen, null);
		}
		public void AddSigner(
			AsymmetricKeyParameter		privateKey,
			byte[]						subjectKeyID,
			string						digestOid,
			CmsAttributeTableGenerator	signedAttrGenerator,
			CmsAttributeTableGenerator	unsignedAttrGenerator)
		{
			AddSigner(privateKey, subjectKeyID, Helper.GetEncOid(privateKey, digestOid),
				digestOid, signedAttrGenerator, unsignedAttrGenerator);
		}
		public void AddSigner(
			AsymmetricKeyParameter		privateKey,
			X509Certificate				cert,
			string						digestOid,
			CmsAttributeTableGenerator  signedAttrGenerator,
			CmsAttributeTableGenerator  unsignedAttrGenerator)
		{
			AddSigner(privateKey, cert, Helper.GetEncOid(privateKey, digestOid), digestOid,
				signedAttrGenerator, unsignedAttrGenerator);
        }
            internal SignerInfoGeneratorImpl(
                CmsSignedDataStreamGenerator	outer,
                AsymmetricKeyParameter			key,
                SignerIdentifier				signerIdentifier,
                string							digestOID,
                string							encOID,
                CmsAttributeTableGenerator		sAttr,
                CmsAttributeTableGenerator		unsAttr)
            {
                this.outer = outer;

                _signerIdentifier = signerIdentifier;
                _digestOID = digestOID;
                _encOID = encOID;
                _sAttr = sAttr;
                _unsAttr = unsAttr;
                _encName = Helper.GetEncryptionAlgName(_encOID);

                string digestName = Helper.GetDigestAlgName(_digestOID);
                string signatureName = digestName + "with" + _encName;

                if (_sAttr != null)
                {
                    _sig = Helper.GetSignatureInstance(signatureName);
                }
                else
                {
                    // Note: Need to use raw signatures here since we have already calculated the digest
                    if (_encName.Equals("RSA"))
                    {
                        _sig = Helper.GetSignatureInstance("RSA");
                    }
                    else if (_encName.Equals("DSA"))
                    {
                        _sig = Helper.GetSignatureInstance("NONEwithDSA");
                    }
                    else
                    {
                        throw new SignatureException("algorithm: " + _encName + " not supported in base signatures.");
                    }
                }

                _sig.Init(true, new ParametersWithRandom(key, outer.rand));
            }