AVB中将公钥转换成字符数组头文件的实现
生活随笔
收集整理的這篇文章主要介紹了
AVB中将公钥转换成字符数组头文件的实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
之前有同事問到如何將一個公鑰,轉換成與之對應的.h頭文件,然后頭文件中是公鑰的字符數組。
實現其實也比較簡單,主要有如下幾個步驟,跟著我的步驟就可以實現:
1、先生成一個私鑰
這部分就自己openssl自己生成一個就可以了。
2、抽出私鑰對應的public key
直接調用android提供的avbtool.py腳本就可以實現
3、生成.h頭文件
./bin2header.py -i mypublickey.bin -o myheader.h -v headercontent參數就三個
-i表示傳入的bin文件
-o表示output,生成的.h頭文件
-v表示生成的.h中的字符數組的名稱
4、生成的myheader.h內容如下
$ cat myheader.h unsigned char headercontent[] = {0x00, 0x00, 0x10, 0x00, 0x06, 0x35, 0x41, 0x07, 0xbe, 0xe4, 0xff, 0x44,0x58, 0xe8, 0x38, 0xc4, 0xf2, 0x42, 0x5a, 0x9c, 0xcb, 0xd4, 0x53, 0x2d, ...0x2f, 0xfc, 0x7c, 0x00, 0xbd, 0x7f, 0x29, 0xf1, 0xa9, 0x4e, 0xac, 0xe5,0x86, 0xcf, 0x32, 0x47, 0x4c, 0x77, 0xe5, 0xc8, 0xcc, 0x2f, 0xbe, 0xac,0x96, 0x55, 0x51, 0x64, 0x71, 0xb7, 0x71, 0x95, 0xdf, 0xf2, 0x3e, 0x13 };5、附上bin2header.py腳本
#!/usr/bin/env python import argparse import sysdef bin2header(data, var_name='var'):out = []out.append('unsigned char {var_name}[] = {{'.format(var_name=var_name))l = [ data[i:i+12] for i in range(0, len(data), 12) ]for i, x in enumerate(l):line = ', '.join([ '0x{val:02x}'.format(val=ord(c)) for c in x ])out.append(' {line}{end_comma}'.format(line=line, end_comma=',' if i<len(l)-1 else ''))out.append('};')out.append('unsigned int {var_name}_len = {data_len};'.format(var_name=var_name, data_len=len(data)))return '\n'.join(out)def main():parser = argparse.ArgumentParser(description='Generate binary header output')parser.add_argument('-i', '--input', required=True , help='Input file')parser.add_argument('-o', '--out', required=True , help='Output file')parser.add_argument('-v', '--var', required=True , help='Variable name to use in file')args = parser.parse_args()if not args:return 1with open(args.input, 'r') as f:data = f.read()out = bin2header(data, args.var)with open(args.out, 'w') as f:f.write(out)return 0if __name__ == '__main__':sys.exit(main())好了,以上就是實現的步驟啦,如有不明白的請留言討論吧。
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的AVB中将公钥转换成字符数组头文件的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Thread concepts
- 下一篇: restful适用于移动互联网厂商作为业