#ifndef __AEEDIGITALSIGN_H__
#define __AEEDIGITALSIGN_H__
/*======================================================

FILE:  DigitalSign.h

SERVICES:
        IDigitalSign

=====================================================

      Copyright ｩ 1999-2002 QUALCOMM Incorporated 
              All Rights Reserved.
           QUALCOMM Proprietary/GTDR

=====================================================*/
#include "AEE.h"
#include "AEESource.h"
#include "AEEError.h"
#include "AEEWebOpts.h"
//makise[S]
//#include "DigitalSign.bid"
#include "OEMClassIDs.h"
//makise[E]

/*** PTX-804 BREW101 START ***/
//typedef struct _DigitalSignStatus{
//	byte* target;				//署名対象データ
//	uint32 targetLength;		//署名対象データのバイト数
//	byte* keyID;				//署名発行者のKey ID
//	uint32 keyIDLength;			//署名発行者のKey IDのバイト数
//	byte* outBuffer;			//出力バッファ
//	uint32 bufferLength;		//出力バッファのバッファ長
//	uint32 outLength;			//出力テーダ長
//	int result;					//処理結果コード
//} DigitalSignStatus;
typedef struct _DigitalSignStatus{
	byte* target;			//署名対象データ
	uint32 targetLength;	//署名対象データのバイト数
	byte* dn;				//署名に使用する証明書のsubject、またはその認証チェーン上の証明書のsubject(2005.6.3 CHMC)
	uint32 dnLength;		//dnのバイト数(2005.6.3 CHMC)
	byte* outBuffer;		//出力バッファ
	uint32 bufferLength;	//出力バッファのバッファ長
	uint32 outLength;		//出力テーダ長
	int result;				//処理結果コード
} DigitalSignStatus;
/*** PTX-804 BREW101 END ***/

typedef struct IDigitalSign IDigitalSign;
AEEINTERFACE(IDigitalSign) {
	INHERIT_IWebOpts(IDigitalSign);

	int (*ComputeDigitalSign)(IDigitalSign* po, DigitalSignStatus* status, AEECallback* pcb);
};

#define IDIGITALSIGN_AddRef(p)                 AEEGETPVTBL((p),IDigitalSign)->AddRef((p))
#define IDIGITALSIGN_Release(p)                AEEGETPVTBL((p),IDigitalSign)->Release((p))
#define IDIGITALSIGN_QueryInterface(p,i,o)     AEEGETPVTBL((p),IDigitalSign)->QueryInterface((p),(i),(o))
#define IDIGITALSIGN_AddOpt(p,o)               AEEGETPVTBL((p),IDigitalSign)->AddOpt((p),(o))
#define IDIGITALSIGN_RemoveOpt(p,i,n)          AEEGETPVTBL((p),IDigitalSign)->RemoveOpt((p),(i),(n))
#define IDIGITALSIGN_GetOpt(p,i,n,o)           AEEGETPVTBL((p),IDigitalSign)->GetOpt((p),(i),(n),(o))
#define IDIGITALSIGN_ComputeDigitalSign(p,io,cb) \
                                               AEEGETPVTBL((p),IDigitalSign)->ComputeDigitalSign((p),(io),(cb))

#endif //__AEEDIGITALSIGN_H__

