picseal_pub/docs/ps_proj_design

61 lines
2.1 KiB
Plaintext

[[[ PicSeal Design Document ]]]
[[ JPG file parse Pseudo Code ]]
1) Verify File
a. read JPG file: find record markers, save file locations
b. verify no parsing issues
c. save file locations for metatdate
d. save file locations for image data
2) Generate Hash
a. hash all image data
3) Digital Signature
a. generate new public key pair
b. sign hash data with priv key
4) Write new PicSeal Public file
a. write encrypted original metadata
b. write PicSeal metadata
i. write JSON
b. write image data
5) Write new PicSeal Private file
a. create thumbnail (smaller files)
b. write PicSeal metadata (JSON)
c. write image data
[[ PicSeal Metadata ]]
[ binary data blob format ]
# Pub: [app15:2|size:2|'picseal':7|type:1|sig:512|pubkey:550]
# Pvt: [app15:2|size:2|'picseal':7|type:1|sig:512|pvtkey:2347]
# 1. app15 jpg marker
app15_marker = b'\xff\xef'
# 2. ascii code for "picseal"
picseal_marker = b'\x70\x69\x63\x73\x65\x61\x6C'
# 3. type
pub_marker = b'\x01'
pvt_marker = b'\x02'
# 4. signature is the hash of the image, signed by the private key
# 5. JSON crypto blob data
[ crypto blob format ]
JSON:
{
"format_ver": "50",
"pubkey_alg": "rsa",
"pubkey_size": 4096,
"pubkey_pem": "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnvdAyn5JuiRcoL8s+rAV\nMpoEUioB1NTV97EDG4z/R5pm89v86UkH0xeeB6OS2EacsPHmbIY6oY0IXKA+0EX6\nSZdVSya2vv36fy/CByfHgZsDUxpzMnRZLdYbITBwil7keCTOC4EfnYIMUDsvrx6s\nA+BSEbR1rUkIXMe7NJ2Qssj68lXKMOfhrJ9wUgPLVSTIiDytiX4Wd+yAuo9lUqUk\nxt7FwjEEBV5Nj0yKZp2sJZnqp+pL5dsLsYz9xKNQHonMkGuj+3IthenTkfuXm9a6\nx+Qm3B+6AN4qBd7Uz65tffS2e2OQCzSRVoqEaRUrQKvQcSfJv+w0lh4xoZs41CJE\nc8XmmJeaDqt/zYBQWWYJlvZfpq0oh3mKGmHRtNOnKQmMd+FRJj/5fUvG7WedcHt1\noAkUg1qKu/HBgPNTVN9PWaikM1fA1E8T1koCYN0ecP29Zo8SHwcL6g82ou+fGtae\nSrXW0bFKV1JbF+hF3nBzCw+xDPAXXpUGPTwSXYZa6Gvgfckk4qP17vfFaR9f+hiL\nmW8GUmgfupvbapcG189M+UB9nDUSj3557TJpqItdbH5m4FGNv9tcMRYSwIniVVxw\n+F5FuT7nhd8vC+simwyjlB3hteICya1c7tVo5rav/LBBzHYg9ywPJCdZKUvN3qRE\n4Txbp7DC99x/xZhGck2Cpj8CAwEAAQ==",
"image_sig": "6acda44a9e492ddcc0e6ddadbdbd2cc20fdbb06a9264f36268b03aff921332919edb541d9bcdafa2b958276fb553682e5b67d92a127ec8d5d89b29774db86c50",
"metadata_sig": ""
}