// Copyright 1997 The Open Group Research Institute.  All rights reserved.

package krb5.lib;

import krb5.lib.ccache.*;

public class KrbRdPriv {
	byte[] userData;

	public KrbRdPriv(
		byte[] msg,
		Credentials creds,
		EncryptionKey subKey,
		SeqNumber seqNumber,
		HostAddress saddr,
		HostAddress raddr,
		boolean timestampRequired,
		boolean seqNumberRequired
	)  throws KrbException {

		KRBPriv krb_priv = new KRBPriv(msg);

		EncryptionKey reqKey = null;
		if (subKey != null)
			reqKey = subKey;
		else
			reqKey = creds.key;

		userData = ApiUtil.rd_priv(
			krb_priv,
			reqKey,
			seqNumber,
			saddr,
			raddr,
			timestampRequired,
			seqNumberRequired,
			creds.cname,
			creds.crealm
		);
	}

	public KrbRdPriv(
		byte[] msg,
		KrbCreds creds,
		EncryptionKey subKey,
		SeqNumber seqNumber,
		HostAddress saddr,
		HostAddress raddr,
		boolean timestampRequired,
		boolean seqNumberRequired
	)  throws KrbException {

		KRBPriv krb_priv = new KRBPriv(msg);

		EncryptionKey reqKey = null;
		if (subKey != null)
			reqKey = subKey;
		else
			reqKey = creds.key;

		userData = ApiUtil.rd_priv(
			krb_priv,
			reqKey,
			seqNumber,
			saddr,
			raddr,
			timestampRequired,
			seqNumberRequired,
			creds.client,
			creds.client.getRealm()
		);
	}

	public byte[] data() {
		return userData;
	}
}

