2012-09-12 25 views
0

我注意到當使用python gnupg時,如果我簽署一些數據並使用pickle將簽名數據保存到文件中,則會有大量數據與簽名數據一起保存。這些東西是在UNIX時間的時間戳,例如下面一行是時間戳的一部分:python gnupg timestamp

p24 
sS'timestamp' 
p25 
V1347364912 

的文件沒有提到任何這一點,這讓我有點糊塗了。在使用pickle加載文件後,我看不到任何提及的時間戳或任何返回值的方法。但如果pickle正在保存它,它必須是python對象的一部分。這是否意味着我應該有辦法在python中獲得這些信息?我也想利用這些數據,我可以通過閱讀文件本身來做這些數據,但我正在尋找一種更乾淨的方式來使用gnupg模塊來完成它。

回答

1

GnuPG是不是非常有據可查的,但如果你Inspect它,你會看到有除了那些屬性正常使用...

#234567891123456789212345678931234567894123456789512345678961234567897123456789 

# core 
import inspect 
import pickle 
import datetime 

# 3rd party 
import gnupg 


def depickle(): 
    """ pull and depickle our signed data """ 
    f = open('pickle.txt', 'r') 
    signed_data = pickle.load(f) 
    f.close() 
    return signed_data 

# depickle our signed data 
signed_data = depickle() 
# inspect the object 
for key, value in inspect.getmembers(signed_data): 
    print key 

其中之一就是你戳...恰當地命名爲時間戳。現在你知道它,你可以用它輕鬆地夠...

# use the attribute now that we know it 
print signed_data.timestamp 
# make it pretty 
print datetime.datetime.fromtimestamp(float(signed_data.timestamp)) 

那感覺長篇大論,但我認爲這種討論會從記錄使用檢查,以確定無證屬性,而不是隻是說有利於「使用signed_data .timestamp」。

+0

它沒有長時間的囉嗦,這是一個非常好的解釋,我學到了很多東西。非常感謝您花時間以您所做的方式回答問題。 – user1463479

0

我發現在文檔中沒有描述python-gnupg SignVerify類的某些字段。你將不得不看python-gnupg源碼:[PYTHONDIR]/Lib/site-packages/gnupg.py。有Sign類與handle_status()方法填補所有變量/領域連接與簽名,包括timestamp字段。