Changeset 82 for trunk/standards
- Timestamp:
- 02/04/08 22:22:28 (4 years ago)
- Location:
- trunk/standards
- Files:
-
- 2 modified
-
TODO (modified) (2 diffs)
-
protocol.txt (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/standards/TODO
r20 r82 7 7 protocol-containers.txt 8 8 ======================= 9 Certificates (Currency, Mints, DSDB) (IS?)10 9 11 10 algorithms.txt … … 16 15 protocol.txt 17 16 ============ 18 Sort out certificate stuff19 17 Define encryption padding 20 Refine protocol to prevent issuers from having to store payment21 Done. Need to add handshake to decide if the mint will store value22 18 Add default transaction_id handling (Both parties agreeing to a transaction_id) 23 Does transaction_id need to expire if it isn't seen for a few hours/days? (since it's a two-party agreement....)24 19 Add hello/versioning/protocol handshaking 25 20 Add generic error message 26 Add way to contact DSDB (Not necessarily IS contact)27 28 21 29 22 -
trunk/standards/protocol.txt
r80 r82 27 27 issuer public master key = base64(pM) 28 28 29 issuer = Hash(pM)29 issuer = base64(hash(pM)) 30 30 base64(sig(sM,hash(content part))) 31 31 } 32 32 33 33 (question: is the "short currency identifier" needed?) 34 (question: "not use after" , "random collision free serial"?)35 (future: add additionial signatures, e.g. from wallet software vendors )34 (question: "not use after") 35 (future: add additionial signatures, e.g. from wallet software vendors (set up in containers already)) 36 36 37 37 * issuer publishes CDD at "currency identifier" URL … … 41 41 42 42 { 43 key identifier = base64( id(pP))43 key identifier = base64(hash(pP)) 44 44 currency identifier = http://opencent.net/OpenCent 45 45 denomination = denomination … … 49 49 public key = base64(pP) 50 50 51 issuer = Hash(pM)51 issuer = base64(hash(pM)) 52 52 base64(sig(sM, hash(content part))) 53 53 } … … 55 55 56 56 Questions: 57 * Time format: YYYYMMDDHHMMSS 20071211144111 or SecondsSinceEpoch or ISO 8601? 58 * id() = sha256()? 59 * CDD? 57 * CDD? (What does this question mean?) 60 58 61 59 * issuer creates DSDB keypair (pD,sD) 62 60 63 61 { 64 key identifier = base64( id(pD))62 key identifier = base64(hash(pD)) 65 63 not_before = TIME(...) 66 64 not_after = TIME(...) … … 68 66 public key = base64(pD) 69 67 70 issuer = Hash(pM)68 issuer = base64(hash(pM)) 71 69 signature = base64(sig(sM, hash(content part))) 72 70 73 signer = Hash(pM)71 signer = base64(hash(pM)) 74 72 signature = base64(sig(sM, hash(content part))) 75 73 } … … 178 176 ElseIf minting is done just-in-time, IS answers 179 177 180 TRANSFER_TOKEN_ACCEPT( transaction_id, message, list_of_si nged_blinds)178 TRANSFER_TOKEN_ACCEPT( transaction_id, message, list_of_signed_blinds) 181 179 182 180 Else IS queues blind to the mint and tells wallet to wait … … 208 206 209 207 (question: what about key expiration while request is in mining queue) 208 (oierw thinks: as long as the key is valid for minting when the request is made, we are good) 210 209 211 210 or passes signed blinds to wallet Bob, must preserve order … … 280 279 - parse blanks for necessary minting key ids 281 280 - start session with authenticated issuer service (IS) (secured and authenticated by transport layer, e.g. SSL) 282 - create transaction id (two-party secret agreement (collision free))283 Possible example with https.284 USE_HTTPS_SESSIONID285 YES|NO286 281 - get all missing minting key certs (MINTING_KEY_FETCH_KEYID) 287 - IS sends key certs or rejects a key id (unknown, outdated) (MINTING_KEY_PASS/FAIL _MINTING_KEY_FAILURE)282 - IS sends key certs or rejects a key id (unknown, outdated) (MINTING_KEY_PASS/FAILURE) 288 283 - lock list of encrypted coin serial numbers at IS (DSDB) 289 LOCK_COIN S_REQUEST( DSDB_key_key_id, transaction_id,290 list( (key_identifier1, encrypted_serial1), ... ) )284 LOCK_COIN_REQUEST( DSDB_key_key_id, transaction_id, 285 list( (key_identifier1, encrypted_serial1), ... ) ) 291 286 292 287 - IS either accepts with locking time or rejects with list of rejected serials + reason (locked, spent) 293 288 If all coins lock: 294 LOCK_COIN S_ACCEPT(transaction_id, lock_expires)289 LOCK_COIN_ACCEPT(transaction_id, lock_expires) 295 290 If some coins cannot lock, no coins are locked. 296 LOCK_COIN S_FAILURE(transaction_id, list( (key_identifier1, encrypted_serial1, "Reason1"), ...))291 LOCK_COIN_FAILURE(transaction_id, list( (key_identifier1, encrypted_serial1, "Reason1"), ...)) 297 292 298 293 Reasons: … … 316 311 317 312 Note: After BLANK_ACCEPT, a BLANK_REJECT(emptylist, "Reason) can be given to abort the transaction until 318 COIN S_SPEND is sent313 COIN_SPEND is sent 319 314 320 315 * Wallet Alice sends coins to Wallet Bob (this time including their clear serial and signature) 321 316 322 COIN S_SPEND( list(coin1, ...) )317 COIN_SPEND( list(coin1, ...) ) 323 318 324 319 * Wallet Bob checks that the coins match the blanks and that signatures are valid … … 326 321 * Wallet Bob accepts transaction or rejects with reason (unknown, invalid) for each rejected coin 327 322 328 COIN S_REJECT( list( (coin1, "Reason1") ) )329 COIN S_REJECT( emptylist, "Reason")330 331 COIN S_ACCEPT323 COIN_REJECT( list( (coin1, "Reason1") ) ) 324 COIN_REJECT( emptylist, "Reason") 325 326 COIN_ACCEPT 332 327 333 328 * Wallet Bob terminates session with Wallet Alice … … 340 335 341 336 * in case of reject in the checking phase delete the blanks, otherwise 342 UNLOCK_COIN S_REQUEST(transaction_id)337 UNLOCK_COIN_REQUEST(transaction_id) 343 338 344 339 * Wallet Bob sends buy request (blanks + coins) … … 361 356 #7 Redeeming Coins 362 357 363 * Wallet locks serials at IS (see above LOCK_COIN S)358 * Wallet locks serials at IS (see above LOCK_COIN) 364 359 365 360 * Wallet sends coins + target to IS [was: REDEEM_COINS_REQUEST]
