Tuesday, August 25, 2009

把Android裡的key 轉成 keystore

update 2011.01.18


之前的link已經不見了 所以重新update一下


http://en.wikipedia.org/wiki/PKCS


java的keystore(jks)算是pkcs12的部分
但由於jks是sun的proprietary的format
所以openssl沒法處理jks 要先把他轉成pkcs12再用keytool來轉






首先要先把 private key (pkcs8) 從DER format轉成PEM format


openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem




然後要把private key 跟public key 轉成pkcs12
openssl pkcs12 -export -in platform.x509.pem -inkey platform.pem -out platform.pkcs12




最後用keytool把他轉成jks
keytool -importkeystore -srckeystore platform.pkcs12  -srcstoretype pkcs12 -srcstorepass android  -destkeystore platform.jks -deststoretype jks -deststorepass PASSWORD


注意的是 產生的alias是1  還不知道怎麼改alias就是了.......

keytool -list -keystore platform.jks -storetype jks -storepass PASSWORD
Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

1, Jan 18, 2011, PrivateKeyEntry, 
Certificate fingerprint (MD5): 8D:DB:34:2F:2D:A5:40:84:02:D7:56:8A:F2:1E:29:F9
在build.properties 加上
key.store=platform.jks
key.alias=1

最後 ant release 再打上PASSWORD就好了


2011.06.13
===== java keystore to certificate + private =========
keytool -export -alias 1 -keystore platform.jks -file exported-der.crt
openssl x509  -in exported-der.crt -inform der > platform.x509.pem 
就變回原來的x509 certificate

至於private key
目前查到的結果都是keytool沒辦法export private key
都要另外下載個ExportedPriv.java來作export的動作


Reference :
http://conshell.net/wiki/index.php/OpenSSL_to_Keytool_Conversion_tips
http://conshell.net/wiki/index.php/Keytool_to_OpenSSL_Conversion_tips
http://www.herongyang.com/crypto/Key_Formats_PKCS8_PKCS12_4.html

Monday, August 17, 2009

java的byte to int

今天下午在作一些byte operation時
有field是開頭用2byte來指定這個data的size

例如說 c000這是little endian的
所以實際是 00co

然後要拿這length來作事情時
b[0] | b[1] <<> char是unsigned了吧
不過很麻煩 用時還要把他轉int
最後發現可以用 b[0] & 0xff 這樣
主要是 0xff 他是一個int , 0x000000ff
所以b[0]也會被promoted為int 雖然int也是signed
但跟0x000000ff AND後sign bit 就不見了

不過也有看到比較雜的code
((b0 & 0x80) == 0x80 ? (b0 & 0x7F) + 0x80 : b0);
這也能把byte轉成unsigned的
原理是一樣的
但似乎多作了很多事..........


真的要買hack's delight來看了

coscup 2009的收穫

最大的收穫大概來自於星期天下午的
Smaller and Faster Android: Optimization and Toolchain Perspective

因為只有半小時 他講超快的 還用英文

裡面有講到
Interprocedural optimization -> 用 arm-eabi-gcc --fripa

還有
FDO -> Feekback Directed Optimization
Build-Run-Build
Class Loading Profiler -> trade off between boot-up time and app init time
ICF -> Identical Comdat Folding 不過他說Comdat 應該要說是Code 才是 還有講到一個IPO的term 不知道是什麼的縮寫就是了
Profiled Guided Optimization -> 跟FDO有關?

並講到了google 目前正在開發的gold linker
http://en.wikipedia.org/wiki/Gold_(linker)
http://www.airs.com/blog/archives/38
另外之後的walkingice有講到目前bionic的linker沒有處理weak symbol


還有gcc的版本 arm-eabi-gcc
目前Android用的是4.2.1
donuts會用4.3.1 而之後的E'clair會用4.4.1
分別是在 size improvement 上
4.2.1 -> 3%
4.3.1 -> 15%
4.4.1 -> 17%
而這三者的performance是差不多的

在libstdc++-v3方面 好像還不是很完整
要用就要把他static link ???

arm-eabi-gcc 會用一個option -mandroid
不過還不是很完整 所以還沒merge back to gcc

之後講了一些用到的compiler option

-fvisibility=hidden
__attribute__((visibility("public"))

-ffunction-session, -Wl,--gc-sessions
-finline-sessions, -fno-inline-functions-called-once

Thursday, August 13, 2009

generate PDK docs on Android

之前在 mydroid/development/pdk/docs 有些document (HTML)
例如說介紹Android Build system ,
如何在Android裡作不同的device setting
或者是 porting Android kernel and driver

可是最近都變成給DroidDoc吃的 jd檔

然後我make 或者是make docs都沒產生這些文件

最後發現在mydroid/development/pdk 裡有個README
按照他的說明就可以產生這些文件的HTML檔了


或者是用懶人速成法

$mydroid> make -j pdk pdk_all
^^^^^^^^^^^^^^ 兩個缺一不可

Sunday, August 2, 2009

用家裡電腦編Android

昨天買了cpu mainboard and DDR3
今天來測試一下

AMD Phenom II x4 955
DDR3 1333 4G

real 21m36.468s
user 53m51.970s
sys 4m19.640s


明天來試公司的intel 4核的
不過那好像ddr2...

公司的
real 21m18.609s
user 63m43.910s
sys 4m29.210s

DDR2 800
CPU Core2 Quad Q9400 2.66G

不確定為啥家裡的 real跟公司的是差不多的