You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					36 lines
				
				742 B
			
		
		
			
		
	
	
					36 lines
				
				742 B
			| 
								 
											8 years ago
										 
									 | 
							
								/*
							 | 
						||
| 
								 | 
							
								gcc -DTEST_RSA test_rsa.c ../crypto/rsa.c ../crypto/sha.c && ./a.out
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <stdio.h>
							 | 
						||
| 
								 | 
							
								#include <stdlib.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MAX_LEN 0x40000
							 | 
						||
| 
								 | 
							
								char buf[MAX_LEN];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "../crypto/sha.h"
							 | 
						||
| 
								 | 
							
								#include "../crypto/rsa.h"
							 | 
						||
| 
								 | 
							
								#include "../obj/cert.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int main() {
							 | 
						||
| 
								 | 
							
								  FILE *f = fopen("../obj/panda.bin", "rb");
							 | 
						||
| 
								 | 
							
								  int tlen = fread(buf, 1, MAX_LEN, f);
							 | 
						||
| 
								 | 
							
								  fclose(f);
							 | 
						||
| 
								 | 
							
								  printf("read %d\n", tlen);
							 | 
						||
| 
								 | 
							
								  uint32_t *_app_start = (uint32_t *)buf;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  int len = _app_start[0];
							 | 
						||
| 
								 | 
							
								  char digest[SHA_DIGEST_SIZE];
							 | 
						||
| 
								 | 
							
								  SHA_hash(&_app_start[1], len-4, digest);
							 | 
						||
| 
								 | 
							
								  printf("SHA hash done\n");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!RSA_verify(&rsa_key, ((void*)&_app_start[0]) + len, RSANUMBYTES, digest, SHA_DIGEST_SIZE)) {
							 | 
						||
| 
								 | 
							
								    printf("RSA fail\n");
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    printf("RSA match!!!\n");
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |