![JAR search and dependency download from the Maven repository](/logo.png)
com.unbound.provider.UBMac Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of unbound-java-provider Show documentation
Show all versions of unbound-java-provider Show documentation
This is a collection of JAVA libraries that implement Unbound cryptographic classes for JAVA provider, PKCS11 wrapper, cryptoki, and advapi
package com.unbound.provider;
import com.unbound.client.*;
import javax.crypto.MacSpi;
import javax.crypto.spec.IvParameterSpec;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.spec.AlgorithmParameterSpec;
public class UBMac extends MacSpi
{
private final MacOper oper = Client.getInstance().newMacOperation();
UBMac(HashType hashType)
{
oper.mode = MacMode.HMAC; oper.hashType = hashType;
}
UBMac(MacMode macMode)
{
oper.mode = macMode; oper.hashType = null;
}
// ------------------------ interface ------------------------
@Override
protected int engineGetMacLength()
{
return oper.getMacLen();
}
@Override
protected void engineInit(Key key, AlgorithmParameterSpec paramSpec) throws InvalidKeyException, InvalidAlgorithmParameterException
{
if (key==null) throw new InvalidKeyException("Invalid key");
if (!(key instanceof UBSecretKey)) throw new InvalidKeyException("Invalid key type");
if (oper.mode == MacMode.GMAC)
{
if (paramSpec==null) oper.iv = new byte[12]; // zeroes
else
{
if (!(paramSpec instanceof IvParameterSpec)) throw new InvalidAlgorithmParameterException("IvParameterSpec required");
oper.iv = ((IvParameterSpec)paramSpec).getIV();
}
}
else
{
if (paramSpec!=null) throw new InvalidAlgorithmParameterException("Parameters not supported");
}
KeyObject keyObject = ((UBSecretKey)key).object;
if (keyObject.getType()!=oper.mode.getKeyType()) throw new InvalidKeyException("Invalid key type");
oper.reset();
oper.keyObject = keyObject;
}
@Override
protected void engineUpdate(byte b)
{
oper.update(b);
}
@Override
protected void engineUpdate(byte[] input, int offset, int length)
{
oper.update(input, offset, length);
}
@Override
protected byte[] engineDoFinal()
{
return oper.finalMac(null);
}
@Override
protected void engineReset()
{
oper.reset();
}
// ---------------------------------- Sub-classes -----------------------
public static final class HmacSHA1 extends UBMac
{ public HmacSHA1() { super(HashType.SHA1); } }
public static final class HmacSHA256 extends UBMac
{ public HmacSHA256() { super(HashType.SHA256); } }
public static final class HmacSHA384 extends UBMac
{ public HmacSHA384() { super(HashType.SHA384); } }
public static final class HmacSHA512 extends UBMac
{ public HmacSHA512() { super(HashType.SHA512); } }
public static final class GMAC extends UBMac
{ public GMAC() { super(MacMode.GMAC); } }
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy