[Impressum] [E-Mail]

package generated.javacard.copycardMoneySecure.copycard;

import javacard.framework.*;
import javacard.security.MessageDigest;

public class HashedData implements Codeable, HashData {

	public final static short HASHLENGTH = 20;
	private static MessageDigest md = MessageDigest.getInstance(
			MessageDigest.ALG_SHA, false);
	private static byte[] tohash = new byte[Store.COMPUTEDHASHDATALENGTH];

	public byte[] hashed;

	public HashedData() {
		hashed = new byte[HASHLENGTH];
	}

	public void copy(HashedData from) {
		//Der Typ von hashed ist ein Array aus primitiven Typen.
		Arrays.copy(from.hashed, this.hashed);
	}

	public byte getCode() {
		return Code.HASHEDDATA;
	}

	public boolean equals(Codeable other) {
		//Wenn der Typ der Objekte nicht ?bereinstimmt, k?nnen sie nicht gleich sein
		if (getCode() != other.getCode())
			return false;
		if (!Arrays.equals(hashed, ((HashedData) other).hashed))
			return false;
		return true;
	}

	public static HashedData hash(HashData h) {
		return Store.newHashedData().insthash(h);
	}

	private HashedData insthash(HashData h) {
		Coding c = Coding.getInstance();
		c.encode(h, tohash);
		md.doFinal(tohash, (short) 0, c.getEncodingLength(), hashed, (short) 0);
		return this;
	}
}