本文整理汇总了Java中org.bouncycastle.crypto.Wrapper类的典型用法代码示例。如果您正苦于以下问题:Java Wrapper类的具体用法?Java Wrapper怎么用?Java Wrapper使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
Wrapper类属于org.bouncycastle.crypto包,在下文中一共展示了Wrapper类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: createRFC3211Wrapper
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
static Wrapper createRFC3211Wrapper(ASN1ObjectIdentifier algorithm)
throws CMSException
{
if (NISTObjectIdentifiers.id_aes128_CBC.equals(algorithm)
|| NISTObjectIdentifiers.id_aes192_CBC.equals(algorithm)
|| NISTObjectIdentifiers.id_aes256_CBC.equals(algorithm))
{
return new RFC3211WrapEngine(new AESEngine());
}
else if (PKCSObjectIdentifiers.des_EDE3_CBC.equals(algorithm))
{
return new RFC3211WrapEngine(new DESedeEngine());
}
else if (OIWObjectIdentifiers.desCBC.equals(algorithm))
{
return new RFC3211WrapEngine(new DESEngine());
}
else if (PKCSObjectIdentifiers.RC2_CBC.equals(algorithm))
{
return new RFC3211WrapEngine(new RC2Engine());
}
else
{
throw new CMSException("cannot recognise wrapper: " + algorithm);
}
}
示例2: extractSecretKey
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
protected KeyParameter extractSecretKey(AlgorithmIdentifier keyEncryptionAlgorithm, AlgorithmIdentifier contentEncryptionAlgorithm, byte[] derivedKey, byte[] encryptedContentEncryptionKey)
throws CMSException
{
Wrapper keyEncryptionCipher = EnvelopedDataHelper.createRFC3211Wrapper(keyEncryptionAlgorithm.getAlgorithm());
keyEncryptionCipher.init(false, new ParametersWithIV(new KeyParameter(derivedKey), ASN1OctetString.getInstance(keyEncryptionAlgorithm.getParameters()).getOctets()));
try
{
return new KeyParameter(keyEncryptionCipher.unwrap(encryptedContentEncryptionKey, 0, encryptedContentEncryptionKey.length));
}
catch (InvalidCipherTextException e)
{
throw new CMSException("unable to unwrap key: " + e.getMessage(), e);
}
}
示例3: createWrapper
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
static Wrapper createWrapper(int encAlgorithm)
throws PGPException
{
switch (encAlgorithm)
{
case SymmetricKeyAlgorithmTags.AES_128:
case SymmetricKeyAlgorithmTags.AES_192:
case SymmetricKeyAlgorithmTags.AES_256:
return new RFC3394WrapEngine(new AESFastEngine());
case SymmetricKeyAlgorithmTags.CAMELLIA_128:
case SymmetricKeyAlgorithmTags.CAMELLIA_192:
case SymmetricKeyAlgorithmTags.CAMELLIA_256:
return new RFC3394WrapEngine(new CamelliaEngine());
default:
throw new PGPException("unknown wrap algorithm: " + encAlgorithm);
}
}
示例4: wrapAndUnwrap
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
private void wrapAndUnwrap(byte[] kek, byte[] key, byte[] expected)
throws Exception
{
Wrapper wrapper = new AESWrapPadEngine();
wrapper.init(true, new KeyParameter(kek));
byte[] cipherText = wrapper.wrap(key, 0, key.length);
if (!areEqual(cipherText, expected))
{
fail("Wrapped value does not match expected.");
}
wrapper.init(false, new KeyParameter(kek));
byte[] plainText = wrapper.unwrap(cipherText, 0, cipherText.length);
if (!areEqual(key, plainText))
{
fail("Unwrapped value does not match original.");
}
}
示例5: heapIssueTest
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
private void heapIssueTest()
{
byte[] key = Hex.decode("d305ef52a6b9e72c810b821261d2d678");
byte[] ciphertext = Hex.decode("d2b2906d209a46261d8f6794eca3179d");
Wrapper aes = new AESWrapPadEngine();
aes.init(false, new KeyParameter(key));
try
{
byte[] result = aes.unwrap(ciphertext, 0, ciphertext.length);
fail("incorrect pad not detected");
}
catch (InvalidCipherTextException e)
{
// ignore
}
}
示例6: testChecksum
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
private void testChecksum(byte[] kek, byte[] iv, byte[] block, Wrapper wrapper)
{
encryptBlock(kek, iv, block);
try
{
wrapper.unwrap(block, 0, block.length);
fail("bad checksum not detected");
}
catch (InvalidCipherTextException e)
{
if (!e.getMessage().equals("wrapped key fails checksum"))
{
fail("wrong exception");
}
}
}
示例7: create
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
private static RFC6637 create(
String curveName,
Supplier<Digest> digestFactory,
Supplier<Wrapper> wrapperFactory,
int publicKeyAlgID,
int symAlgID,
int symAlgIDLength,
int kdfHashID) {
try {
ASN1ObjectIdentifier oid = ECNamedCurveTable.getOID(curveName);
RFC6637KDF kdf = new RFC6637KDF(
digestFactory,
oid,
(byte) publicKeyAlgID,
(byte) symAlgID,
(byte) kdfHashID);
return new RFC6637(wrapperFactory, curveName, symAlgIDLength, kdf);
} catch (IOException ex) {
throw new IllegalStateException(ex);
}
}
示例8: WrapCipherSpi
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
protected WrapCipherSpi(
Wrapper wrapEngine,
int ivSize)
{
this.wrapEngine = wrapEngine;
this.ivSize = ivSize;
}
示例9: BcSymmetricKeyUnwrapper
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
public BcSymmetricKeyUnwrapper(AlgorithmIdentifier wrappingAlgorithm, Wrapper wrapper, KeyParameter wrappingKey)
{
super(wrappingAlgorithm);
this.wrapper = wrapper;
this.wrappingKey = wrappingKey;
}
示例10: BcSymmetricKeyWrapper
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
public BcSymmetricKeyWrapper(AlgorithmIdentifier wrappingAlgorithm, Wrapper wrapper, KeyParameter wrappingKey)
{
super(wrappingAlgorithm);
this.wrapper = wrapper;
this.wrappingKey = wrappingKey;
}
示例11: BaseWrapCipher
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
protected BaseWrapCipher(
Wrapper wrapEngine,
int ivSize)
{
this.wrapEngine = wrapEngine;
this.ivSize = ivSize;
}
示例12: generateEncryptedBytes
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
public byte[] generateEncryptedBytes(AlgorithmIdentifier keyEncryptionAlgorithm, byte[] derivedKey, GenericKey contentEncryptionKey)
throws CMSException
{
byte[] contentEncryptionKeySpec = ((KeyParameter)CMSUtils.getBcKey(contentEncryptionKey)).getKey();
Wrapper keyEncryptionCipher = EnvelopedDataHelper.createRFC3211Wrapper(keyEncryptionAlgorithm.getAlgorithm());
keyEncryptionCipher.init(true, new ParametersWithIV(new KeyParameter(derivedKey), ASN1OctetString.getInstance(keyEncryptionAlgorithm.getParameters()).getOctets()));
return keyEncryptionCipher.wrap(contentEncryptionKeySpec, 0, contentEncryptionKeySpec.length);
}
示例13: wrapTest
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
private void wrapTest(
int id,
BlockCipher engine,
byte[] kek,
byte[] iv,
SecureRandom rand,
byte[] in,
byte[] out)
throws Exception
{
Wrapper wrapper = new RFC3211WrapEngine(engine);
wrapper.init(true, new ParametersWithRandom(new ParametersWithIV(new KeyParameter(kek), iv), rand));
byte[] cText = wrapper.wrap(in, 0, in.length);
if (!Arrays.areEqual(cText, out))
{
fail("failed wrap test " + id + " expected " + new String(Hex.encode(out)) + " got " + new String(Hex.encode(cText)));
}
wrapper.init(false, new ParametersWithIV(new KeyParameter(kek), iv));
byte[] pText = wrapper.unwrap(out, 0, out.length);
if (!Arrays.areEqual(pText, in))
{
fail("rfailed unwrap test " + id + " expected " + new String(Hex.encode(in)) + " got " + new String(Hex.encode(pText)));
}
}
示例14: testCorruption
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
private void testCorruption()
throws InvalidCipherTextException
{
byte[] kek = Hex.decode("D1DAA78615F287E6");
byte[] iv = Hex.decode("EFE598EF21B33D6D");
Wrapper wrapper = new RFC3211WrapEngine(new DESEngine());
wrapper.init(false, new ParametersWithIV(new KeyParameter(kek), iv));
byte[] block = Hex.decode("ff739D838C627C897323A2F8C436F541");
encryptBlock(kek, iv, block);
try
{
wrapper.unwrap(block, 0, block.length);
fail("bad length not detected");
}
catch (InvalidCipherTextException e)
{
if (!e.getMessage().equals("wrapped key corrupted"))
{
fail("wrong exception on length");
}
}
block = Hex.decode("08639D838C627C897323A2F8C436F541");
testChecksum(kek, iv, block, wrapper);
block = Hex.decode("08736D838C627C897323A2F8C436F541");
testChecksum(kek, iv, block, wrapper);
block = Hex.decode("08739D638C627C897323A2F8C436F541");
testChecksum(kek, iv, block, wrapper);
}
示例15: RFC6637
import org.bouncycastle.crypto.Wrapper; //导入依赖的package包/类
public RFC6637(
Supplier<Wrapper> wrapperFactory,
String curveName,
int symAlgIDKeyLength,
RFC6637KDF kdf
) throws IOException {
this.wrapperFactory = Objects.requireNonNull(wrapperFactory, "wrapperFactory");
this.curveName = Objects.requireNonNull(curveName, "curveName");
this.symAlgIDKeyLength = symAlgIDKeyLength;
this.kdf = Objects.requireNonNull(kdf, "kdf");
}