| package org.bouncycastle.cms.bc; |
| |
| import org.bouncycastle.asn1.x509.AlgorithmIdentifier; |
| import org.bouncycastle.cms.CMSException; |
| import org.bouncycastle.cms.KeyTransRecipient; |
| import org.bouncycastle.crypto.CipherParameters; |
| import org.bouncycastle.crypto.params.AsymmetricKeyParameter; |
| import org.bouncycastle.operator.AsymmetricKeyUnwrapper; |
| import org.bouncycastle.operator.OperatorException; |
| import org.bouncycastle.operator.bc.BcRSAAsymmetricKeyUnwrapper; |
| |
| public abstract class BcKeyTransRecipient |
| implements KeyTransRecipient |
| { |
| private AsymmetricKeyParameter recipientKey; |
| |
| public BcKeyTransRecipient(AsymmetricKeyParameter recipientKey) |
| { |
| this.recipientKey = recipientKey; |
| } |
| |
| protected CipherParameters extractSecretKey(AlgorithmIdentifier keyEncryptionAlgorithm, AlgorithmIdentifier encryptedKeyAlgorithm, byte[] encryptedEncryptionKey) |
| throws CMSException |
| { |
| AsymmetricKeyUnwrapper unwrapper = new BcRSAAsymmetricKeyUnwrapper(keyEncryptionAlgorithm, recipientKey); |
| |
| try |
| { |
| return CMSUtils.getBcKey(unwrapper.generateUnwrappedKey(encryptedKeyAlgorithm, encryptedEncryptionKey)); |
| } |
| catch (OperatorException e) |
| { |
| throw new CMSException("exception unwrapping key: " + e.getMessage(), e); |
| } |
| } |
| } |