byte[] getClientTLSCertificateDigest() { //The digest must be SHA256 over the DER encoded certificate. The PEM has the exact DER sequence in hex encoding around the begin and end markers if (tlsClientCertificatePEMBytes != null && clientTLSCertificateDigest == null) { String pemCert = new String(tlsClientCertificatePEMBytes, UTF_8); byte[] derBytes = Base64.getDecoder().decode( pemCert.replaceAll("-+[ \t]*(BEGIN|END)[ \t]+CERTIFICATE[ \t]*-+", "").replaceAll("\\s", "").trim() ); Digest digest = new SHA256Digest(); clientTLSCertificateDigest = new byte[digest.getDigestSize()]; digest.update(derBytes, 0, derBytes.length); digest.doFinal(clientTLSCertificateDigest, 0); } return clientTLSCertificateDigest; }
/** * Generate hash of the given input using the given Digest. * * @param input input data. * @param digest the digest to use for hashing * @return hashed data. */ public static byte[] hash(byte[] input, Digest digest) { byte[] retValue = new byte[digest.getDigestSize()]; digest.update(input, 0, input.length); digest.doFinal(retValue, 0); return retValue; }
@Override public byte[] hash(byte[] input) { Digest digest = getHashDigest(); byte[] retValue = new byte[digest.getDigestSize()]; digest.update(input, 0, input.length); digest.doFinal(retValue, 0); return retValue; }
Digest md = new SHA256Digest() md.reset(); md.update(data, 0, data.length); byte[] hash = new byte[md.getDigestSize()]; md.doFinal(hash, 0);
public static int getDigestSize(Digest digest) { if (digest instanceof Xof) { return digest.getDigestSize() * 2; } return digest.getDigestSize(); }
public DigestRandomGenerator( Digest digest) { this.digest = digest; this.seed = new byte[digest.getDigestSize()]; this.seedCounter = 1; this.state = new byte[digest.getDigestSize()]; this.stateCounter = 1; }
/** * @param digest the digest to be used as the source of generated bytes */ public ConcatenationKDFGenerator( Digest digest) { this.digest = digest; this.hLen = digest.getDigestSize(); }
@Override public int getDigestSize() { return digest.getDigestSize(); }
private HMac( Digest digest, int byteLength) { this.digest = digest; this.digestSize = digest.getDigestSize(); this.blockLength = byteLength; this.inputPad = new byte[blockLength]; this.outputBuf = new byte[blockLength + digestSize]; }
@Override public byte[] digest() { byte[] output = new byte[digest.getDigestSize()]; digest.doFinal(output, 0); return output; }
static byte[] signature(Digest digest) { byte[] out = new byte[digest.getDigestSize()]; digest.doFinal(out, 0); return out; } }
@Override public byte[] digest() { byte[] dig = new byte[this.digest.getDigestSize()]; this.digest.doFinal(dig, 0); return dig; }
public byte[] getDigest() { byte[] res = new byte[digest.getDigestSize()]; digest.doFinal(res, 0); return res; } }
/** * Creates a HKDFBytesGenerator based on the given hash function. * * @param hash the digest to be used as the source of generatedBytes bytes */ public HKDFBytesGenerator(Digest hash) { this.hMacHash = new HMac(hash); this.hashLen = hash.getDigestSize(); }
@Override public byte[] digest() { byte[] dig = new byte[digest.getDigestSize()]; digest.doFinal(dig, 0); return dig; }
static byte[] hash(Digest digest, byte[]... bytes) { for (byte[] b : bytes) { digest.update(b, 0, b.length); } byte[] output = new byte[digest.getDigestSize()]; digest.doFinal(output, 0); return output; }
public byte[] digest() { byte[] result = new byte[digest.getDigestSize()]; digest.doFinal(result, 0); reset(); return result; }
private byte[] calculateCommitment(byte[] w, byte[] message) { byte[] commitment = new byte[digest.getDigestSize()]; digest.update(w, 0, w.length); digest.update(message, 0, message.length); digest.doFinal(commitment, 0); return commitment; } }
public static void generatePublicKey(byte[] sk, int skOff, byte[] pk, int pkOff) { Digest d = createDigest(); byte[] h = new byte[d.getDigestSize()]; d.update(sk, skOff, SECRET_KEY_SIZE); d.doFinal(h, 0); byte[] s = new byte[SCALAR_BYTES]; pruneScalar(h, 0, s); scalarMultBaseEncoded(s, pk, pkOff); }
protected void ssl3Complete(Digest d, byte[] ipad, byte[] opad, int padLength) { byte[] master_secret = context.getSecurityParameters().masterSecret; d.update(master_secret, 0, master_secret.length); d.update(ipad, 0, padLength); byte[] tmp = new byte[d.getDigestSize()]; d.doFinal(tmp, 0); d.update(master_secret, 0, master_secret.length); d.update(opad, 0, padLength); d.update(tmp, 0, tmp.length); } }