Java 类org.bouncycastle.asn1.cms.RecipientEncryptedKey 实例源码

项目:ipack    文件:KeyAgreeRecipientInformation.java   
static void readRecipientInfo(List infos, KeyAgreeRecipientInfo info,
    AlgorithmIdentifier messageAlgorithm, CMSSecureReadable secureReadable, AuthAttributesProvider additionalData)
{
    ASN1Sequence s = info.getRecipientEncryptedKeys();

    for (int i = 0; i < s.size(); ++i)
    {
        RecipientEncryptedKey id = RecipientEncryptedKey.getInstance(
            s.getObjectAt(i));

        RecipientId rid;

        KeyAgreeRecipientIdentifier karid = id.getIdentifier();
        IssuerAndSerialNumber iAndSN = karid.getIssuerAndSerialNumber();

        if (iAndSN != null)
        {
            rid = new KeyAgreeRecipientId(iAndSN.getName(), iAndSN.getSerialNumber().getValue());
        }
        else
        {
            RecipientKeyIdentifier rKeyID = karid.getRKeyID();

            // Note: 'date' and 'other' fields of RecipientKeyIdentifier appear to be only informational

            rid = new KeyAgreeRecipientId(rKeyID.getSubjectKeyIdentifier().getOctets());
        }

        infos.add(new KeyAgreeRecipientInformation(info, rid, id.getEncryptedKey(), messageAlgorithm,
            secureReadable, additionalData));
    }
}
项目:gwt-crypto    文件:KeyAgreeRecipientInformation.java   
static void readRecipientInfo(List infos, KeyAgreeRecipientInfo info,
    AlgorithmIdentifier messageAlgorithm, CMSSecureReadable secureReadable, AuthAttributesProvider additionalData)
{
    ASN1Sequence s = info.getRecipientEncryptedKeys();

    for (int i = 0; i < s.size(); ++i)
    {
        RecipientEncryptedKey id = RecipientEncryptedKey.getInstance(
            s.getObjectAt(i));

        RecipientId rid;

        KeyAgreeRecipientIdentifier karid = id.getIdentifier();
        IssuerAndSerialNumber iAndSN = karid.getIssuerAndSerialNumber();

        if (iAndSN != null)
        {
            rid = new KeyAgreeRecipientId(iAndSN.getName(), iAndSN.getSerialNumber().getValue());
        }
        else
        {
            RecipientKeyIdentifier rKeyID = karid.getRKeyID();

            // Note: 'date' and 'other' fields of RecipientKeyIdentifier appear to be only informational

            rid = new KeyAgreeRecipientId(rKeyID.getSubjectKeyIdentifier().getOctets());
        }

        infos.add(new KeyAgreeRecipientInformation(info, rid, id.getEncryptedKey(), messageAlgorithm,
            secureReadable, additionalData));
    }
}
项目:Aki-SSL    文件:KeyAgreeRecipientInformation.java   
static void readRecipientInfo(List infos, KeyAgreeRecipientInfo info,
    AlgorithmIdentifier messageAlgorithm, CMSSecureReadable secureReadable, AuthAttributesProvider additionalData)
{
    ASN1Sequence s = info.getRecipientEncryptedKeys();

    for (int i = 0; i < s.size(); ++i)
    {
        RecipientEncryptedKey id = RecipientEncryptedKey.getInstance(
            s.getObjectAt(i));

        RecipientId rid;

        KeyAgreeRecipientIdentifier karid = id.getIdentifier();
        IssuerAndSerialNumber iAndSN = karid.getIssuerAndSerialNumber();

        if (iAndSN != null)
        {
            rid = new KeyAgreeRecipientId(iAndSN.getName(), iAndSN.getSerialNumber().getValue());
        }
        else
        {
            RecipientKeyIdentifier rKeyID = karid.getRKeyID();

            // Note: 'date' and 'other' fields of RecipientKeyIdentifier appear to be only informational

            rid = new KeyAgreeRecipientId(rKeyID.getSubjectKeyIdentifier().getOctets());
        }

        infos.add(new KeyAgreeRecipientInformation(info, rid, id.getEncryptedKey(), messageAlgorithm,
            secureReadable, additionalData));
    }
}
项目:irma_future_id    文件:KeyAgreeRecipientInformation.java   
static void readRecipientInfo(List infos, KeyAgreeRecipientInfo info,
    AlgorithmIdentifier messageAlgorithm, CMSSecureReadable secureReadable, AuthAttributesProvider additionalData)
{
    ASN1Sequence s = info.getRecipientEncryptedKeys();

    for (int i = 0; i < s.size(); ++i)
    {
        RecipientEncryptedKey id = RecipientEncryptedKey.getInstance(
            s.getObjectAt(i));

        RecipientId rid;

        KeyAgreeRecipientIdentifier karid = id.getIdentifier();
        IssuerAndSerialNumber iAndSN = karid.getIssuerAndSerialNumber();

        if (iAndSN != null)
        {
            rid = new KeyAgreeRecipientId(iAndSN.getName(), iAndSN.getSerialNumber().getValue());
        }
        else
        {
            RecipientKeyIdentifier rKeyID = karid.getRKeyID();

            // Note: 'date' and 'other' fields of RecipientKeyIdentifier appear to be only informational

            rid = new KeyAgreeRecipientId(rKeyID.getSubjectKeyIdentifier().getOctets());
        }

        infos.add(new KeyAgreeRecipientInformation(info, rid, id.getEncryptedKey(), messageAlgorithm,
            secureReadable, additionalData));
    }
}
项目:irma_future_id    文件:KeyAgreeRecipientInformation.java   
static void readRecipientInfo(List infos, KeyAgreeRecipientInfo info,
    AlgorithmIdentifier messageAlgorithm, CMSSecureReadable secureReadable, AuthAttributesProvider additionalData)
{
    ASN1Sequence s = info.getRecipientEncryptedKeys();

    for (int i = 0; i < s.size(); ++i)
    {
        RecipientEncryptedKey id = RecipientEncryptedKey.getInstance(
            s.getObjectAt(i));

        RecipientId rid;

        KeyAgreeRecipientIdentifier karid = id.getIdentifier();
        IssuerAndSerialNumber iAndSN = karid.getIssuerAndSerialNumber();

        if (iAndSN != null)
        {
            rid = new KeyAgreeRecipientId(iAndSN.getName(), iAndSN.getSerialNumber().getValue());
        }
        else
        {
            RecipientKeyIdentifier rKeyID = karid.getRKeyID();

            // Note: 'date' and 'other' fields of RecipientKeyIdentifier appear to be only informational

            rid = new KeyAgreeRecipientId(rKeyID.getSubjectKeyIdentifier().getOctets());
        }

        infos.add(new KeyAgreeRecipientInformation(info, rid, id.getEncryptedKey(), messageAlgorithm,
            secureReadable, additionalData));
    }
}
项目:bc-java    文件:KeyAgreeRecipientInformation.java   
static void readRecipientInfo(List infos, KeyAgreeRecipientInfo info,
    AlgorithmIdentifier messageAlgorithm, CMSSecureReadable secureReadable, AuthAttributesProvider additionalData)
{
    ASN1Sequence s = info.getRecipientEncryptedKeys();

    for (int i = 0; i < s.size(); ++i)
    {
        RecipientEncryptedKey id = RecipientEncryptedKey.getInstance(
            s.getObjectAt(i));

        RecipientId rid;

        KeyAgreeRecipientIdentifier karid = id.getIdentifier();
        IssuerAndSerialNumber iAndSN = karid.getIssuerAndSerialNumber();

        if (iAndSN != null)
        {
            rid = new KeyAgreeRecipientId(iAndSN.getName(), iAndSN.getSerialNumber().getValue());
        }
        else
        {
            RecipientKeyIdentifier rKeyID = karid.getRKeyID();

            // Note: 'date' and 'other' fields of RecipientKeyIdentifier appear to be only informational

            rid = new KeyAgreeRecipientId(rKeyID.getSubjectKeyIdentifier().getOctets());
        }

        infos.add(new KeyAgreeRecipientInformation(info, rid, id.getEncryptedKey(), messageAlgorithm,
            secureReadable, additionalData));
    }
}
项目:bc-java    文件:KeyAgreeRecipientInformation.java   
static void readRecipientInfo(List infos, KeyAgreeRecipientInfo info,
    AlgorithmIdentifier messageAlgorithm, CMSSecureReadable secureReadable, AuthAttributesProvider additionalData)
{
    ASN1Sequence s = info.getRecipientEncryptedKeys();

    for (int i = 0; i < s.size(); ++i)
    {
        RecipientEncryptedKey id = RecipientEncryptedKey.getInstance(
            s.getObjectAt(i));

        RecipientId rid;

        KeyAgreeRecipientIdentifier karid = id.getIdentifier();
        IssuerAndSerialNumber iAndSN = karid.getIssuerAndSerialNumber();

        if (iAndSN != null)
        {
            rid = new KeyAgreeRecipientId(iAndSN.getName(), iAndSN.getSerialNumber().getValue());
        }
        else
        {
            RecipientKeyIdentifier rKeyID = karid.getRKeyID();

            // Note: 'date' and 'other' fields of RecipientKeyIdentifier appear to be only informational

            rid = new KeyAgreeRecipientId(rKeyID.getSubjectKeyIdentifier().getOctets());
        }

        infos.add(new KeyAgreeRecipientInformation(info, rid, id.getEncryptedKey(), messageAlgorithm,
            secureReadable, additionalData));
    }
}
项目:Aki-SSL    文件:JceKeyAgreeRecipientInfoGenerator.java   
public ASN1Sequence generateRecipientEncryptedKeys(AlgorithmIdentifier keyAgreeAlgorithm, AlgorithmIdentifier keyEncryptionAlgorithm, GenericKey contentEncryptionKey)
    throws CMSException
{
    if (recipientIDs.isEmpty())
    {
        throw new CMSException("No recipients associated with generator - use addRecipient()");
    }

    init(keyAgreeAlgorithm.getAlgorithm());

    PrivateKey senderPrivateKey = this.senderPrivateKey;

    ASN1ObjectIdentifier keyAgreementOID = keyAgreeAlgorithm.getAlgorithm();

    ASN1EncodableVector recipientEncryptedKeys = new ASN1EncodableVector();
    for (int i = 0; i != recipientIDs.size(); i++)
    {
        PublicKey recipientPublicKey = (PublicKey)recipientKeys.get(i);
        KeyAgreeRecipientIdentifier karId = (KeyAgreeRecipientIdentifier)recipientIDs.get(i);

        try
        {
            AlgorithmParameterSpec agreementParamSpec;

            if (CMSUtils.isMQV(keyAgreementOID))
            {
                agreementParamSpec = new MQVParameterSpec(ephemeralKP, recipientPublicKey, userKeyingMaterial);
            }
            else if (CMSUtils.isEC(keyAgreementOID))
            {
                byte[] ukmKeyingMaterial = ecc_cms_Generator.generateKDFMaterial(keyEncryptionAlgorithm, keySizeProvider.getKeySize(keyEncryptionAlgorithm.getAlgorithm()), userKeyingMaterial);

                agreementParamSpec = new UserKeyingMaterialSpec(ukmKeyingMaterial);
            }
            else if (CMSUtils.isRFC2631(keyAgreementOID))
            {
                if (userKeyingMaterial != null)
                {
                    agreementParamSpec = new UserKeyingMaterialSpec(userKeyingMaterial);
                }
                else
                {
                    if (keyAgreementOID.equals(PKCSObjectIdentifiers.id_alg_SSDH))
                    {
                        throw new CMSException("User keying material must be set for static keys.");
                    }
                    agreementParamSpec = null;
                }
            }
            else
            {
                throw new CMSException("Unknown key agreement algorithm: " + keyAgreementOID);
            }

            // Use key agreement to choose a wrap key for this recipient
            KeyAgreement keyAgreement = helper.createKeyAgreement(keyAgreementOID);
            keyAgreement.init(senderPrivateKey, agreementParamSpec, random);
            keyAgreement.doPhase(recipientPublicKey, true);

            SecretKey keyEncryptionKey = keyAgreement.generateSecret(keyEncryptionAlgorithm.getAlgorithm().getId());

            // Wrap the content encryption key with the agreement key
            Cipher keyEncryptionCipher = helper.createCipher(keyEncryptionAlgorithm.getAlgorithm());

            keyEncryptionCipher.init(Cipher.WRAP_MODE, keyEncryptionKey, random);

            byte[] encryptedKeyBytes = keyEncryptionCipher.wrap(helper.getJceKey(contentEncryptionKey));

            ASN1OctetString encryptedKey = new DEROctetString(encryptedKeyBytes);

            recipientEncryptedKeys.add(new RecipientEncryptedKey(karId, encryptedKey));
        }
        catch (GeneralSecurityException e)
        {
            throw new CMSException("Cannot perform agreement step: " + e.getMessage(), e);
        }
    }

    return new DERSequence(recipientEncryptedKeys);
}