//*********************************************************
//
// Copyright (c) Microsoft. All rights reserved.
// This code is licensed under the Apache License Version 2.0.
// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
//
//*********************************************************
package com.microsoft.uprove;
import java.io.IOException;
/**
* An interface for the U-Prove Device.
*/
public interface Device {
/**
* Returns the Device public key.
* @return the Device public key.
*/
byte[] GetDevicePublicKey();
/**
* Returns the Device parameters <code>zeta_d</code>.
* @param zd the Issuer parameters <code>z_d</code>.
* @return the Device parameter.
* @throws IOException if an encoding error occurs.
*/
byte[] GetDeviceParameter(byte[] zd) throws IOException;
/**
* Returns the Device initial witness.
* @return the Device initial witness.
*/
byte[] GetInitialWitness();
/**
* Returns the Device response.
* @param messageForDevice message for the Device.
* @param partialChallengeDigest partial challenge digest.
* @return the Device response.
*/
byte[] GetResponse(byte[] messageForDevice, byte[] partialChallengeDigest);
}