GetRfc3211WrapperName() 개인적인 메소드

private GetRfc3211WrapperName ( string oid ) : string
oid string
리턴 string
예제 #1
0
        public RecipientInfo Generate(KeyParameter contentEncryptionKey, SecureRandom random)
        {
            byte[] keyBytes = contentEncryptionKey.GetKey();

            string   rfc3211WrapperName = Helper.GetRfc3211WrapperName(keyEncryptionKeyOID);
            IWrapper keyWrapper         = Helper.CreateWrapper(rfc3211WrapperName);

            // Note: In Java build, the IV is automatically generated in JCE layer
            int ivLength = rfc3211WrapperName.StartsWith("DESEDE") ? 8 : 16;

            byte[] iv = new byte[ivLength];
            random.NextBytes(iv);

            ICipherParameters parameters = new ParametersWithIV(keyEncryptionKey, iv);

            keyWrapper.Init(true, new ParametersWithRandom(parameters, random));
            Asn1OctetString encryptedKey = new DerOctetString(
                keyWrapper.Wrap(keyBytes, 0, keyBytes.Length));

            DerSequence seq = new DerSequence(
                new DerObjectIdentifier(keyEncryptionKeyOID),
                new DerOctetString(iv));

            AlgorithmIdentifier keyEncryptionAlgorithm = new AlgorithmIdentifier(
                PkcsObjectIdentifiers.IdAlgPwriKek, seq);

            return(new RecipientInfo(new PasswordRecipientInfo(
                                         keyDerivationAlgorithm, keyEncryptionAlgorithm, encryptedKey)));
        }
예제 #2
0
        public RecipientInfo Generate(KeyParameter contentEncryptionKey, SecureRandom random)
        {
            byte[]   key = contentEncryptionKey.GetKey();
            string   rfc3211WrapperName = Helper.GetRfc3211WrapperName(keyEncryptionKeyOID);
            IWrapper wrapper            = Helper.CreateWrapper(rfc3211WrapperName);
            int      num = (Platform.StartsWith(rfc3211WrapperName, "DESEDE") ? 8 : 16);

            byte[] array = new byte[num];
            ((Random)random).NextBytes(array);
            ICipherParameters parameters = new ParametersWithIV(keyEncryptionKey, array);

            wrapper.Init(forWrapping: true, new ParametersWithRandom(parameters, random));
            Asn1OctetString     encryptedKey           = new DerOctetString(wrapper.Wrap(key, 0, key.Length));
            DerSequence         parameters2            = new DerSequence(new DerObjectIdentifier(keyEncryptionKeyOID), new DerOctetString(array));
            AlgorithmIdentifier keyEncryptionAlgorithm = new AlgorithmIdentifier(PkcsObjectIdentifiers.IdAlgPwriKek, parameters2);

            return(new RecipientInfo(new PasswordRecipientInfo(keyDerivationAlgorithm, keyEncryptionAlgorithm, encryptedKey)));
        }