示例#1
0
文件: certs.c 项目: 44670/Project_CTR
u8 *GetCertPubk(u8 *cert)
{
	u32 SigSize = 0;
	u32 SigPadding = 0;
	GetCertSigSectionSizes(&SigSize,&SigPadding,cert);
	if(!SigSize || !SigPadding) return 0;
	return (cert+4+SigSize+SigPadding+sizeof(Cert_Struct));
}
示例#2
0
cert_hdr* GetCertHdr(u8 *cert)
{
	u32 sign_size = 0;
	u32 sign_padlen = 0;
	GetCertSigSectionSizes(&sign_size,&sign_padlen,cert);
	if(!sign_size || !sign_padlen) return NULL;

	return (cert_hdr*)(cert+4+sign_size+sign_padlen);
}
示例#3
0
u32 GetCertSize(u8 *cert)
{
	u32 sign_size = 0;
	u32 sign_padlen = 0;
	GetCertSigSectionSizes(&sign_size,&sign_padlen,cert);
	if(!sign_size || !sign_padlen)
		return 0;

	return sizeof(u32) + sign_size + sign_padlen + sizeof(cert_hdr) + GetCertPubkSectionSize(GetCertPubkType(cert));
}
示例#4
0
文件: certs.c 项目: 44670/Project_CTR
u8 *GetCertName(u8 *cert)
{
	u32 SigSize = 0;
	u32 SigPadding = 0;
	GetCertSigSectionSizes(&SigSize,&SigPadding,cert);
	if(!SigSize || !SigPadding) return 0;

	Cert_Struct *certcore = (Cert_Struct*)(cert+4+SigSize+SigPadding);
	return certcore->Name;
}
示例#5
0
文件: certs.c 项目: 44670/Project_CTR
// Pubk
pubk_types GetCertPubkType(u8 *cert)
{
	u32 SigSize = 0;
	u32 SigPadding = 0;
	GetCertSigSectionSizes(&SigSize,&SigPadding,cert);
	if(!SigSize || !SigPadding) return 0;

	Cert_Struct *certcore = (Cert_Struct*)(cert+4+SigSize+SigPadding);

	return (pubk_types)u8_to_u32(certcore->KeyType,BE);
}
示例#6
0
文件: certs.c 项目: 44670/Project_CTR
u32 GetCertSize(u8 *cert)
{
	u32 SigSize = 0;
	u32 SigPadding = 0;
	GetCertSigSectionSizes(&SigSize,&SigPadding,cert);
	if(!SigSize || !SigPadding) return 0;

	Cert_Struct *certcore = (Cert_Struct*)(cert+4+SigSize+SigPadding);

	u32 PubKSectionSize = GetCertPubkSectionSize((pubk_types)u8_to_u32(certcore->KeyType,BE));

	return (4+SigSize+SigPadding+sizeof(Cert_Struct)+PubKSectionSize);
}
示例#7
0
文件: certs.c 项目: 44670/Project_CTR
bool VerifyCert(u8 *cert, u8 *pubk)
{
	u32 SigSize = 0;
	u32 SigPadding = 0;
	GetCertSigSectionSizes(&SigSize,&SigPadding,cert);
	if(!SigSize || !SigPadding) return 0;


	u8 *signature = (cert+4);
	u8 *data = (cert+4+SigSize+SigPadding);
	u32 datasize = sizeof(Cert_Struct) + GetCertPubkSectionSize(GetCertPubkType(cert));

	int result = ctr_sig(data,datasize,signature,pubk,NULL,u8_to_u32(cert,BE),CTR_RSA_VERIFY);

	if(result == 0) return true;
	else return false;
}