mirror of
https://github.com/tlsnotary/circuits.git
synced 2026-01-08 22:37:59 -05:00
initial commit
This commit is contained in:
21
README
Normal file
21
README
Normal file
@@ -0,0 +1,21 @@
|
||||
This repo contains macros to be assembled into circuits for use in TLSNotary's 2PC.
|
||||
The main entrypoints are 6 circuits c1.casm ... c6.casm.
|
||||
Each macro contains a description about what it does.
|
||||
|
||||
To assemble the macros into Bristol Fashion circuits, run:
|
||||
node assemble.js
|
||||
|
||||
|
||||
SOURCES:
|
||||
|
||||
casmbundle.js was created from:
|
||||
git clone https://github.com/wyatt-howe/macro-circuit-assembler
|
||||
cd macro-circuit-assembler/
|
||||
git pull origin pull/3/head
|
||||
# (this PR hasn't been merged at the time of writing)
|
||||
# then comment out line 4 in casm.js --> //const fs = require('fs');
|
||||
browserify --ignore fs --standalone CASM casm.js > casmbundle.js
|
||||
|
||||
adder64.txt --> https://homes.esat.kuleuven.be/~nsmart/MPC/adder64.txt
|
||||
aes-128-reverse.txt --> https://github.com/multiparty/jigg/blob/master/circuits/bristol/aes-128-reverse.txt
|
||||
sha256.txt --> https://homes.esat.kuleuven.be/~nsmart/MPC/sha256.txt
|
||||
380
adder64.txt
Normal file
380
adder64.txt
Normal file
@@ -0,0 +1,380 @@
|
||||
376 504
|
||||
2 64 64
|
||||
1 64
|
||||
|
||||
2 1 63 127 376 XOR
|
||||
2 1 62 126 375 XOR
|
||||
2 1 61 125 374 XOR
|
||||
2 1 60 124 373 XOR
|
||||
2 1 59 123 372 XOR
|
||||
2 1 58 122 371 XOR
|
||||
2 1 57 121 370 XOR
|
||||
2 1 56 120 369 XOR
|
||||
2 1 55 119 368 XOR
|
||||
2 1 54 118 367 XOR
|
||||
2 1 53 117 366 XOR
|
||||
2 1 52 116 365 XOR
|
||||
2 1 51 115 364 XOR
|
||||
2 1 50 114 363 XOR
|
||||
2 1 49 113 362 XOR
|
||||
2 1 48 112 361 XOR
|
||||
2 1 47 111 360 XOR
|
||||
2 1 46 110 359 XOR
|
||||
2 1 45 109 358 XOR
|
||||
2 1 44 108 357 XOR
|
||||
2 1 43 107 356 XOR
|
||||
2 1 42 106 355 XOR
|
||||
2 1 41 105 354 XOR
|
||||
2 1 40 104 353 XOR
|
||||
2 1 39 103 352 XOR
|
||||
2 1 38 102 351 XOR
|
||||
2 1 37 101 350 XOR
|
||||
2 1 36 100 349 XOR
|
||||
2 1 35 99 348 XOR
|
||||
2 1 34 98 347 XOR
|
||||
2 1 33 97 346 XOR
|
||||
2 1 32 96 345 XOR
|
||||
2 1 31 95 344 XOR
|
||||
2 1 30 94 343 XOR
|
||||
2 1 29 93 342 XOR
|
||||
2 1 28 92 341 XOR
|
||||
2 1 27 91 340 XOR
|
||||
2 1 26 90 339 XOR
|
||||
2 1 25 89 338 XOR
|
||||
2 1 24 88 337 XOR
|
||||
2 1 23 87 336 XOR
|
||||
2 1 22 86 335 XOR
|
||||
2 1 21 85 334 XOR
|
||||
2 1 20 84 333 XOR
|
||||
2 1 19 83 332 XOR
|
||||
2 1 18 82 331 XOR
|
||||
2 1 17 81 330 XOR
|
||||
2 1 16 80 329 XOR
|
||||
2 1 15 79 328 XOR
|
||||
2 1 14 78 327 XOR
|
||||
2 1 13 77 326 XOR
|
||||
2 1 12 76 325 XOR
|
||||
2 1 11 75 324 XOR
|
||||
2 1 10 74 323 XOR
|
||||
2 1 9 73 322 XOR
|
||||
2 1 8 72 321 XOR
|
||||
2 1 7 71 320 XOR
|
||||
2 1 6 70 319 XOR
|
||||
2 1 5 69 318 XOR
|
||||
2 1 4 68 317 XOR
|
||||
2 1 3 67 316 XOR
|
||||
2 1 2 66 315 XOR
|
||||
2 1 1 65 314 XOR
|
||||
2 1 0 64 440 XOR
|
||||
2 1 0 64 377 AND
|
||||
2 1 65 377 129 XOR
|
||||
2 1 1 377 128 XOR
|
||||
2 1 128 129 130 AND
|
||||
2 1 130 377 378 XOR
|
||||
2 1 66 378 132 XOR
|
||||
2 1 2 378 131 XOR
|
||||
2 1 131 132 133 AND
|
||||
2 1 133 378 379 XOR
|
||||
2 1 67 379 135 XOR
|
||||
2 1 3 379 134 XOR
|
||||
2 1 134 135 136 AND
|
||||
2 1 136 379 380 XOR
|
||||
2 1 68 380 138 XOR
|
||||
2 1 4 380 137 XOR
|
||||
2 1 137 138 139 AND
|
||||
2 1 139 380 381 XOR
|
||||
2 1 69 381 141 XOR
|
||||
2 1 5 381 140 XOR
|
||||
2 1 140 141 142 AND
|
||||
2 1 142 381 382 XOR
|
||||
2 1 70 382 144 XOR
|
||||
2 1 6 382 143 XOR
|
||||
2 1 143 144 145 AND
|
||||
2 1 145 382 383 XOR
|
||||
2 1 71 383 147 XOR
|
||||
2 1 7 383 146 XOR
|
||||
2 1 146 147 148 AND
|
||||
2 1 148 383 384 XOR
|
||||
2 1 72 384 150 XOR
|
||||
2 1 8 384 149 XOR
|
||||
2 1 149 150 151 AND
|
||||
2 1 151 384 385 XOR
|
||||
2 1 73 385 153 XOR
|
||||
2 1 9 385 152 XOR
|
||||
2 1 152 153 154 AND
|
||||
2 1 154 385 386 XOR
|
||||
2 1 74 386 156 XOR
|
||||
2 1 10 386 155 XOR
|
||||
2 1 155 156 157 AND
|
||||
2 1 157 386 387 XOR
|
||||
2 1 75 387 159 XOR
|
||||
2 1 11 387 158 XOR
|
||||
2 1 158 159 160 AND
|
||||
2 1 160 387 388 XOR
|
||||
2 1 76 388 162 XOR
|
||||
2 1 12 388 161 XOR
|
||||
2 1 161 162 163 AND
|
||||
2 1 163 388 389 XOR
|
||||
2 1 77 389 165 XOR
|
||||
2 1 13 389 164 XOR
|
||||
2 1 164 165 166 AND
|
||||
2 1 166 389 390 XOR
|
||||
2 1 78 390 168 XOR
|
||||
2 1 14 390 167 XOR
|
||||
2 1 167 168 169 AND
|
||||
2 1 169 390 391 XOR
|
||||
2 1 79 391 171 XOR
|
||||
2 1 15 391 170 XOR
|
||||
2 1 170 171 172 AND
|
||||
2 1 172 391 392 XOR
|
||||
2 1 80 392 174 XOR
|
||||
2 1 16 392 173 XOR
|
||||
2 1 173 174 175 AND
|
||||
2 1 175 392 393 XOR
|
||||
2 1 81 393 177 XOR
|
||||
2 1 17 393 176 XOR
|
||||
2 1 176 177 178 AND
|
||||
2 1 178 393 394 XOR
|
||||
2 1 82 394 180 XOR
|
||||
2 1 18 394 179 XOR
|
||||
2 1 179 180 181 AND
|
||||
2 1 181 394 395 XOR
|
||||
2 1 83 395 183 XOR
|
||||
2 1 19 395 182 XOR
|
||||
2 1 182 183 184 AND
|
||||
2 1 184 395 396 XOR
|
||||
2 1 84 396 186 XOR
|
||||
2 1 20 396 185 XOR
|
||||
2 1 185 186 187 AND
|
||||
2 1 187 396 397 XOR
|
||||
2 1 85 397 189 XOR
|
||||
2 1 21 397 188 XOR
|
||||
2 1 188 189 190 AND
|
||||
2 1 190 397 398 XOR
|
||||
2 1 86 398 192 XOR
|
||||
2 1 22 398 191 XOR
|
||||
2 1 191 192 193 AND
|
||||
2 1 193 398 399 XOR
|
||||
2 1 87 399 195 XOR
|
||||
2 1 23 399 194 XOR
|
||||
2 1 194 195 196 AND
|
||||
2 1 196 399 400 XOR
|
||||
2 1 88 400 198 XOR
|
||||
2 1 24 400 197 XOR
|
||||
2 1 197 198 199 AND
|
||||
2 1 199 400 401 XOR
|
||||
2 1 89 401 201 XOR
|
||||
2 1 25 401 200 XOR
|
||||
2 1 200 201 202 AND
|
||||
2 1 202 401 402 XOR
|
||||
2 1 90 402 204 XOR
|
||||
2 1 26 402 203 XOR
|
||||
2 1 203 204 205 AND
|
||||
2 1 205 402 403 XOR
|
||||
2 1 91 403 207 XOR
|
||||
2 1 27 403 206 XOR
|
||||
2 1 206 207 208 AND
|
||||
2 1 208 403 404 XOR
|
||||
2 1 341 404 468 XOR
|
||||
2 1 92 404 210 XOR
|
||||
2 1 28 404 209 XOR
|
||||
2 1 209 210 211 AND
|
||||
2 1 211 404 405 XOR
|
||||
2 1 342 405 469 XOR
|
||||
2 1 340 403 467 XOR
|
||||
2 1 93 405 213 XOR
|
||||
2 1 29 405 212 XOR
|
||||
2 1 212 213 214 AND
|
||||
2 1 214 405 406 XOR
|
||||
2 1 343 406 470 XOR
|
||||
2 1 339 402 466 XOR
|
||||
2 1 94 406 216 XOR
|
||||
2 1 30 406 215 XOR
|
||||
2 1 215 216 217 AND
|
||||
2 1 217 406 407 XOR
|
||||
2 1 338 401 465 XOR
|
||||
2 1 31 407 218 XOR
|
||||
2 1 344 407 471 XOR
|
||||
2 1 337 400 464 XOR
|
||||
2 1 95 407 219 XOR
|
||||
2 1 218 219 220 AND
|
||||
2 1 220 407 408 XOR
|
||||
2 1 345 408 472 XOR
|
||||
2 1 336 399 463 XOR
|
||||
2 1 96 408 222 XOR
|
||||
2 1 32 408 221 XOR
|
||||
2 1 221 222 223 AND
|
||||
2 1 223 408 409 XOR
|
||||
2 1 346 409 473 XOR
|
||||
2 1 335 398 462 XOR
|
||||
2 1 97 409 225 XOR
|
||||
2 1 33 409 224 XOR
|
||||
2 1 224 225 226 AND
|
||||
2 1 226 409 410 XOR
|
||||
2 1 347 410 474 XOR
|
||||
2 1 334 397 461 XOR
|
||||
2 1 98 410 228 XOR
|
||||
2 1 34 410 227 XOR
|
||||
2 1 227 228 229 AND
|
||||
2 1 229 410 411 XOR
|
||||
2 1 333 396 460 XOR
|
||||
2 1 35 411 230 XOR
|
||||
2 1 348 411 475 XOR
|
||||
2 1 332 395 459 XOR
|
||||
2 1 99 411 231 XOR
|
||||
2 1 230 231 232 AND
|
||||
2 1 232 411 412 XOR
|
||||
2 1 349 412 476 XOR
|
||||
2 1 331 394 458 XOR
|
||||
2 1 100 412 234 XOR
|
||||
2 1 36 412 233 XOR
|
||||
2 1 233 234 235 AND
|
||||
2 1 235 412 413 XOR
|
||||
2 1 350 413 477 XOR
|
||||
2 1 330 393 457 XOR
|
||||
2 1 101 413 237 XOR
|
||||
2 1 37 413 236 XOR
|
||||
2 1 236 237 238 AND
|
||||
2 1 238 413 414 XOR
|
||||
2 1 351 414 478 XOR
|
||||
2 1 329 392 456 XOR
|
||||
2 1 102 414 240 XOR
|
||||
2 1 38 414 239 XOR
|
||||
2 1 239 240 241 AND
|
||||
2 1 241 414 415 XOR
|
||||
2 1 328 391 455 XOR
|
||||
2 1 39 415 242 XOR
|
||||
2 1 352 415 479 XOR
|
||||
2 1 327 390 454 XOR
|
||||
2 1 103 415 243 XOR
|
||||
2 1 242 243 244 AND
|
||||
2 1 244 415 416 XOR
|
||||
2 1 353 416 480 XOR
|
||||
2 1 326 389 453 XOR
|
||||
2 1 104 416 246 XOR
|
||||
2 1 40 416 245 XOR
|
||||
2 1 245 246 247 AND
|
||||
2 1 247 416 417 XOR
|
||||
2 1 354 417 481 XOR
|
||||
2 1 325 388 452 XOR
|
||||
2 1 105 417 249 XOR
|
||||
2 1 41 417 248 XOR
|
||||
2 1 248 249 250 AND
|
||||
2 1 250 417 418 XOR
|
||||
2 1 355 418 482 XOR
|
||||
2 1 324 387 451 XOR
|
||||
2 1 106 418 252 XOR
|
||||
2 1 42 418 251 XOR
|
||||
2 1 251 252 253 AND
|
||||
2 1 253 418 419 XOR
|
||||
2 1 323 386 450 XOR
|
||||
2 1 43 419 254 XOR
|
||||
2 1 356 419 483 XOR
|
||||
2 1 322 385 449 XOR
|
||||
2 1 107 419 255 XOR
|
||||
2 1 254 255 256 AND
|
||||
2 1 256 419 420 XOR
|
||||
2 1 357 420 484 XOR
|
||||
2 1 321 384 448 XOR
|
||||
2 1 108 420 258 XOR
|
||||
2 1 44 420 257 XOR
|
||||
2 1 257 258 259 AND
|
||||
2 1 259 420 421 XOR
|
||||
2 1 358 421 485 XOR
|
||||
2 1 320 383 447 XOR
|
||||
2 1 109 421 261 XOR
|
||||
2 1 45 421 260 XOR
|
||||
2 1 260 261 262 AND
|
||||
2 1 262 421 422 XOR
|
||||
2 1 359 422 486 XOR
|
||||
2 1 319 382 446 XOR
|
||||
2 1 110 422 264 XOR
|
||||
2 1 46 422 263 XOR
|
||||
2 1 263 264 265 AND
|
||||
2 1 265 422 423 XOR
|
||||
2 1 318 381 445 XOR
|
||||
2 1 47 423 266 XOR
|
||||
2 1 360 423 487 XOR
|
||||
2 1 317 380 444 XOR
|
||||
2 1 111 423 267 XOR
|
||||
2 1 266 267 268 AND
|
||||
2 1 268 423 424 XOR
|
||||
2 1 361 424 488 XOR
|
||||
2 1 316 379 443 XOR
|
||||
2 1 112 424 270 XOR
|
||||
2 1 48 424 269 XOR
|
||||
2 1 269 270 271 AND
|
||||
2 1 271 424 425 XOR
|
||||
2 1 362 425 489 XOR
|
||||
2 1 315 378 442 XOR
|
||||
2 1 113 425 273 XOR
|
||||
2 1 49 425 272 XOR
|
||||
2 1 272 273 274 AND
|
||||
2 1 274 425 426 XOR
|
||||
2 1 363 426 490 XOR
|
||||
2 1 314 377 441 XOR
|
||||
2 1 114 426 276 XOR
|
||||
2 1 50 426 275 XOR
|
||||
2 1 275 276 277 AND
|
||||
2 1 277 426 427 XOR
|
||||
2 1 115 427 279 XOR
|
||||
2 1 51 427 278 XOR
|
||||
2 1 278 279 280 AND
|
||||
2 1 280 427 428 XOR
|
||||
2 1 116 428 282 XOR
|
||||
2 1 52 428 281 XOR
|
||||
2 1 281 282 283 AND
|
||||
2 1 283 428 429 XOR
|
||||
2 1 117 429 285 XOR
|
||||
2 1 53 429 284 XOR
|
||||
2 1 284 285 286 AND
|
||||
2 1 286 429 430 XOR
|
||||
2 1 118 430 288 XOR
|
||||
2 1 54 430 287 XOR
|
||||
2 1 287 288 289 AND
|
||||
2 1 289 430 431 XOR
|
||||
2 1 119 431 291 XOR
|
||||
2 1 55 431 290 XOR
|
||||
2 1 290 291 292 AND
|
||||
2 1 292 431 432 XOR
|
||||
2 1 120 432 294 XOR
|
||||
2 1 56 432 293 XOR
|
||||
2 1 293 294 295 AND
|
||||
2 1 295 432 433 XOR
|
||||
2 1 370 433 497 XOR
|
||||
2 1 121 433 297 XOR
|
||||
2 1 57 433 296 XOR
|
||||
2 1 296 297 298 AND
|
||||
2 1 298 433 434 XOR
|
||||
2 1 371 434 498 XOR
|
||||
2 1 369 432 496 XOR
|
||||
2 1 122 434 300 XOR
|
||||
2 1 58 434 299 XOR
|
||||
2 1 299 300 301 AND
|
||||
2 1 301 434 435 XOR
|
||||
2 1 372 435 499 XOR
|
||||
2 1 368 431 495 XOR
|
||||
2 1 123 435 303 XOR
|
||||
2 1 59 435 302 XOR
|
||||
2 1 302 303 304 AND
|
||||
2 1 304 435 436 XOR
|
||||
2 1 367 430 494 XOR
|
||||
2 1 60 436 305 XOR
|
||||
2 1 373 436 500 XOR
|
||||
2 1 366 429 493 XOR
|
||||
2 1 124 436 306 XOR
|
||||
2 1 305 306 307 AND
|
||||
2 1 307 436 437 XOR
|
||||
2 1 374 437 501 XOR
|
||||
2 1 365 428 492 XOR
|
||||
2 1 125 437 309 XOR
|
||||
2 1 61 437 308 XOR
|
||||
2 1 308 309 310 AND
|
||||
2 1 310 437 438 XOR
|
||||
2 1 375 438 502 XOR
|
||||
2 1 364 427 491 XOR
|
||||
2 1 126 438 312 XOR
|
||||
2 1 62 438 311 XOR
|
||||
2 1 311 312 313 AND
|
||||
2 1 313 438 439 XOR
|
||||
2 1 376 439 503 XOR
|
||||
36666
aes-128-reverse.txt
Normal file
36666
aes-128-reverse.txt
Normal file
File diff suppressed because it is too large
Load Diff
6
assemble.js
Normal file
6
assemble.js
Normal file
@@ -0,0 +1,6 @@
|
||||
const casm = require('./casmbundle');
|
||||
global.fs = require('fs');
|
||||
|
||||
for (let i=1; i<7; i++){
|
||||
global.fs.writeFileSync('c'+i+'.out', casm.parseAndAssemble('c'+i+'.casm'));
|
||||
}
|
||||
30
c1.casm
Normal file
30
c1.casm
Normal file
@@ -0,0 +1,30 @@
|
||||
# TLS stage 1
|
||||
# Parties input their additive shares of pre-master secret (PMS)
|
||||
# Output sha256(PMS XOR ipad) and sha256(PMS XOR opad) for HMAC
|
||||
|
||||
# The value of fixed inputs is known in the offline phase
|
||||
|
||||
5 2560
|
||||
2 512 512
|
||||
# notary inputs
|
||||
# 256: pms share
|
||||
# fixed
|
||||
# 256: output mask
|
||||
# client inputs
|
||||
# 256: pms share
|
||||
# fixed
|
||||
# 256: output mask
|
||||
|
||||
1 512
|
||||
# all outputs go to the evaluator
|
||||
# 256: outer hash state xor masked by notary
|
||||
# 256: inner hash state xor masked by client
|
||||
|
||||
512 256 [0|>256] [512|>256] [1024|>256] combine_pms_shares.casm
|
||||
|
||||
2 256 0 1 [1280|>256] getSha256InitialState.casm
|
||||
|
||||
512 512 [1024|>256] [1280|>256] [1792|>256] [1536|>256] shaPmsXorPadding.casm
|
||||
|
||||
512 256 [1536|>256] [256|>256] [2048|>256] xor256bits.casm
|
||||
512 256 [1792|>256] [768|>256] [2304|>256] xor256bits.casm
|
||||
62
c2.casm
Normal file
62
c2.casm
Normal file
@@ -0,0 +1,62 @@
|
||||
# TLS stage 2
|
||||
# Compute master secret MS
|
||||
# Output sha256(MS XOR opad) and sha256(MS XOR ipad) for HMAC
|
||||
|
||||
# The value of fixed inputs is known in the offline phase
|
||||
|
||||
14 3730
|
||||
2 512 640
|
||||
# notary inputs
|
||||
# 256: outer hash state
|
||||
# fixed
|
||||
# 256: output mask
|
||||
# client inputs
|
||||
# 256: inner hash state
|
||||
# 128: p2 = hmac.new(secret, a2+seed, hashlib.sha256).digest()
|
||||
# fixed
|
||||
# 256: output mask
|
||||
|
||||
1 512
|
||||
# all outputs go to the evaluator
|
||||
# 256: outer hash state (for MS XOR padding) xor-masked by notary
|
||||
# 256: inner hash state (for MS XOR padding) xor-masked by client
|
||||
|
||||
# pad inner hash digest as the last chunk for sha256
|
||||
|
||||
2 1 0 0 1152 XOR # 0
|
||||
1 1 1152 1153 INV # 1
|
||||
|
||||
# total length of bits in outer sha256: L == 512+256 == 768 should be the last 64 bits
|
||||
# 768 in binary is 0000 0011 0000 0000
|
||||
# to be hashed: 256 bits inner hash digest + 1 + 191 bits of 0 + 48 bits of 0 + 0000 0011 0000 0000
|
||||
# note that inputs start in lsb position
|
||||
|
||||
768 256 [1152*8] 1153 1153 [1152*245] 1153 [512|>256] [0|>256] [1154|>256] sha256.txt
|
||||
|
||||
# master secret == [1154|>256] + [768|>128] == p1+p2 (48 bytes)
|
||||
|
||||
1 8 0 [1410|>8] getIpadByte.casm
|
||||
1 8 0 [1418|>8] getOpadByte.casm
|
||||
|
||||
# xor the remaining 16 bytes of MS () //TODO need xor128bits.casm
|
||||
512 256 [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1152*128] [768|>128] [1426|>256] xor256bits.casm
|
||||
|
||||
# we repeat the padding byte 32 times
|
||||
512 256 [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1410|>8] [1154|>256] [1682|>256] xor256bits.casm
|
||||
|
||||
# xor the remaining 16 bytes of MS () //TODO need xor128bits.casm
|
||||
512 256 [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1152*128] [768|>128] [1938|>256] xor256bits.casm
|
||||
|
||||
#same for opad
|
||||
# we repeat the padding byte 32 times
|
||||
512 256 [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1418|>8] [1154|>256] [2194|>256] xor256bits.casm
|
||||
|
||||
2 256 0 1 [2450|>256] getSha256InitialState.casm
|
||||
|
||||
#-------10 gates at this point
|
||||
|
||||
768 256 [1938|>512] [2450|>256] [2706|>256] sha256.txt #outer
|
||||
768 256 [1426|>512] [2450|>256] [2962|>256] sha256.txt
|
||||
|
||||
512 256 [2706|>256] [256|>256] [3218|>256] xor256bits.casm
|
||||
512 256 [2962|>256] [896|>256] [3474|>256] xor256bits.casm
|
||||
96
c3.casm
Normal file
96
c3.casm
Normal file
@@ -0,0 +1,96 @@
|
||||
# TLS stage 3.
|
||||
# Compute expanded p1 which consists of client_write_key + server_write_key
|
||||
# Compute expanded p2 which consists of client_IV + server_IV
|
||||
# Compute verify_data, ghash H, gctr block, encrypted counter block - needed for Client Finished
|
||||
|
||||
# The value of fixed inputs is known in the offline phase
|
||||
|
||||
24 4930
|
||||
2 832 1568
|
||||
|
||||
# notary inputs
|
||||
# 256: outer hash state
|
||||
# fixed
|
||||
# 128: output mask1 (for swk)
|
||||
# 128: output mask2 (for cwk)
|
||||
# 32: output mask3 (for siv)
|
||||
# 32: output mask4 (for civ)
|
||||
# 128: output mask5 (for H)
|
||||
# 128: output mask6 (for gctr block)
|
||||
|
||||
# client inputs
|
||||
# 256: inner hash state for p1_expanded_keys
|
||||
# 256: inner hash state for p2_expanded_keys
|
||||
# 256: inner hash state for verify_data
|
||||
# fixed
|
||||
# 128: output mask1 (for swk)
|
||||
# 128: output mask2 (for cwk)
|
||||
# 32: output mask3 (for siv)
|
||||
# 32: output mask4 (for civ)
|
||||
# 128: output mask5 (for H)
|
||||
# 128: output mask6 (for gctr block)
|
||||
# 128: output mask7 (for encrypted counter)
|
||||
# 96 : output mask8 (for verify_data)
|
||||
|
||||
1 800
|
||||
|
||||
# all outputs go to the evaluator
|
||||
# 128: server_write_key xor-masked twice (by mask1)
|
||||
# 128: client_write_key xor-masked twice (by mask2)
|
||||
# 32 : server IV xor-masked twice (by mask3)
|
||||
# 32 : client IV xor-masked twice (by mask4)
|
||||
# 128: H xor-masked twice (by mask5)
|
||||
# 128: gctr block for client_finished xor-masked twice (by mask6)
|
||||
# 128: encrypted counter block for cf xor-masked by client's mask7
|
||||
# 96 : verify_data xor-masked by client's mask8
|
||||
|
||||
2 1 0 0 2400 XOR # 0
|
||||
1 1 2400 2401 INV # 1
|
||||
|
||||
# pad outer hash digest as the last chunk of sha256
|
||||
# total length of bits in outer sha256: L == 512+256 ==768 should be the last 64 bits
|
||||
# 768 in binary is 0000 0011 0000 0000
|
||||
# to be hashed: 256 bits inner hash digest + 1 + 191 bits of 0 + 48 bits of 0 + 0000 0011 0000 0000
|
||||
|
||||
# the result is p1:
|
||||
768 256 [2400*8] 2401 2401 [2400*245] 2401 [832|>256] [0|>256] [2402|>256] sha256.txt
|
||||
# the result is p2 (client IV is the top-most 32 bits):
|
||||
768 256 [2400*8] 2401 2401 [2400*245] 2401 [1088|>256] [0|>256] [2658|>256] sha256.txt
|
||||
# the result is p1 for client_finished (verify_data is the topmost 96 bits):
|
||||
768 256 [2400*8] 2401 2401 [2400*245] 2401 [1344|>256] [0|>256] [2914|>256] sha256.txt
|
||||
|
||||
# get encrypted zero - gcm H
|
||||
256 128 [2530|>128] [2400*128] [3170|>128] aes-128-reverse.txt
|
||||
|
||||
# gctr block for client_finished
|
||||
# to be encrypted: 4-byte client_write_IV + 8-byte nonce == 1 + 4-byte block counter value == 1
|
||||
256 128 [2530|>128] 2401 [2400*31] 2401 [2400*63] [2882|>32] [3298|>128] aes-128-reverse.txt
|
||||
|
||||
# encrypted counter block
|
||||
# to be encrypted: 4-byte client_write_IV + 8-byte nonce == 1 + 4-byte block counter value == 2
|
||||
# note that lsb goes first
|
||||
256 128 [2530|>128] 2400 2401 [2400*30] 2401 [2400*63] [2882|>32] [3426|>128] aes-128-reverse.txt
|
||||
|
||||
|
||||
#prepare all outputs
|
||||
|
||||
# xor swk/cwk/siv/civ/H/gctr with notary's masks
|
||||
256 128 [2402|>128] [256|>128] [3554|>128] xor128bits.casm
|
||||
256 128 [2530|>128] [384|>128] [3682|>128] xor128bits.casm
|
||||
64 32 [2850|>32] [512|>32] [3810|>32] xor32bits.casm
|
||||
64 32 [2882|>32] [544|>32] [3842|>32] xor32bits.casm
|
||||
256 128 [3170|>128] [576|>128] [3874|>128] xor128bits.casm
|
||||
256 128 [3298|>128] [704|>128] [4002|>128] xor128bits.casm
|
||||
|
||||
# xor the result with client's masks
|
||||
256 128 [3554|>128] [1600|>128] [4130|>128] xor128bits.casm
|
||||
256 128 [3682|>128] [1728|>128] [4258|>128] xor128bits.casm
|
||||
64 32 [3810|>32] [1856|>32] [4386|>32] xor32bits.casm
|
||||
64 32 [3842|>32] [1888|>32] [4418|>32] xor32bits.casm
|
||||
256 128 [3874|>128] [1920|>128] [4450|>128] xor128bits.casm
|
||||
256 128 [4002|>128] [2048|>128] [4578|>128] xor128bits.casm
|
||||
|
||||
256 128 [3426|>128] [2176|>128] [4706|>128] xor128bits.casm
|
||||
64 32 [3074|>32] [2304|>32] [4834|>32] xor32bits.casm
|
||||
64 32 [3106|>32] [2336|>32] [4866|>32] xor32bits.casm
|
||||
64 32 [3138|>32] [2368|>32] [4898|>32] xor32bits.casm
|
||||
72
c4.casm
Normal file
72
c4.casm
Normal file
@@ -0,0 +1,72 @@
|
||||
# TLS stage 4
|
||||
# Compute ghash H, gctr block, encrypted counter block, verify_data - needed for Server Finished
|
||||
|
||||
# The value of fixed inputs is known in the offline phase
|
||||
|
||||
16 3170
|
||||
2 672 960
|
||||
|
||||
# notary inputs
|
||||
# 256: outer hash state for p1
|
||||
# fixed
|
||||
# 128: mask to unmask swk
|
||||
# 32 : mask to unmask swiv
|
||||
# 128: mask1 for H^1
|
||||
# 128: mask2 for gctr block
|
||||
|
||||
# client inputs
|
||||
# 256: inner hash state for p1
|
||||
# 128: swk masked by notary
|
||||
# 32: siv masked by notary
|
||||
# 64: server_finished nonce
|
||||
# fixed
|
||||
# 128: mask1 for H^1
|
||||
# 128: mask2 for gctr block
|
||||
# 128: mask3 for enc counter
|
||||
# 96 : mask4 for verify_data
|
||||
|
||||
1 480
|
||||
|
||||
# all outputs go to the evaluator
|
||||
# 128: H^1 masked twice (by mask1)
|
||||
# 128: gctr block masked twice (by mask2)
|
||||
# 128: enc counter masked by client
|
||||
# 96 : server_verify masked by client
|
||||
|
||||
2 1 0 0 1632 XOR # 0
|
||||
1 1 1632 1633 INV # 1
|
||||
|
||||
# pad outer hash digest as the last chunk of sha256
|
||||
# total length of bits in outer sha256: L == 512+256 ==768 should be the last 64 bits
|
||||
# 768 in binary is 0000 0011 0000 0000
|
||||
# to be hashed: 256 bits inner hash digest + 1 + 191 bits of 0 + 48 bits of 0 + 0000 0011 0000 0000
|
||||
# the 96 upperremost bits of the result is verify_data
|
||||
768 256 [1632*8] 1633 1633 [1632*245] 1633 [672|>256] [0|>256] [1634|>256] sha256.txt
|
||||
|
||||
#unmask swk
|
||||
256 128 [256|>128] [928|>128] [1890|>128] xor128bits.casm
|
||||
|
||||
#unmask siv
|
||||
64 32 [384|>32] [1056|>32] [2018|>32] xor32bits.casm
|
||||
|
||||
# get encrypted zero - gcm H
|
||||
256 128 [1890|>128] [1632*128] [2050|>128] aes-128-reverse.txt
|
||||
|
||||
# gctr block = server_write_IV + server_finished nonce + [0*31] + 1
|
||||
256 128 [1890|>128] 1633 [1632*31] [1088|>64] [2018|>32] [2178|>128] aes-128-reverse.txt
|
||||
|
||||
# encrypt counter = server_write_IV + server_finished nonce + 2 (4 bytes)
|
||||
256 128 [1890|>128] 1632 1633 [1632*30] [1088|>64] [2018|>32] [2306|>128] aes-128-reverse.txt
|
||||
|
||||
# apply notary's mask on outputs
|
||||
256 128 [2050|>128] [416|>128] [2434|>128] xor128bits.casm
|
||||
256 128 [2178|>128] [544|>128] [2562|>128] xor128bits.casm
|
||||
|
||||
# apply clients mask on outputs
|
||||
256 128 [2434|>128] [1152|>128] [2690|>128] xor128bits.casm
|
||||
256 128 [2562|>128] [1280|>128] [2818|>128] xor128bits.casm
|
||||
|
||||
256 128 [2306|>128] [1408|>128] [2946|>128] xor128bits.casm
|
||||
64 32 [1794|>32] [1536|>32] [3074|>32] xor32bits.casm
|
||||
64 32 [1826|>32] [1568|>32] [3106|>32] xor32bits.casm
|
||||
64 32 [1858|>32] [1600|>32] [3138|>32] xor32bits.casm
|
||||
37
c5.casm
Normal file
37
c5.casm
Normal file
@@ -0,0 +1,37 @@
|
||||
# AES-ECB-encrypt one block
|
||||
# (AES-GCM first AES-ECB-encrypts a counter block and then xors the result with the plaintext
|
||||
# to get the ciphertext)
|
||||
|
||||
# The value of fixed inputs is known in the offline phase
|
||||
|
||||
5 885
|
||||
2 160 308
|
||||
|
||||
# notary inputs
|
||||
# fixed
|
||||
# 128: mask to unmask client write key
|
||||
# 32 : mask to unmask client write IV
|
||||
# client inputs
|
||||
# 128: client write key masked by notary
|
||||
# 32 : client write IV masked by notary
|
||||
# fixed
|
||||
# 128: output mask
|
||||
# 10: nonce
|
||||
# 10: counter (max block counter is 1023)
|
||||
|
||||
1 128
|
||||
# all outputs go to the evaluator
|
||||
# 128: encrypted counter block xor-masked by client
|
||||
|
||||
2 1 0 0 468 XOR # 0
|
||||
|
||||
# unmask client_write_key
|
||||
256 128 [0|>128] [160|>128] [469|>128] xor128bits.casm
|
||||
|
||||
# unmask client_write_IV
|
||||
64 32 [128|>32] [288|>32] [597|>32] xor32bits.casm
|
||||
|
||||
# encrypt client_write_IV + nonce (8 bytes) + counter (4 bytes)
|
||||
256 128 [469|>128] [458|>10] [468*22] [448|>10] [468*54] [597|>32] [629|>128] aes-128-reverse.txt
|
||||
|
||||
256 128 [629|>128] [320|>128] [757|>128] xor128bits.casm
|
||||
42
c6.casm
Normal file
42
c6.casm
Normal file
@@ -0,0 +1,42 @@
|
||||
# AES-ECB encrypt one block to produce gctr block
|
||||
# exactly the same as c5.casm except here the counter is fixed at 1
|
||||
|
||||
# The value of fixed inputs is known in the offline phase
|
||||
|
||||
7 1138
|
||||
2 288 304
|
||||
|
||||
# notary inputs
|
||||
# fixed
|
||||
# 128: mask to unmask client write key
|
||||
# 32 : mask to unmask client write IV
|
||||
# 128: output mask
|
||||
# client inputs
|
||||
# 128: client write key masked by notary
|
||||
# 32 : client write IV masked by notary
|
||||
# fixed
|
||||
# 128: output mask
|
||||
# 16 : nonce
|
||||
|
||||
1 128
|
||||
# all outputs go to the evaluator:
|
||||
# 128: gctr block masked twice
|
||||
|
||||
2 1 0 0 592 XOR # 0
|
||||
1 1 592 593 INV # 1
|
||||
|
||||
# unmask client_write_key
|
||||
256 128 [0|>128] [288|>128] [594|>128] xor128bits.casm
|
||||
|
||||
# unmask client_write_IV
|
||||
64 32 [128|>32] [416|>32] [722|>32] xor32bits.casm
|
||||
|
||||
# encrypt client_write_IV + nonce (8 bytes) + counter (4 bytes) == 1
|
||||
# (counter is fixed at 1 for gctr blocks)
|
||||
256 128 [594|>128] 593 [592*31] [576|>16] [592*48] [722|>32] [754|>128] aes-128-reverse.txt
|
||||
|
||||
# mask by notary
|
||||
256 128 [754|>128] [160|>128] [882|>128] xor128bits.casm
|
||||
|
||||
# mask by client
|
||||
256 128 [882|>128] [448|>128] [1010|>128] xor128bits.casm
|
||||
1012
casmbundle.js
Normal file
1012
casmbundle.js
Normal file
File diff suppressed because it is too large
Load Diff
107
combine_pms_shares.casm
Normal file
107
combine_pms_shares.casm
Normal file
@@ -0,0 +1,107 @@
|
||||
# This circuit sums 2 256-bit values and (if needed) reduces the sum mod P-256 prime
|
||||
# ideally, we would need a proper circuit for 256-bit addition
|
||||
# since we only have a 64-bit circuit, we work around by summing chunks
|
||||
# (and waste ~500 AND gates in the process :( )
|
||||
|
||||
24 1348
|
||||
2 256 256
|
||||
1 256
|
||||
|
||||
# the map of wires
|
||||
# 0|>512 inputs
|
||||
# 512: zero bit
|
||||
# 513: carry bit
|
||||
# 514|>257 sum of pms shares
|
||||
# 771|>64 temp storage for chunk additions
|
||||
# 835 "is less than" bit
|
||||
# 836|>256 prime's "one's complement"
|
||||
# 1092|>256 outputs
|
||||
|
||||
2 1 0 0 512 XOR
|
||||
|
||||
# add 1st batch of 63-bit summands
|
||||
128 64 [0|>63] 512 [256|>63] 512 [514|>63] 513 adder64.txt
|
||||
|
||||
# add the carry bit to one of the 2nd summands (pad the carry to 64 bits)
|
||||
128 64 [63|>63] 512 513 [512*63] [771|>64] adder64.txt
|
||||
|
||||
# add 2nd batch of summands
|
||||
128 64 [771|>64] [319|>63] 512 [577|>63] 513 adder64.txt
|
||||
|
||||
# carry bit + 3rd batch summand
|
||||
128 64 [126|>63] 512 513 [512*63] [771|>64] adder64.txt
|
||||
|
||||
# add 3rd batch of summands
|
||||
128 64 [771|>64] [382|>63] 512 [640|>63] 513 adder64.txt
|
||||
|
||||
# carry bit + 4th batch summand
|
||||
128 64 [189|>63] 512 513 [512*63] [771|>64] adder64.txt
|
||||
|
||||
# add 4th batch of summands
|
||||
128 64 [771|>64] [445|>63] 512 [703|>63] 513 adder64.txt
|
||||
|
||||
# one last batch of only 4 bits left
|
||||
#carry bit + 5th batch summand
|
||||
128 64 [252|>4] [512*60] 513 [512*63] [771|>64] adder64.txt
|
||||
|
||||
# add 5th batch of summands
|
||||
# only 5 bits of output go to the sum, the rest is discarded by assigning to some unused wires
|
||||
128 64 [771|>64] [508|>4] [512*60] [766|>5] [836|>59] adder64.txt
|
||||
|
||||
# --------------- 10 gates at this point
|
||||
|
||||
# temporarily store the value in outputs section
|
||||
2 256 0 1 [1092|>256] getP256prime.casm
|
||||
|
||||
# check if prime is less than sum of shares
|
||||
# we only compare 32 msb (ideally we'd need a 256-bit comparing circuit)
|
||||
# we are comparing 256bits vs 257bits, so adding a 0 bit to prime's msb
|
||||
64 1 [1317|>31] 512 [739|>32] 835 compare-lt-32-bit-unsigned-old.txt
|
||||
|
||||
# temporarily store the value in outputs section
|
||||
2 256 0 1 [1092|>256] getP256primeOnesComplement.casm
|
||||
|
||||
# if sum of shares < prime, then we subtract 0, otherwise subtract prime
|
||||
257 256 [1092|>256] 835 [836|>256] mult256by1.casm
|
||||
|
||||
# we subtract using the "one's complement" method:
|
||||
# we add chunks of 63 bits like earlier to arrive at a 257-bit sum
|
||||
# (since we already know that minuend > subtrahend, the leading bit of the sum will always be one)
|
||||
# then drop the leading 1 of the sum and add 1 to the sum
|
||||
|
||||
# add 1 from "one's complement" method to lsb of one of the batch1 summands
|
||||
# note that if sum of shares < prime, we add 0 instead of 1
|
||||
128 64 [514|>63] 512 835 [512*63] [771|>64] adder64.txt
|
||||
|
||||
# batch 1 add
|
||||
128 64 [771|>64] [836|>63] 512 [1092|>63] 513 adder64.txt
|
||||
|
||||
# add the carry bit to one of the 2nd summands (pad the carry to 64 bits)
|
||||
128 64 [577|>63] 512 513 [512*63] [771|>64] adder64.txt
|
||||
|
||||
# add the 2nd batch of summands
|
||||
128 64 [771|>64] [899|>63] 512 [1155|>63] 513 adder64.txt
|
||||
|
||||
# carry bit + 3rd batch summand
|
||||
128 64 [640|>63] 512 513 [512*63] [771|>64] adder64.txt
|
||||
|
||||
# add 3rd batch of summands
|
||||
128 64 [771|>64] [962|>63] 512 [1218|>63] 513 adder64.txt
|
||||
|
||||
# -------------------20 gates at this point
|
||||
|
||||
# carry bit + 4th batch summand
|
||||
128 64 [703|>63] 512 513 [512*63] [771|>64] adder64.txt
|
||||
|
||||
# add 4th batch of summands
|
||||
128 64 [771|>64] [1025|>63] 512 [1281|>63] 513 adder64.txt
|
||||
|
||||
# one last batch of only 4 bits left
|
||||
# carry bit + 5th batch summand
|
||||
128 64 [766|>5] [512*59] 513 [512*63] [771|>64] adder64.txt
|
||||
|
||||
# add 5th batch of summands
|
||||
# only 4 bits of output go to the sum
|
||||
# (the 5th bit is discarded because of the "one's complement" method),
|
||||
# the rest is discarded by assigning it to some unused wires
|
||||
128 64 [771|>64] [1088|>4] [512*60] [1344|>4] [836|>60] adder64.txt
|
||||
303
compare-lt-32-bit-unsigned-old.txt
Normal file
303
compare-lt-32-bit-unsigned-old.txt
Normal file
@@ -0,0 +1,303 @@
|
||||
300 364
|
||||
2 32 32
|
||||
1 1
|
||||
1 1 59 341 INV
|
||||
1 1 17 359 INV
|
||||
1 1 28 349 INV
|
||||
1 1 16 321 INV
|
||||
1 1 49 360 INV
|
||||
1 1 51 355 INV
|
||||
1 1 14 362 INV
|
||||
1 1 23 330 INV
|
||||
1 1 1 358 INV
|
||||
1 1 25 356 INV
|
||||
1 1 46 226 INV
|
||||
1 1 29 346 INV
|
||||
1 1 40 261 INV
|
||||
1 1 31 347 INV
|
||||
1 1 34 342 INV
|
||||
1 1 11 343 INV
|
||||
1 1 30 333 INV
|
||||
1 1 63 326 INV
|
||||
1 1 2 334 INV
|
||||
1 1 42 241 INV
|
||||
1 1 58 246 INV
|
||||
1 1 36 202 INV
|
||||
1 1 15 323 INV
|
||||
1 1 33 322 INV
|
||||
1 1 7 357 INV
|
||||
1 1 9 354 INV
|
||||
1 1 12 340 INV
|
||||
1 1 22 328 INV
|
||||
1 1 55 345 INV
|
||||
1 1 13 324 INV
|
||||
1 1 52 238 INV
|
||||
1 1 48 250 INV
|
||||
1 1 44 167 INV
|
||||
1 1 10 350 INV
|
||||
1 1 5 337 INV
|
||||
1 1 54 253 INV
|
||||
1 1 43 352 INV
|
||||
1 1 19 351 INV
|
||||
1 1 37 200 INV
|
||||
1 1 18 325 INV
|
||||
1 1 38 248 INV
|
||||
1 1 62 222 INV
|
||||
1 1 61 339 INV
|
||||
1 1 57 204 INV
|
||||
1 1 60 224 INV
|
||||
1 1 6 353 INV
|
||||
1 1 21 338 INV
|
||||
1 1 20 344 INV
|
||||
1 1 56 198 INV
|
||||
1 1 45 206 INV
|
||||
1 1 26 336 INV
|
||||
1 1 3 332 INV
|
||||
1 1 27 361 INV
|
||||
1 1 47 335 INV
|
||||
1 1 50 243 INV
|
||||
1 1 41 348 INV
|
||||
1 1 0 275 INV
|
||||
1 1 35 329 INV
|
||||
1 1 53 331 INV
|
||||
1 1 39 327 INV
|
||||
2 1 321 48 280 AND
|
||||
2 1 322 1 281 AND
|
||||
2 1 323 47 283 AND
|
||||
2 1 324 45 285 AND
|
||||
2 1 325 50 307 AND
|
||||
2 1 326 31 316 AND
|
||||
2 1 327 7 308 AND
|
||||
2 1 328 54 282 AND
|
||||
2 1 329 3 314 AND
|
||||
2 1 330 55 320 AND
|
||||
2 1 331 21 284 AND
|
||||
2 1 332 35 319 AND
|
||||
2 1 333 62 287 AND
|
||||
2 1 334 34 318 AND
|
||||
2 1 335 15 288 AND
|
||||
2 1 336 58 289 AND
|
||||
2 1 337 37 290 AND
|
||||
2 1 338 53 291 AND
|
||||
2 1 339 29 292 AND
|
||||
2 1 340 44 293 AND
|
||||
2 1 341 27 294 AND
|
||||
2 1 342 2 295 AND
|
||||
2 1 343 43 296 AND
|
||||
2 1 344 52 297 AND
|
||||
2 1 345 23 313 AND
|
||||
2 1 346 61 298 AND
|
||||
2 1 347 63 302 AND
|
||||
2 1 348 9 230 AND
|
||||
2 1 349 60 299 AND
|
||||
2 1 350 42 300 AND
|
||||
2 1 351 51 301 AND
|
||||
2 1 352 11 303 AND
|
||||
2 1 353 38 312 AND
|
||||
2 1 354 41 304 AND
|
||||
2 1 355 19 305 AND
|
||||
2 1 356 57 306 AND
|
||||
2 1 357 39 309 AND
|
||||
2 1 358 33 310 AND
|
||||
2 1 359 49 311 AND
|
||||
2 1 360 17 315 AND
|
||||
2 1 361 59 317 AND
|
||||
2 1 362 46 286 AND
|
||||
1 1 280 78 INV
|
||||
1 1 281 274 INV
|
||||
1 1 282 277 INV
|
||||
1 1 283 278 INV
|
||||
1 1 284 188 INV
|
||||
1 1 285 239 INV
|
||||
1 1 286 279 INV
|
||||
1 1 287 269 INV
|
||||
1 1 288 139 INV
|
||||
1 1 289 255 INV
|
||||
1 1 290 251 INV
|
||||
1 1 291 256 INV
|
||||
1 1 292 186 INV
|
||||
1 1 293 86 INV
|
||||
1 1 294 141 INV
|
||||
1 1 295 271 INV
|
||||
1 1 296 258 INV
|
||||
1 1 297 257 INV
|
||||
1 1 298 262 INV
|
||||
1 1 299 263 INV
|
||||
1 1 300 259 INV
|
||||
1 1 301 264 INV
|
||||
1 1 302 268 INV
|
||||
1 1 303 157 INV
|
||||
1 1 304 260 INV
|
||||
1 1 305 128 INV
|
||||
1 1 306 244 INV
|
||||
1 1 307 265 INV
|
||||
1 1 308 180 INV
|
||||
1 1 309 266 INV
|
||||
1 1 310 272 INV
|
||||
1 1 311 74 INV
|
||||
1 1 312 267 INV
|
||||
1 1 313 184 INV
|
||||
1 1 314 270 INV
|
||||
1 1 315 182 INV
|
||||
1 1 316 130 INV
|
||||
1 1 317 254 INV
|
||||
1 1 318 273 INV
|
||||
1 1 319 132 INV
|
||||
1 1 320 276 INV
|
||||
2 1 254 255 235 AND
|
||||
2 1 256 257 227 AND
|
||||
2 1 258 259 229 AND
|
||||
2 1 260 261 231 AND
|
||||
2 1 262 263 228 AND
|
||||
2 1 264 265 76 AND
|
||||
2 1 266 267 233 AND
|
||||
2 1 268 269 148 AND
|
||||
2 1 270 271 146 AND
|
||||
2 1 272 273 191 AND
|
||||
2 1 274 275 234 AND
|
||||
2 1 276 277 150 AND
|
||||
2 1 278 279 236 AND
|
||||
2 1 256 20 237 AND
|
||||
2 1 258 10 240 AND
|
||||
2 1 264 18 242 AND
|
||||
2 1 260 8 232 AND
|
||||
2 1 266 6 247 AND
|
||||
2 1 74 16 249 AND
|
||||
2 1 268 30 221 AND
|
||||
2 1 262 28 223 AND
|
||||
2 1 276 22 252 AND
|
||||
2 1 254 26 245 AND
|
||||
2 1 278 14 225 AND
|
||||
2 1 221 222 208 AND
|
||||
2 1 223 224 209 AND
|
||||
2 1 225 226 210 AND
|
||||
2 1 150 227 72 AND
|
||||
2 1 148 228 113 AND
|
||||
2 1 229 230 211 AND
|
||||
2 1 229 231 207 AND
|
||||
2 1 229 232 212 AND
|
||||
2 1 233 5 199 AND
|
||||
2 1 234 32 213 AND
|
||||
2 1 235 25 203 AND
|
||||
2 1 236 13 205 AND
|
||||
2 1 237 238 214 AND
|
||||
2 1 236 239 84 AND
|
||||
2 1 240 241 215 AND
|
||||
2 1 242 243 216 AND
|
||||
2 1 235 244 197 AND
|
||||
2 1 245 246 217 AND
|
||||
2 1 247 248 218 AND
|
||||
2 1 249 250 219 AND
|
||||
2 1 233 251 201 AND
|
||||
2 1 252 253 220 AND
|
||||
2 1 197 198 168 AND
|
||||
2 1 199 200 189 AND
|
||||
2 1 201 202 169 AND
|
||||
2 1 203 204 192 AND
|
||||
2 1 205 206 193 AND
|
||||
2 1 84 12 166 AND
|
||||
2 1 207 8 194 AND
|
||||
2 1 197 24 195 AND
|
||||
2 1 201 4 196 AND
|
||||
1 1 208 119 INV
|
||||
1 1 209 185 INV
|
||||
1 1 210 165 INV
|
||||
1 1 211 175 INV
|
||||
1 1 207 177 INV
|
||||
1 1 212 178 INV
|
||||
1 1 213 190 INV
|
||||
1 1 214 187 INV
|
||||
1 1 215 176 INV
|
||||
1 1 216 116 INV
|
||||
1 1 217 159 INV
|
||||
1 1 218 179 INV
|
||||
1 1 219 181 INV
|
||||
1 1 220 183 INV
|
||||
2 1 166 167 153 AND
|
||||
2 1 168 24 154 AND
|
||||
2 1 169 4 155 AND
|
||||
2 1 175 176 143 AND
|
||||
2 1 177 178 170 AND
|
||||
2 1 179 180 102 AND
|
||||
2 1 181 182 171 AND
|
||||
2 1 183 184 99 AND
|
||||
2 1 185 186 172 AND
|
||||
2 1 187 188 173 AND
|
||||
1 1 168 160 INV
|
||||
1 1 189 107 INV
|
||||
1 1 169 162 INV
|
||||
2 1 190 191 174 AND
|
||||
1 1 192 158 INV
|
||||
1 1 193 164 INV
|
||||
1 1 194 156 INV
|
||||
1 1 195 161 INV
|
||||
1 1 196 163 INV
|
||||
1 1 153 138 INV
|
||||
1 1 154 140 INV
|
||||
1 1 155 111 INV
|
||||
2 1 156 157 142 AND
|
||||
2 1 158 159 124 AND
|
||||
2 1 160 161 151 AND
|
||||
2 1 162 163 152 AND
|
||||
2 1 164 165 126 AND
|
||||
1 1 170 96 INV
|
||||
1 1 171 144 INV
|
||||
1 1 172 147 INV
|
||||
1 1 173 149 INV
|
||||
1 1 174 145 INV
|
||||
2 1 138 139 125 AND
|
||||
2 1 140 141 123 AND
|
||||
2 1 142 143 91 AND
|
||||
2 1 144 76 134 AND
|
||||
2 1 145 146 135 AND
|
||||
2 1 147 148 136 AND
|
||||
2 1 149 150 137 AND
|
||||
1 1 151 133 INV
|
||||
1 1 152 131 INV
|
||||
2 1 123 124 122 AND
|
||||
2 1 125 126 81 AND
|
||||
2 1 131 132 120 AND
|
||||
2 1 133 113 70 AND
|
||||
1 1 134 127 INV
|
||||
1 1 135 121 INV
|
||||
1 1 136 129 INV
|
||||
1 1 137 104 INV
|
||||
2 1 120 121 117 AND
|
||||
1 1 122 112 INV
|
||||
2 1 127 128 115 AND
|
||||
2 1 129 130 118 AND
|
||||
2 1 112 113 109 AND
|
||||
2 1 115 116 114 AND
|
||||
1 1 117 110 INV
|
||||
2 1 118 119 67 AND
|
||||
1 1 109 88 INV
|
||||
2 1 110 111 106 AND
|
||||
1 1 114 108 INV
|
||||
2 1 106 107 101 AND
|
||||
2 1 108 72 105 AND
|
||||
2 1 101 102 100 AND
|
||||
1 1 105 103 INV
|
||||
1 1 100 95 INV
|
||||
2 1 103 104 98 AND
|
||||
2 1 95 96 94 AND
|
||||
2 1 98 99 97 AND
|
||||
1 1 94 90 INV
|
||||
1 1 97 93 INV
|
||||
2 1 90 91 89 AND
|
||||
2 1 93 70 92 AND
|
||||
1 1 89 85 INV
|
||||
1 1 92 87 INV
|
||||
2 1 85 86 83 AND
|
||||
2 1 87 88 65 AND
|
||||
2 1 83 84 82 AND
|
||||
1 1 82 80 INV
|
||||
2 1 80 81 79 AND
|
||||
1 1 79 77 INV
|
||||
2 1 77 78 75 AND
|
||||
2 1 75 76 73 AND
|
||||
2 1 73 74 71 AND
|
||||
2 1 71 72 69 AND
|
||||
2 1 69 70 68 AND
|
||||
1 1 68 66 INV
|
||||
2 1 66 67 64 AND
|
||||
2 1 64 65 363 AND
|
||||
20
getIpadByte.casm
Normal file
20
getIpadByte.casm
Normal file
@@ -0,0 +1,20 @@
|
||||
#return 0x36 == 0011 0110
|
||||
|
||||
10 11
|
||||
1 1 #input can be any random bit
|
||||
1 8
|
||||
|
||||
2 1 0 0 1 XOR # 0
|
||||
1 1 1 2 INV # 1
|
||||
|
||||
# We use INV to set bits
|
||||
# output's first wire is lsb
|
||||
|
||||
1 1 2 3 INV
|
||||
1 1 1 4 INV
|
||||
1 1 1 5 INV
|
||||
1 1 2 6 INV
|
||||
1 1 1 7 INV
|
||||
1 1 1 8 INV
|
||||
1 1 2 9 INV
|
||||
1 1 2 10 INV
|
||||
20
getOpadByte.casm
Normal file
20
getOpadByte.casm
Normal file
@@ -0,0 +1,20 @@
|
||||
#return 0x5c == 0101 1100
|
||||
|
||||
10 11
|
||||
1 1 #input can be any random bit
|
||||
1 8
|
||||
|
||||
2 1 0 0 1 XOR # 0
|
||||
1 1 1 2 INV # 1
|
||||
|
||||
# we use INV to set bits
|
||||
# output's first wire is lsb
|
||||
|
||||
1 1 2 3 INV
|
||||
1 1 2 4 INV
|
||||
1 1 1 5 INV
|
||||
1 1 1 6 INV
|
||||
1 1 1 7 INV
|
||||
1 1 2 8 INV
|
||||
1 1 1 9 INV
|
||||
1 1 2 10 INV
|
||||
282
getP256prime.casm
Normal file
282
getP256prime.casm
Normal file
@@ -0,0 +1,282 @@
|
||||
# return NIST P-256 prime (2**256 - 2**224 + 2**192 + 2**96 - 1)
|
||||
|
||||
# prime's bits broken down for readability:
|
||||
# 11111111111111111111111111111111
|
||||
# 0000000000000000000000000000000
|
||||
# 1
|
||||
# 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
# 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
||||
|
||||
|
||||
260 262
|
||||
2 1 1 #inputs can be any random bits
|
||||
1 256
|
||||
|
||||
2 1 0 1 2 XOR
|
||||
2 1 0 1 3 XOR
|
||||
2 1 2 3 4 XOR # XORing 2 equal bits gives us a zero
|
||||
1 1 4 5 INV # wire 5 is 1
|
||||
|
||||
# jigg doesnt support EQ operator, that's why we use INV to set bits
|
||||
# outputs first wire is lsb
|
||||
|
||||
1 1 4 6 INV
|
||||
1 1 4 7 INV
|
||||
1 1 4 8 INV
|
||||
1 1 4 9 INV
|
||||
1 1 4 10 INV
|
||||
1 1 4 11 INV
|
||||
1 1 4 12 INV
|
||||
1 1 4 13 INV
|
||||
1 1 4 14 INV
|
||||
1 1 4 15 INV
|
||||
1 1 4 16 INV
|
||||
1 1 4 17 INV
|
||||
1 1 4 18 INV
|
||||
1 1 4 19 INV
|
||||
1 1 4 20 INV
|
||||
1 1 4 21 INV
|
||||
1 1 4 22 INV
|
||||
1 1 4 23 INV
|
||||
1 1 4 24 INV
|
||||
1 1 4 25 INV
|
||||
1 1 4 26 INV
|
||||
1 1 4 27 INV
|
||||
1 1 4 28 INV
|
||||
1 1 4 29 INV
|
||||
1 1 4 30 INV
|
||||
1 1 4 31 INV
|
||||
1 1 4 32 INV
|
||||
1 1 4 33 INV
|
||||
1 1 4 34 INV
|
||||
1 1 4 35 INV
|
||||
1 1 4 36 INV
|
||||
1 1 4 37 INV
|
||||
1 1 4 38 INV
|
||||
1 1 4 39 INV
|
||||
1 1 4 40 INV
|
||||
1 1 4 41 INV
|
||||
1 1 4 42 INV
|
||||
1 1 4 43 INV
|
||||
1 1 4 44 INV
|
||||
1 1 4 45 INV
|
||||
1 1 4 46 INV
|
||||
1 1 4 47 INV
|
||||
1 1 4 48 INV
|
||||
1 1 4 49 INV
|
||||
1 1 4 50 INV
|
||||
1 1 4 51 INV
|
||||
1 1 4 52 INV
|
||||
1 1 4 53 INV
|
||||
1 1 4 54 INV
|
||||
1 1 4 55 INV
|
||||
1 1 4 56 INV
|
||||
1 1 4 57 INV
|
||||
1 1 4 58 INV
|
||||
1 1 4 59 INV
|
||||
1 1 4 60 INV
|
||||
1 1 4 61 INV
|
||||
1 1 4 62 INV
|
||||
1 1 4 63 INV
|
||||
1 1 4 64 INV
|
||||
1 1 4 65 INV
|
||||
1 1 4 66 INV
|
||||
1 1 4 67 INV
|
||||
1 1 4 68 INV
|
||||
1 1 4 69 INV
|
||||
1 1 4 70 INV
|
||||
1 1 4 71 INV
|
||||
1 1 4 72 INV
|
||||
1 1 4 73 INV
|
||||
1 1 4 74 INV
|
||||
1 1 4 75 INV
|
||||
1 1 4 76 INV
|
||||
1 1 4 77 INV
|
||||
1 1 4 78 INV
|
||||
1 1 4 79 INV
|
||||
1 1 4 80 INV
|
||||
1 1 4 81 INV
|
||||
1 1 4 82 INV
|
||||
1 1 4 83 INV
|
||||
1 1 4 84 INV
|
||||
1 1 4 85 INV
|
||||
1 1 4 86 INV
|
||||
1 1 4 87 INV
|
||||
1 1 4 88 INV
|
||||
1 1 4 89 INV
|
||||
1 1 4 90 INV
|
||||
1 1 4 91 INV
|
||||
1 1 4 92 INV
|
||||
1 1 4 93 INV
|
||||
1 1 4 94 INV
|
||||
1 1 4 95 INV
|
||||
1 1 4 96 INV
|
||||
1 1 4 97 INV
|
||||
1 1 4 98 INV
|
||||
1 1 4 99 INV
|
||||
1 1 4 100 INV
|
||||
1 1 4 101 INV
|
||||
|
||||
1 1 5 102 INV
|
||||
1 1 5 103 INV
|
||||
1 1 5 104 INV
|
||||
1 1 5 105 INV
|
||||
1 1 5 106 INV
|
||||
1 1 5 107 INV
|
||||
1 1 5 108 INV
|
||||
1 1 5 109 INV
|
||||
1 1 5 110 INV
|
||||
1 1 5 111 INV
|
||||
1 1 5 112 INV
|
||||
1 1 5 113 INV
|
||||
1 1 5 114 INV
|
||||
1 1 5 115 INV
|
||||
1 1 5 116 INV
|
||||
1 1 5 117 INV
|
||||
1 1 5 118 INV
|
||||
1 1 5 119 INV
|
||||
1 1 5 120 INV
|
||||
1 1 5 121 INV
|
||||
1 1 5 122 INV
|
||||
1 1 5 123 INV
|
||||
1 1 5 124 INV
|
||||
1 1 5 125 INV
|
||||
1 1 5 126 INV
|
||||
1 1 5 127 INV
|
||||
1 1 5 128 INV
|
||||
1 1 5 129 INV
|
||||
1 1 5 130 INV
|
||||
1 1 5 131 INV
|
||||
1 1 5 132 INV
|
||||
1 1 5 133 INV
|
||||
1 1 5 134 INV
|
||||
1 1 5 135 INV
|
||||
1 1 5 136 INV
|
||||
1 1 5 137 INV
|
||||
1 1 5 138 INV
|
||||
1 1 5 139 INV
|
||||
1 1 5 140 INV
|
||||
1 1 5 141 INV
|
||||
1 1 5 142 INV
|
||||
1 1 5 143 INV
|
||||
1 1 5 144 INV
|
||||
1 1 5 145 INV
|
||||
1 1 5 146 INV
|
||||
1 1 5 147 INV
|
||||
1 1 5 148 INV
|
||||
1 1 5 149 INV
|
||||
1 1 5 150 INV
|
||||
1 1 5 151 INV
|
||||
1 1 5 152 INV
|
||||
1 1 5 153 INV
|
||||
1 1 5 154 INV
|
||||
1 1 5 155 INV
|
||||
1 1 5 156 INV
|
||||
1 1 5 157 INV
|
||||
1 1 5 158 INV
|
||||
1 1 5 159 INV
|
||||
1 1 5 160 INV
|
||||
1 1 5 161 INV
|
||||
1 1 5 162 INV
|
||||
1 1 5 163 INV
|
||||
1 1 5 164 INV
|
||||
1 1 5 165 INV
|
||||
1 1 5 166 INV
|
||||
1 1 5 167 INV
|
||||
1 1 5 168 INV
|
||||
1 1 5 169 INV
|
||||
1 1 5 170 INV
|
||||
1 1 5 171 INV
|
||||
1 1 5 172 INV
|
||||
1 1 5 173 INV
|
||||
1 1 5 174 INV
|
||||
1 1 5 175 INV
|
||||
1 1 5 176 INV
|
||||
1 1 5 177 INV
|
||||
1 1 5 178 INV
|
||||
1 1 5 179 INV
|
||||
1 1 5 180 INV
|
||||
1 1 5 181 INV
|
||||
1 1 5 182 INV
|
||||
1 1 5 183 INV
|
||||
1 1 5 184 INV
|
||||
1 1 5 185 INV
|
||||
1 1 5 186 INV
|
||||
1 1 5 187 INV
|
||||
1 1 5 188 INV
|
||||
1 1 5 189 INV
|
||||
1 1 5 190 INV
|
||||
1 1 5 191 INV
|
||||
1 1 5 192 INV
|
||||
1 1 5 193 INV
|
||||
1 1 5 194 INV
|
||||
1 1 5 195 INV
|
||||
1 1 5 196 INV
|
||||
1 1 5 197 INV
|
||||
|
||||
1 1 4 198 INV
|
||||
|
||||
1 1 5 199 INV
|
||||
1 1 5 200 INV
|
||||
1 1 5 201 INV
|
||||
1 1 5 202 INV
|
||||
1 1 5 203 INV
|
||||
1 1 5 204 INV
|
||||
1 1 5 205 INV
|
||||
1 1 5 206 INV
|
||||
1 1 5 207 INV
|
||||
1 1 5 208 INV
|
||||
1 1 5 209 INV
|
||||
1 1 5 210 INV
|
||||
1 1 5 211 INV
|
||||
1 1 5 212 INV
|
||||
1 1 5 213 INV
|
||||
1 1 5 214 INV
|
||||
1 1 5 215 INV
|
||||
1 1 5 216 INV
|
||||
1 1 5 217 INV
|
||||
1 1 5 218 INV
|
||||
1 1 5 219 INV
|
||||
1 1 5 220 INV
|
||||
1 1 5 221 INV
|
||||
1 1 5 222 INV
|
||||
1 1 5 223 INV
|
||||
1 1 5 224 INV
|
||||
1 1 5 225 INV
|
||||
1 1 5 226 INV
|
||||
1 1 5 227 INV
|
||||
1 1 5 228 INV
|
||||
1 1 5 229 INV
|
||||
|
||||
1 1 4 230 INV
|
||||
1 1 4 231 INV
|
||||
1 1 4 232 INV
|
||||
1 1 4 233 INV
|
||||
1 1 4 234 INV
|
||||
1 1 4 235 INV
|
||||
1 1 4 236 INV
|
||||
1 1 4 237 INV
|
||||
1 1 4 238 INV
|
||||
1 1 4 239 INV
|
||||
1 1 4 240 INV
|
||||
1 1 4 241 INV
|
||||
1 1 4 242 INV
|
||||
1 1 4 243 INV
|
||||
1 1 4 244 INV
|
||||
1 1 4 245 INV
|
||||
1 1 4 246 INV
|
||||
1 1 4 247 INV
|
||||
1 1 4 248 INV
|
||||
1 1 4 249 INV
|
||||
1 1 4 250 INV
|
||||
1 1 4 251 INV
|
||||
1 1 4 252 INV
|
||||
1 1 4 253 INV
|
||||
1 1 4 254 INV
|
||||
1 1 4 255 INV
|
||||
1 1 4 256 INV
|
||||
1 1 4 257 INV
|
||||
1 1 4 258 INV
|
||||
1 1 4 259 INV
|
||||
1 1 4 260 INV
|
||||
1 1 4 261 INV
|
||||
283
getP256primeOnesComplement.casm
Normal file
283
getP256primeOnesComplement.casm
Normal file
@@ -0,0 +1,283 @@
|
||||
# return "one's complement" of NIST P-256 prime (2**256 - 2**224 + 2**192 + 2**96 - 1)
|
||||
|
||||
# prime's bits broken down for readability:
|
||||
# 11111111111111111111111111111111
|
||||
# 0000000000000000000000000000000
|
||||
# 1
|
||||
# 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
# 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
||||
# we invert each bit - this is "one's complement"
|
||||
|
||||
|
||||
260 262
|
||||
2 1 1 #inputs can be any random bits
|
||||
1 256
|
||||
|
||||
2 1 0 1 2 XOR
|
||||
2 1 0 1 3 XOR
|
||||
2 1 2 3 5 XOR # XORing 2 equal bits gives us a zero
|
||||
1 1 5 4 INV # wire 4 is 1
|
||||
|
||||
# We use INV to set bits
|
||||
# outputs first wire is lsb
|
||||
|
||||
1 1 4 6 INV
|
||||
1 1 4 7 INV
|
||||
1 1 4 8 INV
|
||||
1 1 4 9 INV
|
||||
1 1 4 10 INV
|
||||
1 1 4 11 INV
|
||||
1 1 4 12 INV
|
||||
1 1 4 13 INV
|
||||
1 1 4 14 INV
|
||||
1 1 4 15 INV
|
||||
1 1 4 16 INV
|
||||
1 1 4 17 INV
|
||||
1 1 4 18 INV
|
||||
1 1 4 19 INV
|
||||
1 1 4 20 INV
|
||||
1 1 4 21 INV
|
||||
1 1 4 22 INV
|
||||
1 1 4 23 INV
|
||||
1 1 4 24 INV
|
||||
1 1 4 25 INV
|
||||
1 1 4 26 INV
|
||||
1 1 4 27 INV
|
||||
1 1 4 28 INV
|
||||
1 1 4 29 INV
|
||||
1 1 4 30 INV
|
||||
1 1 4 31 INV
|
||||
1 1 4 32 INV
|
||||
1 1 4 33 INV
|
||||
1 1 4 34 INV
|
||||
1 1 4 35 INV
|
||||
1 1 4 36 INV
|
||||
1 1 4 37 INV
|
||||
1 1 4 38 INV
|
||||
1 1 4 39 INV
|
||||
1 1 4 40 INV
|
||||
1 1 4 41 INV
|
||||
1 1 4 42 INV
|
||||
1 1 4 43 INV
|
||||
1 1 4 44 INV
|
||||
1 1 4 45 INV
|
||||
1 1 4 46 INV
|
||||
1 1 4 47 INV
|
||||
1 1 4 48 INV
|
||||
1 1 4 49 INV
|
||||
1 1 4 50 INV
|
||||
1 1 4 51 INV
|
||||
1 1 4 52 INV
|
||||
1 1 4 53 INV
|
||||
1 1 4 54 INV
|
||||
1 1 4 55 INV
|
||||
1 1 4 56 INV
|
||||
1 1 4 57 INV
|
||||
1 1 4 58 INV
|
||||
1 1 4 59 INV
|
||||
1 1 4 60 INV
|
||||
1 1 4 61 INV
|
||||
1 1 4 62 INV
|
||||
1 1 4 63 INV
|
||||
1 1 4 64 INV
|
||||
1 1 4 65 INV
|
||||
1 1 4 66 INV
|
||||
1 1 4 67 INV
|
||||
1 1 4 68 INV
|
||||
1 1 4 69 INV
|
||||
1 1 4 70 INV
|
||||
1 1 4 71 INV
|
||||
1 1 4 72 INV
|
||||
1 1 4 73 INV
|
||||
1 1 4 74 INV
|
||||
1 1 4 75 INV
|
||||
1 1 4 76 INV
|
||||
1 1 4 77 INV
|
||||
1 1 4 78 INV
|
||||
1 1 4 79 INV
|
||||
1 1 4 80 INV
|
||||
1 1 4 81 INV
|
||||
1 1 4 82 INV
|
||||
1 1 4 83 INV
|
||||
1 1 4 84 INV
|
||||
1 1 4 85 INV
|
||||
1 1 4 86 INV
|
||||
1 1 4 87 INV
|
||||
1 1 4 88 INV
|
||||
1 1 4 89 INV
|
||||
1 1 4 90 INV
|
||||
1 1 4 91 INV
|
||||
1 1 4 92 INV
|
||||
1 1 4 93 INV
|
||||
1 1 4 94 INV
|
||||
1 1 4 95 INV
|
||||
1 1 4 96 INV
|
||||
1 1 4 97 INV
|
||||
1 1 4 98 INV
|
||||
1 1 4 99 INV
|
||||
1 1 4 100 INV
|
||||
1 1 4 101 INV
|
||||
|
||||
1 1 5 102 INV
|
||||
1 1 5 103 INV
|
||||
1 1 5 104 INV
|
||||
1 1 5 105 INV
|
||||
1 1 5 106 INV
|
||||
1 1 5 107 INV
|
||||
1 1 5 108 INV
|
||||
1 1 5 109 INV
|
||||
1 1 5 110 INV
|
||||
1 1 5 111 INV
|
||||
1 1 5 112 INV
|
||||
1 1 5 113 INV
|
||||
1 1 5 114 INV
|
||||
1 1 5 115 INV
|
||||
1 1 5 116 INV
|
||||
1 1 5 117 INV
|
||||
1 1 5 118 INV
|
||||
1 1 5 119 INV
|
||||
1 1 5 120 INV
|
||||
1 1 5 121 INV
|
||||
1 1 5 122 INV
|
||||
1 1 5 123 INV
|
||||
1 1 5 124 INV
|
||||
1 1 5 125 INV
|
||||
1 1 5 126 INV
|
||||
1 1 5 127 INV
|
||||
1 1 5 128 INV
|
||||
1 1 5 129 INV
|
||||
1 1 5 130 INV
|
||||
1 1 5 131 INV
|
||||
1 1 5 132 INV
|
||||
1 1 5 133 INV
|
||||
1 1 5 134 INV
|
||||
1 1 5 135 INV
|
||||
1 1 5 136 INV
|
||||
1 1 5 137 INV
|
||||
1 1 5 138 INV
|
||||
1 1 5 139 INV
|
||||
1 1 5 140 INV
|
||||
1 1 5 141 INV
|
||||
1 1 5 142 INV
|
||||
1 1 5 143 INV
|
||||
1 1 5 144 INV
|
||||
1 1 5 145 INV
|
||||
1 1 5 146 INV
|
||||
1 1 5 147 INV
|
||||
1 1 5 148 INV
|
||||
1 1 5 149 INV
|
||||
1 1 5 150 INV
|
||||
1 1 5 151 INV
|
||||
1 1 5 152 INV
|
||||
1 1 5 153 INV
|
||||
1 1 5 154 INV
|
||||
1 1 5 155 INV
|
||||
1 1 5 156 INV
|
||||
1 1 5 157 INV
|
||||
1 1 5 158 INV
|
||||
1 1 5 159 INV
|
||||
1 1 5 160 INV
|
||||
1 1 5 161 INV
|
||||
1 1 5 162 INV
|
||||
1 1 5 163 INV
|
||||
1 1 5 164 INV
|
||||
1 1 5 165 INV
|
||||
1 1 5 166 INV
|
||||
1 1 5 167 INV
|
||||
1 1 5 168 INV
|
||||
1 1 5 169 INV
|
||||
1 1 5 170 INV
|
||||
1 1 5 171 INV
|
||||
1 1 5 172 INV
|
||||
1 1 5 173 INV
|
||||
1 1 5 174 INV
|
||||
1 1 5 175 INV
|
||||
1 1 5 176 INV
|
||||
1 1 5 177 INV
|
||||
1 1 5 178 INV
|
||||
1 1 5 179 INV
|
||||
1 1 5 180 INV
|
||||
1 1 5 181 INV
|
||||
1 1 5 182 INV
|
||||
1 1 5 183 INV
|
||||
1 1 5 184 INV
|
||||
1 1 5 185 INV
|
||||
1 1 5 186 INV
|
||||
1 1 5 187 INV
|
||||
1 1 5 188 INV
|
||||
1 1 5 189 INV
|
||||
1 1 5 190 INV
|
||||
1 1 5 191 INV
|
||||
1 1 5 192 INV
|
||||
1 1 5 193 INV
|
||||
1 1 5 194 INV
|
||||
1 1 5 195 INV
|
||||
1 1 5 196 INV
|
||||
1 1 5 197 INV
|
||||
|
||||
1 1 4 198 INV
|
||||
|
||||
1 1 5 199 INV
|
||||
1 1 5 200 INV
|
||||
1 1 5 201 INV
|
||||
1 1 5 202 INV
|
||||
1 1 5 203 INV
|
||||
1 1 5 204 INV
|
||||
1 1 5 205 INV
|
||||
1 1 5 206 INV
|
||||
1 1 5 207 INV
|
||||
1 1 5 208 INV
|
||||
1 1 5 209 INV
|
||||
1 1 5 210 INV
|
||||
1 1 5 211 INV
|
||||
1 1 5 212 INV
|
||||
1 1 5 213 INV
|
||||
1 1 5 214 INV
|
||||
1 1 5 215 INV
|
||||
1 1 5 216 INV
|
||||
1 1 5 217 INV
|
||||
1 1 5 218 INV
|
||||
1 1 5 219 INV
|
||||
1 1 5 220 INV
|
||||
1 1 5 221 INV
|
||||
1 1 5 222 INV
|
||||
1 1 5 223 INV
|
||||
1 1 5 224 INV
|
||||
1 1 5 225 INV
|
||||
1 1 5 226 INV
|
||||
1 1 5 227 INV
|
||||
1 1 5 228 INV
|
||||
1 1 5 229 INV
|
||||
|
||||
1 1 4 230 INV
|
||||
1 1 4 231 INV
|
||||
1 1 4 232 INV
|
||||
1 1 4 233 INV
|
||||
1 1 4 234 INV
|
||||
1 1 4 235 INV
|
||||
1 1 4 236 INV
|
||||
1 1 4 237 INV
|
||||
1 1 4 238 INV
|
||||
1 1 4 239 INV
|
||||
1 1 4 240 INV
|
||||
1 1 4 241 INV
|
||||
1 1 4 242 INV
|
||||
1 1 4 243 INV
|
||||
1 1 4 244 INV
|
||||
1 1 4 245 INV
|
||||
1 1 4 246 INV
|
||||
1 1 4 247 INV
|
||||
1 1 4 248 INV
|
||||
1 1 4 249 INV
|
||||
1 1 4 250 INV
|
||||
1 1 4 251 INV
|
||||
1 1 4 252 INV
|
||||
1 1 4 253 INV
|
||||
1 1 4 254 INV
|
||||
1 1 4 255 INV
|
||||
1 1 4 256 INV
|
||||
1 1 4 257 INV
|
||||
1 1 4 258 INV
|
||||
1 1 4 259 INV
|
||||
1 1 4 260 INV
|
||||
1 1 4 261 INV
|
||||
289
getSha256InitialState.casm
Normal file
289
getSha256InitialState.casm
Normal file
@@ -0,0 +1,289 @@
|
||||
# return the initial state of sha256 which is:
|
||||
# '6a09e667'+'bb67ae85'+'3c6ef372'+'a54ff53a'+'510e527f'+'9b05688c'+'1f83d9ab'+'5be0cd19'
|
||||
# or in bits:
|
||||
# 01101010000010011110011001100111
|
||||
# 10111011011001111010111010000101
|
||||
# 00111100011011101111001101110010
|
||||
# 10100101010011111111010100111010
|
||||
# 01010001000011100101001001111111
|
||||
# 10011011000001010110100010001100
|
||||
# 00011111100000111101100110101011
|
||||
# 01011011111000001100110100011001
|
||||
|
||||
260 262
|
||||
2 1 1 #inputs can be any random bits
|
||||
1 256
|
||||
|
||||
2 1 0 1 2 XOR
|
||||
2 1 0 1 3 XOR
|
||||
2 1 2 3 4 XOR # XORing 2 equal bits gives us a zero
|
||||
1 1 4 5 INV # wire 5 is 1
|
||||
|
||||
#jigg doesnt support EQ operator, that's why we use INV to set bits
|
||||
|
||||
# note that the first output wire should contain lsb
|
||||
# that's why for readability we set bits beginning from msb working our way to lsb
|
||||
|
||||
# generated with python3 :
|
||||
# st = '0' + bin(int('6a09e667'+'bb67ae85'+'3c6ef372'+'a54ff53a'+'510e527f'+'9b05688c'+'1f83d9ab'+'5be0cd19', 16))[2:]
|
||||
# out = ''
|
||||
# for x in range(256):
|
||||
# out += '1 1 ' + ('4 ' if int(st[x]) else '5 ') + str(261-x) + ' INV\r\n'
|
||||
# print(out)
|
||||
|
||||
1 1 5 261 INV
|
||||
1 1 4 260 INV
|
||||
1 1 4 259 INV
|
||||
1 1 5 258 INV
|
||||
1 1 4 257 INV
|
||||
1 1 5 256 INV
|
||||
1 1 4 255 INV
|
||||
1 1 5 254 INV
|
||||
1 1 5 253 INV
|
||||
1 1 5 252 INV
|
||||
1 1 5 251 INV
|
||||
1 1 5 250 INV
|
||||
1 1 4 249 INV
|
||||
1 1 5 248 INV
|
||||
1 1 5 247 INV
|
||||
1 1 4 246 INV
|
||||
1 1 4 245 INV
|
||||
1 1 4 244 INV
|
||||
1 1 4 243 INV
|
||||
1 1 5 242 INV
|
||||
1 1 5 241 INV
|
||||
1 1 4 240 INV
|
||||
1 1 4 239 INV
|
||||
1 1 5 238 INV
|
||||
1 1 5 237 INV
|
||||
1 1 4 236 INV
|
||||
1 1 4 235 INV
|
||||
1 1 5 234 INV
|
||||
1 1 5 233 INV
|
||||
1 1 4 232 INV
|
||||
1 1 4 231 INV
|
||||
1 1 4 230 INV
|
||||
1 1 4 229 INV
|
||||
1 1 5 228 INV
|
||||
1 1 4 227 INV
|
||||
1 1 4 226 INV
|
||||
1 1 4 225 INV
|
||||
1 1 5 224 INV
|
||||
1 1 4 223 INV
|
||||
1 1 4 222 INV
|
||||
1 1 5 221 INV
|
||||
1 1 4 220 INV
|
||||
1 1 4 219 INV
|
||||
1 1 5 218 INV
|
||||
1 1 5 217 INV
|
||||
1 1 4 216 INV
|
||||
1 1 4 215 INV
|
||||
1 1 4 214 INV
|
||||
1 1 4 213 INV
|
||||
1 1 5 212 INV
|
||||
1 1 4 211 INV
|
||||
1 1 5 210 INV
|
||||
1 1 4 209 INV
|
||||
1 1 4 208 INV
|
||||
1 1 4 207 INV
|
||||
1 1 5 206 INV
|
||||
1 1 4 205 INV
|
||||
1 1 5 204 INV
|
||||
1 1 5 203 INV
|
||||
1 1 5 202 INV
|
||||
1 1 5 201 INV
|
||||
1 1 4 200 INV
|
||||
1 1 5 199 INV
|
||||
1 1 4 198 INV
|
||||
1 1 5 197 INV
|
||||
1 1 5 196 INV
|
||||
1 1 4 195 INV
|
||||
1 1 4 194 INV
|
||||
1 1 4 193 INV
|
||||
1 1 4 192 INV
|
||||
1 1 5 191 INV
|
||||
1 1 5 190 INV
|
||||
1 1 5 189 INV
|
||||
1 1 4 188 INV
|
||||
1 1 4 187 INV
|
||||
1 1 5 186 INV
|
||||
1 1 4 185 INV
|
||||
1 1 4 184 INV
|
||||
1 1 4 183 INV
|
||||
1 1 5 182 INV
|
||||
1 1 4 181 INV
|
||||
1 1 4 180 INV
|
||||
1 1 4 179 INV
|
||||
1 1 4 178 INV
|
||||
1 1 5 177 INV
|
||||
1 1 5 176 INV
|
||||
1 1 4 175 INV
|
||||
1 1 4 174 INV
|
||||
1 1 5 173 INV
|
||||
1 1 4 172 INV
|
||||
1 1 4 171 INV
|
||||
1 1 4 170 INV
|
||||
1 1 5 169 INV
|
||||
1 1 5 168 INV
|
||||
1 1 4 167 INV
|
||||
1 1 5 166 INV
|
||||
1 1 4 165 INV
|
||||
1 1 5 164 INV
|
||||
1 1 4 163 INV
|
||||
1 1 5 162 INV
|
||||
1 1 5 161 INV
|
||||
1 1 4 160 INV
|
||||
1 1 5 159 INV
|
||||
1 1 4 158 INV
|
||||
1 1 5 157 INV
|
||||
1 1 4 156 INV
|
||||
1 1 5 155 INV
|
||||
1 1 5 154 INV
|
||||
1 1 4 153 INV
|
||||
1 1 4 152 INV
|
||||
1 1 4 151 INV
|
||||
1 1 4 150 INV
|
||||
1 1 4 149 INV
|
||||
1 1 4 148 INV
|
||||
1 1 4 147 INV
|
||||
1 1 4 146 INV
|
||||
1 1 5 145 INV
|
||||
1 1 4 144 INV
|
||||
1 1 5 143 INV
|
||||
1 1 4 142 INV
|
||||
1 1 5 141 INV
|
||||
1 1 5 140 INV
|
||||
1 1 4 139 INV
|
||||
1 1 4 138 INV
|
||||
1 1 4 137 INV
|
||||
1 1 5 136 INV
|
||||
1 1 4 135 INV
|
||||
1 1 5 134 INV
|
||||
1 1 5 133 INV
|
||||
1 1 4 132 INV
|
||||
1 1 5 131 INV
|
||||
1 1 4 130 INV
|
||||
1 1 5 129 INV
|
||||
1 1 5 128 INV
|
||||
1 1 5 127 INV
|
||||
1 1 4 126 INV
|
||||
1 1 5 125 INV
|
||||
1 1 5 124 INV
|
||||
1 1 5 123 INV
|
||||
1 1 5 122 INV
|
||||
1 1 4 121 INV
|
||||
1 1 4 120 INV
|
||||
1 1 4 119 INV
|
||||
1 1 5 118 INV
|
||||
1 1 5 117 INV
|
||||
1 1 4 116 INV
|
||||
1 1 5 115 INV
|
||||
1 1 4 114 INV
|
||||
1 1 5 113 INV
|
||||
1 1 5 112 INV
|
||||
1 1 4 111 INV
|
||||
1 1 5 110 INV
|
||||
1 1 5 109 INV
|
||||
1 1 4 108 INV
|
||||
1 1 4 107 INV
|
||||
1 1 4 106 INV
|
||||
1 1 4 105 INV
|
||||
1 1 4 104 INV
|
||||
1 1 4 103 INV
|
||||
1 1 4 102 INV
|
||||
1 1 4 101 INV
|
||||
1 1 5 100 INV
|
||||
1 1 5 99 INV
|
||||
1 1 4 98 INV
|
||||
1 1 4 97 INV
|
||||
1 1 5 96 INV
|
||||
1 1 4 95 INV
|
||||
1 1 4 94 INV
|
||||
1 1 5 93 INV
|
||||
1 1 5 92 INV
|
||||
1 1 5 91 INV
|
||||
1 1 5 90 INV
|
||||
1 1 5 89 INV
|
||||
1 1 4 88 INV
|
||||
1 1 5 87 INV
|
||||
1 1 4 86 INV
|
||||
1 1 5 85 INV
|
||||
1 1 4 84 INV
|
||||
1 1 4 83 INV
|
||||
1 1 5 82 INV
|
||||
1 1 4 81 INV
|
||||
1 1 5 80 INV
|
||||
1 1 5 79 INV
|
||||
1 1 5 78 INV
|
||||
1 1 4 77 INV
|
||||
1 1 5 76 INV
|
||||
1 1 5 75 INV
|
||||
1 1 5 74 INV
|
||||
1 1 4 73 INV
|
||||
1 1 4 72 INV
|
||||
1 1 5 71 INV
|
||||
1 1 5 70 INV
|
||||
1 1 5 69 INV
|
||||
1 1 5 68 INV
|
||||
1 1 5 67 INV
|
||||
1 1 4 66 INV
|
||||
1 1 4 65 INV
|
||||
1 1 4 64 INV
|
||||
1 1 4 63 INV
|
||||
1 1 4 62 INV
|
||||
1 1 4 61 INV
|
||||
1 1 5 60 INV
|
||||
1 1 5 59 INV
|
||||
1 1 5 58 INV
|
||||
1 1 5 57 INV
|
||||
1 1 5 56 INV
|
||||
1 1 4 55 INV
|
||||
1 1 4 54 INV
|
||||
1 1 4 53 INV
|
||||
1 1 4 52 INV
|
||||
1 1 5 51 INV
|
||||
1 1 4 50 INV
|
||||
1 1 4 49 INV
|
||||
1 1 5 48 INV
|
||||
1 1 5 47 INV
|
||||
1 1 4 46 INV
|
||||
1 1 4 45 INV
|
||||
1 1 5 44 INV
|
||||
1 1 4 43 INV
|
||||
1 1 5 42 INV
|
||||
1 1 4 41 INV
|
||||
1 1 5 40 INV
|
||||
1 1 4 39 INV
|
||||
1 1 4 38 INV
|
||||
1 1 5 37 INV
|
||||
1 1 4 36 INV
|
||||
1 1 5 35 INV
|
||||
1 1 4 34 INV
|
||||
1 1 4 33 INV
|
||||
1 1 5 32 INV
|
||||
1 1 4 31 INV
|
||||
1 1 4 30 INV
|
||||
1 1 4 29 INV
|
||||
1 1 4 28 INV
|
||||
1 1 4 27 INV
|
||||
1 1 5 26 INV
|
||||
1 1 5 25 INV
|
||||
1 1 5 24 INV
|
||||
1 1 5 23 INV
|
||||
1 1 5 22 INV
|
||||
1 1 4 21 INV
|
||||
1 1 4 20 INV
|
||||
1 1 5 19 INV
|
||||
1 1 5 18 INV
|
||||
1 1 4 17 INV
|
||||
1 1 4 16 INV
|
||||
1 1 5 15 INV
|
||||
1 1 4 14 INV
|
||||
1 1 5 13 INV
|
||||
1 1 5 12 INV
|
||||
1 1 5 11 INV
|
||||
1 1 4 10 INV
|
||||
1 1 4 9 INV
|
||||
1 1 5 8 INV
|
||||
1 1 5 7 INV
|
||||
1 1 4 6 INV
|
||||
262
mult256by1.casm
Normal file
262
mult256by1.casm
Normal file
@@ -0,0 +1,262 @@
|
||||
#multiply 256 bits by one bit
|
||||
|
||||
256 513
|
||||
2 1 256
|
||||
1 256
|
||||
|
||||
2 1 0 256 257 AND
|
||||
2 1 1 256 258 AND
|
||||
2 1 2 256 259 AND
|
||||
2 1 3 256 260 AND
|
||||
2 1 4 256 261 AND
|
||||
2 1 5 256 262 AND
|
||||
2 1 6 256 263 AND
|
||||
2 1 7 256 264 AND
|
||||
2 1 8 256 265 AND
|
||||
2 1 9 256 266 AND
|
||||
2 1 10 256 267 AND
|
||||
2 1 11 256 268 AND
|
||||
2 1 12 256 269 AND
|
||||
2 1 13 256 270 AND
|
||||
2 1 14 256 271 AND
|
||||
2 1 15 256 272 AND
|
||||
2 1 16 256 273 AND
|
||||
2 1 17 256 274 AND
|
||||
2 1 18 256 275 AND
|
||||
2 1 19 256 276 AND
|
||||
2 1 20 256 277 AND
|
||||
2 1 21 256 278 AND
|
||||
2 1 22 256 279 AND
|
||||
2 1 23 256 280 AND
|
||||
2 1 24 256 281 AND
|
||||
2 1 25 256 282 AND
|
||||
2 1 26 256 283 AND
|
||||
2 1 27 256 284 AND
|
||||
2 1 28 256 285 AND
|
||||
2 1 29 256 286 AND
|
||||
2 1 30 256 287 AND
|
||||
2 1 31 256 288 AND
|
||||
2 1 32 256 289 AND
|
||||
2 1 33 256 290 AND
|
||||
2 1 34 256 291 AND
|
||||
2 1 35 256 292 AND
|
||||
2 1 36 256 293 AND
|
||||
2 1 37 256 294 AND
|
||||
2 1 38 256 295 AND
|
||||
2 1 39 256 296 AND
|
||||
2 1 40 256 297 AND
|
||||
2 1 41 256 298 AND
|
||||
2 1 42 256 299 AND
|
||||
2 1 43 256 300 AND
|
||||
2 1 44 256 301 AND
|
||||
2 1 45 256 302 AND
|
||||
2 1 46 256 303 AND
|
||||
2 1 47 256 304 AND
|
||||
2 1 48 256 305 AND
|
||||
2 1 49 256 306 AND
|
||||
2 1 50 256 307 AND
|
||||
2 1 51 256 308 AND
|
||||
2 1 52 256 309 AND
|
||||
2 1 53 256 310 AND
|
||||
2 1 54 256 311 AND
|
||||
2 1 55 256 312 AND
|
||||
2 1 56 256 313 AND
|
||||
2 1 57 256 314 AND
|
||||
2 1 58 256 315 AND
|
||||
2 1 59 256 316 AND
|
||||
2 1 60 256 317 AND
|
||||
2 1 61 256 318 AND
|
||||
2 1 62 256 319 AND
|
||||
2 1 63 256 320 AND
|
||||
2 1 64 256 321 AND
|
||||
2 1 65 256 322 AND
|
||||
2 1 66 256 323 AND
|
||||
2 1 67 256 324 AND
|
||||
2 1 68 256 325 AND
|
||||
2 1 69 256 326 AND
|
||||
2 1 70 256 327 AND
|
||||
2 1 71 256 328 AND
|
||||
2 1 72 256 329 AND
|
||||
2 1 73 256 330 AND
|
||||
2 1 74 256 331 AND
|
||||
2 1 75 256 332 AND
|
||||
2 1 76 256 333 AND
|
||||
2 1 77 256 334 AND
|
||||
2 1 78 256 335 AND
|
||||
2 1 79 256 336 AND
|
||||
2 1 80 256 337 AND
|
||||
2 1 81 256 338 AND
|
||||
2 1 82 256 339 AND
|
||||
2 1 83 256 340 AND
|
||||
2 1 84 256 341 AND
|
||||
2 1 85 256 342 AND
|
||||
2 1 86 256 343 AND
|
||||
2 1 87 256 344 AND
|
||||
2 1 88 256 345 AND
|
||||
2 1 89 256 346 AND
|
||||
2 1 90 256 347 AND
|
||||
2 1 91 256 348 AND
|
||||
2 1 92 256 349 AND
|
||||
2 1 93 256 350 AND
|
||||
2 1 94 256 351 AND
|
||||
2 1 95 256 352 AND
|
||||
2 1 96 256 353 AND
|
||||
2 1 97 256 354 AND
|
||||
2 1 98 256 355 AND
|
||||
2 1 99 256 356 AND
|
||||
2 1 100 256 357 AND
|
||||
2 1 101 256 358 AND
|
||||
2 1 102 256 359 AND
|
||||
2 1 103 256 360 AND
|
||||
2 1 104 256 361 AND
|
||||
2 1 105 256 362 AND
|
||||
2 1 106 256 363 AND
|
||||
2 1 107 256 364 AND
|
||||
2 1 108 256 365 AND
|
||||
2 1 109 256 366 AND
|
||||
2 1 110 256 367 AND
|
||||
2 1 111 256 368 AND
|
||||
2 1 112 256 369 AND
|
||||
2 1 113 256 370 AND
|
||||
2 1 114 256 371 AND
|
||||
2 1 115 256 372 AND
|
||||
2 1 116 256 373 AND
|
||||
2 1 117 256 374 AND
|
||||
2 1 118 256 375 AND
|
||||
2 1 119 256 376 AND
|
||||
2 1 120 256 377 AND
|
||||
2 1 121 256 378 AND
|
||||
2 1 122 256 379 AND
|
||||
2 1 123 256 380 AND
|
||||
2 1 124 256 381 AND
|
||||
2 1 125 256 382 AND
|
||||
2 1 126 256 383 AND
|
||||
2 1 127 256 384 AND
|
||||
2 1 128 256 385 AND
|
||||
2 1 129 256 386 AND
|
||||
2 1 130 256 387 AND
|
||||
2 1 131 256 388 AND
|
||||
2 1 132 256 389 AND
|
||||
2 1 133 256 390 AND
|
||||
2 1 134 256 391 AND
|
||||
2 1 135 256 392 AND
|
||||
2 1 136 256 393 AND
|
||||
2 1 137 256 394 AND
|
||||
2 1 138 256 395 AND
|
||||
2 1 139 256 396 AND
|
||||
2 1 140 256 397 AND
|
||||
2 1 141 256 398 AND
|
||||
2 1 142 256 399 AND
|
||||
2 1 143 256 400 AND
|
||||
2 1 144 256 401 AND
|
||||
2 1 145 256 402 AND
|
||||
2 1 146 256 403 AND
|
||||
2 1 147 256 404 AND
|
||||
2 1 148 256 405 AND
|
||||
2 1 149 256 406 AND
|
||||
2 1 150 256 407 AND
|
||||
2 1 151 256 408 AND
|
||||
2 1 152 256 409 AND
|
||||
2 1 153 256 410 AND
|
||||
2 1 154 256 411 AND
|
||||
2 1 155 256 412 AND
|
||||
2 1 156 256 413 AND
|
||||
2 1 157 256 414 AND
|
||||
2 1 158 256 415 AND
|
||||
2 1 159 256 416 AND
|
||||
2 1 160 256 417 AND
|
||||
2 1 161 256 418 AND
|
||||
2 1 162 256 419 AND
|
||||
2 1 163 256 420 AND
|
||||
2 1 164 256 421 AND
|
||||
2 1 165 256 422 AND
|
||||
2 1 166 256 423 AND
|
||||
2 1 167 256 424 AND
|
||||
2 1 168 256 425 AND
|
||||
2 1 169 256 426 AND
|
||||
2 1 170 256 427 AND
|
||||
2 1 171 256 428 AND
|
||||
2 1 172 256 429 AND
|
||||
2 1 173 256 430 AND
|
||||
2 1 174 256 431 AND
|
||||
2 1 175 256 432 AND
|
||||
2 1 176 256 433 AND
|
||||
2 1 177 256 434 AND
|
||||
2 1 178 256 435 AND
|
||||
2 1 179 256 436 AND
|
||||
2 1 180 256 437 AND
|
||||
2 1 181 256 438 AND
|
||||
2 1 182 256 439 AND
|
||||
2 1 183 256 440 AND
|
||||
2 1 184 256 441 AND
|
||||
2 1 185 256 442 AND
|
||||
2 1 186 256 443 AND
|
||||
2 1 187 256 444 AND
|
||||
2 1 188 256 445 AND
|
||||
2 1 189 256 446 AND
|
||||
2 1 190 256 447 AND
|
||||
2 1 191 256 448 AND
|
||||
2 1 192 256 449 AND
|
||||
2 1 193 256 450 AND
|
||||
2 1 194 256 451 AND
|
||||
2 1 195 256 452 AND
|
||||
2 1 196 256 453 AND
|
||||
2 1 197 256 454 AND
|
||||
2 1 198 256 455 AND
|
||||
2 1 199 256 456 AND
|
||||
2 1 200 256 457 AND
|
||||
2 1 201 256 458 AND
|
||||
2 1 202 256 459 AND
|
||||
2 1 203 256 460 AND
|
||||
2 1 204 256 461 AND
|
||||
2 1 205 256 462 AND
|
||||
2 1 206 256 463 AND
|
||||
2 1 207 256 464 AND
|
||||
2 1 208 256 465 AND
|
||||
2 1 209 256 466 AND
|
||||
2 1 210 256 467 AND
|
||||
2 1 211 256 468 AND
|
||||
2 1 212 256 469 AND
|
||||
2 1 213 256 470 AND
|
||||
2 1 214 256 471 AND
|
||||
2 1 215 256 472 AND
|
||||
2 1 216 256 473 AND
|
||||
2 1 217 256 474 AND
|
||||
2 1 218 256 475 AND
|
||||
2 1 219 256 476 AND
|
||||
2 1 220 256 477 AND
|
||||
2 1 221 256 478 AND
|
||||
2 1 222 256 479 AND
|
||||
2 1 223 256 480 AND
|
||||
2 1 224 256 481 AND
|
||||
2 1 225 256 482 AND
|
||||
2 1 226 256 483 AND
|
||||
2 1 227 256 484 AND
|
||||
2 1 228 256 485 AND
|
||||
2 1 229 256 486 AND
|
||||
2 1 230 256 487 AND
|
||||
2 1 231 256 488 AND
|
||||
2 1 232 256 489 AND
|
||||
2 1 233 256 490 AND
|
||||
2 1 234 256 491 AND
|
||||
2 1 235 256 492 AND
|
||||
2 1 236 256 493 AND
|
||||
2 1 237 256 494 AND
|
||||
2 1 238 256 495 AND
|
||||
2 1 239 256 496 AND
|
||||
2 1 240 256 497 AND
|
||||
2 1 241 256 498 AND
|
||||
2 1 242 256 499 AND
|
||||
2 1 243 256 500 AND
|
||||
2 1 244 256 501 AND
|
||||
2 1 245 256 502 AND
|
||||
2 1 246 256 503 AND
|
||||
2 1 247 256 504 AND
|
||||
2 1 248 256 505 AND
|
||||
2 1 249 256 506 AND
|
||||
2 1 250 256 507 AND
|
||||
2 1 251 256 508 AND
|
||||
2 1 252 256 509 AND
|
||||
2 1 253 256 510 AND
|
||||
2 1 254 256 511 AND
|
||||
2 1 255 256 512 AND
|
||||
135078
sha256.txt
Normal file
135078
sha256.txt
Normal file
File diff suppressed because it is too large
Load Diff
135076
sha256_state.txt
Normal file
135076
sha256_state.txt
Normal file
File diff suppressed because it is too large
Load Diff
26
shaPmsXorPadding.casm
Normal file
26
shaPmsXorPadding.casm
Normal file
@@ -0,0 +1,26 @@
|
||||
# pad 256 inputs with zeroes on the RIGHT from the input, then XOR with the padding byte and sha256 the result
|
||||
# return sha256 state
|
||||
|
||||
6 1296
|
||||
2 256 256
|
||||
# inputs:
|
||||
# msg to hash
|
||||
# sha256 state from which to resume hashing
|
||||
1 512
|
||||
# 256 bits: sha state for inner hash
|
||||
# 256 bits: sha state for outer hash
|
||||
|
||||
1 8 0 [512|>8] getIpadByte.casm
|
||||
1 8 0 [520|>8] getOpadByte.casm
|
||||
|
||||
# we repeat the padding byte 32 times
|
||||
512 256 [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [0|>256] [528|>256] xor256bits.casm
|
||||
|
||||
# the padding (xored with ipad byte) is on the RIGHT from the input. i.e. padding is LSB
|
||||
# we repeat the padding byte 32 times
|
||||
768 256 [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [512|>8] [528|>256] [256|>256] [784|>256] sha256.txt
|
||||
|
||||
# same for opad
|
||||
512 256 [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [0|>256] [528|>256] xor256bits.casm
|
||||
|
||||
768 256 [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [520|>8] [528|>256] [256|>256] [1040|>256] sha256.txt
|
||||
134
xor128bits.casm
Normal file
134
xor128bits.casm
Normal file
@@ -0,0 +1,134 @@
|
||||
# xor two 128-bit values
|
||||
|
||||
128 384
|
||||
2 128 128
|
||||
1 128
|
||||
|
||||
2 1 0 128 256 XOR
|
||||
2 1 1 129 257 XOR
|
||||
2 1 2 130 258 XOR
|
||||
2 1 3 131 259 XOR
|
||||
2 1 4 132 260 XOR
|
||||
2 1 5 133 261 XOR
|
||||
2 1 6 134 262 XOR
|
||||
2 1 7 135 263 XOR
|
||||
2 1 8 136 264 XOR
|
||||
2 1 9 137 265 XOR
|
||||
2 1 10 138 266 XOR
|
||||
2 1 11 139 267 XOR
|
||||
2 1 12 140 268 XOR
|
||||
2 1 13 141 269 XOR
|
||||
2 1 14 142 270 XOR
|
||||
2 1 15 143 271 XOR
|
||||
2 1 16 144 272 XOR
|
||||
2 1 17 145 273 XOR
|
||||
2 1 18 146 274 XOR
|
||||
2 1 19 147 275 XOR
|
||||
2 1 20 148 276 XOR
|
||||
2 1 21 149 277 XOR
|
||||
2 1 22 150 278 XOR
|
||||
2 1 23 151 279 XOR
|
||||
2 1 24 152 280 XOR
|
||||
2 1 25 153 281 XOR
|
||||
2 1 26 154 282 XOR
|
||||
2 1 27 155 283 XOR
|
||||
2 1 28 156 284 XOR
|
||||
2 1 29 157 285 XOR
|
||||
2 1 30 158 286 XOR
|
||||
2 1 31 159 287 XOR
|
||||
2 1 32 160 288 XOR
|
||||
2 1 33 161 289 XOR
|
||||
2 1 34 162 290 XOR
|
||||
2 1 35 163 291 XOR
|
||||
2 1 36 164 292 XOR
|
||||
2 1 37 165 293 XOR
|
||||
2 1 38 166 294 XOR
|
||||
2 1 39 167 295 XOR
|
||||
2 1 40 168 296 XOR
|
||||
2 1 41 169 297 XOR
|
||||
2 1 42 170 298 XOR
|
||||
2 1 43 171 299 XOR
|
||||
2 1 44 172 300 XOR
|
||||
2 1 45 173 301 XOR
|
||||
2 1 46 174 302 XOR
|
||||
2 1 47 175 303 XOR
|
||||
2 1 48 176 304 XOR
|
||||
2 1 49 177 305 XOR
|
||||
2 1 50 178 306 XOR
|
||||
2 1 51 179 307 XOR
|
||||
2 1 52 180 308 XOR
|
||||
2 1 53 181 309 XOR
|
||||
2 1 54 182 310 XOR
|
||||
2 1 55 183 311 XOR
|
||||
2 1 56 184 312 XOR
|
||||
2 1 57 185 313 XOR
|
||||
2 1 58 186 314 XOR
|
||||
2 1 59 187 315 XOR
|
||||
2 1 60 188 316 XOR
|
||||
2 1 61 189 317 XOR
|
||||
2 1 62 190 318 XOR
|
||||
2 1 63 191 319 XOR
|
||||
2 1 64 192 320 XOR
|
||||
2 1 65 193 321 XOR
|
||||
2 1 66 194 322 XOR
|
||||
2 1 67 195 323 XOR
|
||||
2 1 68 196 324 XOR
|
||||
2 1 69 197 325 XOR
|
||||
2 1 70 198 326 XOR
|
||||
2 1 71 199 327 XOR
|
||||
2 1 72 200 328 XOR
|
||||
2 1 73 201 329 XOR
|
||||
2 1 74 202 330 XOR
|
||||
2 1 75 203 331 XOR
|
||||
2 1 76 204 332 XOR
|
||||
2 1 77 205 333 XOR
|
||||
2 1 78 206 334 XOR
|
||||
2 1 79 207 335 XOR
|
||||
2 1 80 208 336 XOR
|
||||
2 1 81 209 337 XOR
|
||||
2 1 82 210 338 XOR
|
||||
2 1 83 211 339 XOR
|
||||
2 1 84 212 340 XOR
|
||||
2 1 85 213 341 XOR
|
||||
2 1 86 214 342 XOR
|
||||
2 1 87 215 343 XOR
|
||||
2 1 88 216 344 XOR
|
||||
2 1 89 217 345 XOR
|
||||
2 1 90 218 346 XOR
|
||||
2 1 91 219 347 XOR
|
||||
2 1 92 220 348 XOR
|
||||
2 1 93 221 349 XOR
|
||||
2 1 94 222 350 XOR
|
||||
2 1 95 223 351 XOR
|
||||
2 1 96 224 352 XOR
|
||||
2 1 97 225 353 XOR
|
||||
2 1 98 226 354 XOR
|
||||
2 1 99 227 355 XOR
|
||||
2 1 100 228 356 XOR
|
||||
2 1 101 229 357 XOR
|
||||
2 1 102 230 358 XOR
|
||||
2 1 103 231 359 XOR
|
||||
2 1 104 232 360 XOR
|
||||
2 1 105 233 361 XOR
|
||||
2 1 106 234 362 XOR
|
||||
2 1 107 235 363 XOR
|
||||
2 1 108 236 364 XOR
|
||||
2 1 109 237 365 XOR
|
||||
2 1 110 238 366 XOR
|
||||
2 1 111 239 367 XOR
|
||||
2 1 112 240 368 XOR
|
||||
2 1 113 241 369 XOR
|
||||
2 1 114 242 370 XOR
|
||||
2 1 115 243 371 XOR
|
||||
2 1 116 244 372 XOR
|
||||
2 1 117 245 373 XOR
|
||||
2 1 118 246 374 XOR
|
||||
2 1 119 247 375 XOR
|
||||
2 1 120 248 376 XOR
|
||||
2 1 121 249 377 XOR
|
||||
2 1 122 250 378 XOR
|
||||
2 1 123 251 379 XOR
|
||||
2 1 124 252 380 XOR
|
||||
2 1 125 253 381 XOR
|
||||
2 1 126 254 382 XOR
|
||||
2 1 127 255 383 XOR
|
||||
262
xor256bits.casm
Normal file
262
xor256bits.casm
Normal file
@@ -0,0 +1,262 @@
|
||||
# xor two 256-bit values
|
||||
|
||||
256 768
|
||||
2 256 256
|
||||
1 256
|
||||
|
||||
2 1 0 256 512 XOR
|
||||
2 1 1 257 513 XOR
|
||||
2 1 2 258 514 XOR
|
||||
2 1 3 259 515 XOR
|
||||
2 1 4 260 516 XOR
|
||||
2 1 5 261 517 XOR
|
||||
2 1 6 262 518 XOR
|
||||
2 1 7 263 519 XOR
|
||||
2 1 8 264 520 XOR
|
||||
2 1 9 265 521 XOR
|
||||
2 1 10 266 522 XOR
|
||||
2 1 11 267 523 XOR
|
||||
2 1 12 268 524 XOR
|
||||
2 1 13 269 525 XOR
|
||||
2 1 14 270 526 XOR
|
||||
2 1 15 271 527 XOR
|
||||
2 1 16 272 528 XOR
|
||||
2 1 17 273 529 XOR
|
||||
2 1 18 274 530 XOR
|
||||
2 1 19 275 531 XOR
|
||||
2 1 20 276 532 XOR
|
||||
2 1 21 277 533 XOR
|
||||
2 1 22 278 534 XOR
|
||||
2 1 23 279 535 XOR
|
||||
2 1 24 280 536 XOR
|
||||
2 1 25 281 537 XOR
|
||||
2 1 26 282 538 XOR
|
||||
2 1 27 283 539 XOR
|
||||
2 1 28 284 540 XOR
|
||||
2 1 29 285 541 XOR
|
||||
2 1 30 286 542 XOR
|
||||
2 1 31 287 543 XOR
|
||||
2 1 32 288 544 XOR
|
||||
2 1 33 289 545 XOR
|
||||
2 1 34 290 546 XOR
|
||||
2 1 35 291 547 XOR
|
||||
2 1 36 292 548 XOR
|
||||
2 1 37 293 549 XOR
|
||||
2 1 38 294 550 XOR
|
||||
2 1 39 295 551 XOR
|
||||
2 1 40 296 552 XOR
|
||||
2 1 41 297 553 XOR
|
||||
2 1 42 298 554 XOR
|
||||
2 1 43 299 555 XOR
|
||||
2 1 44 300 556 XOR
|
||||
2 1 45 301 557 XOR
|
||||
2 1 46 302 558 XOR
|
||||
2 1 47 303 559 XOR
|
||||
2 1 48 304 560 XOR
|
||||
2 1 49 305 561 XOR
|
||||
2 1 50 306 562 XOR
|
||||
2 1 51 307 563 XOR
|
||||
2 1 52 308 564 XOR
|
||||
2 1 53 309 565 XOR
|
||||
2 1 54 310 566 XOR
|
||||
2 1 55 311 567 XOR
|
||||
2 1 56 312 568 XOR
|
||||
2 1 57 313 569 XOR
|
||||
2 1 58 314 570 XOR
|
||||
2 1 59 315 571 XOR
|
||||
2 1 60 316 572 XOR
|
||||
2 1 61 317 573 XOR
|
||||
2 1 62 318 574 XOR
|
||||
2 1 63 319 575 XOR
|
||||
2 1 64 320 576 XOR
|
||||
2 1 65 321 577 XOR
|
||||
2 1 66 322 578 XOR
|
||||
2 1 67 323 579 XOR
|
||||
2 1 68 324 580 XOR
|
||||
2 1 69 325 581 XOR
|
||||
2 1 70 326 582 XOR
|
||||
2 1 71 327 583 XOR
|
||||
2 1 72 328 584 XOR
|
||||
2 1 73 329 585 XOR
|
||||
2 1 74 330 586 XOR
|
||||
2 1 75 331 587 XOR
|
||||
2 1 76 332 588 XOR
|
||||
2 1 77 333 589 XOR
|
||||
2 1 78 334 590 XOR
|
||||
2 1 79 335 591 XOR
|
||||
2 1 80 336 592 XOR
|
||||
2 1 81 337 593 XOR
|
||||
2 1 82 338 594 XOR
|
||||
2 1 83 339 595 XOR
|
||||
2 1 84 340 596 XOR
|
||||
2 1 85 341 597 XOR
|
||||
2 1 86 342 598 XOR
|
||||
2 1 87 343 599 XOR
|
||||
2 1 88 344 600 XOR
|
||||
2 1 89 345 601 XOR
|
||||
2 1 90 346 602 XOR
|
||||
2 1 91 347 603 XOR
|
||||
2 1 92 348 604 XOR
|
||||
2 1 93 349 605 XOR
|
||||
2 1 94 350 606 XOR
|
||||
2 1 95 351 607 XOR
|
||||
2 1 96 352 608 XOR
|
||||
2 1 97 353 609 XOR
|
||||
2 1 98 354 610 XOR
|
||||
2 1 99 355 611 XOR
|
||||
2 1 100 356 612 XOR
|
||||
2 1 101 357 613 XOR
|
||||
2 1 102 358 614 XOR
|
||||
2 1 103 359 615 XOR
|
||||
2 1 104 360 616 XOR
|
||||
2 1 105 361 617 XOR
|
||||
2 1 106 362 618 XOR
|
||||
2 1 107 363 619 XOR
|
||||
2 1 108 364 620 XOR
|
||||
2 1 109 365 621 XOR
|
||||
2 1 110 366 622 XOR
|
||||
2 1 111 367 623 XOR
|
||||
2 1 112 368 624 XOR
|
||||
2 1 113 369 625 XOR
|
||||
2 1 114 370 626 XOR
|
||||
2 1 115 371 627 XOR
|
||||
2 1 116 372 628 XOR
|
||||
2 1 117 373 629 XOR
|
||||
2 1 118 374 630 XOR
|
||||
2 1 119 375 631 XOR
|
||||
2 1 120 376 632 XOR
|
||||
2 1 121 377 633 XOR
|
||||
2 1 122 378 634 XOR
|
||||
2 1 123 379 635 XOR
|
||||
2 1 124 380 636 XOR
|
||||
2 1 125 381 637 XOR
|
||||
2 1 126 382 638 XOR
|
||||
2 1 127 383 639 XOR
|
||||
2 1 128 384 640 XOR
|
||||
2 1 129 385 641 XOR
|
||||
2 1 130 386 642 XOR
|
||||
2 1 131 387 643 XOR
|
||||
2 1 132 388 644 XOR
|
||||
2 1 133 389 645 XOR
|
||||
2 1 134 390 646 XOR
|
||||
2 1 135 391 647 XOR
|
||||
2 1 136 392 648 XOR
|
||||
2 1 137 393 649 XOR
|
||||
2 1 138 394 650 XOR
|
||||
2 1 139 395 651 XOR
|
||||
2 1 140 396 652 XOR
|
||||
2 1 141 397 653 XOR
|
||||
2 1 142 398 654 XOR
|
||||
2 1 143 399 655 XOR
|
||||
2 1 144 400 656 XOR
|
||||
2 1 145 401 657 XOR
|
||||
2 1 146 402 658 XOR
|
||||
2 1 147 403 659 XOR
|
||||
2 1 148 404 660 XOR
|
||||
2 1 149 405 661 XOR
|
||||
2 1 150 406 662 XOR
|
||||
2 1 151 407 663 XOR
|
||||
2 1 152 408 664 XOR
|
||||
2 1 153 409 665 XOR
|
||||
2 1 154 410 666 XOR
|
||||
2 1 155 411 667 XOR
|
||||
2 1 156 412 668 XOR
|
||||
2 1 157 413 669 XOR
|
||||
2 1 158 414 670 XOR
|
||||
2 1 159 415 671 XOR
|
||||
2 1 160 416 672 XOR
|
||||
2 1 161 417 673 XOR
|
||||
2 1 162 418 674 XOR
|
||||
2 1 163 419 675 XOR
|
||||
2 1 164 420 676 XOR
|
||||
2 1 165 421 677 XOR
|
||||
2 1 166 422 678 XOR
|
||||
2 1 167 423 679 XOR
|
||||
2 1 168 424 680 XOR
|
||||
2 1 169 425 681 XOR
|
||||
2 1 170 426 682 XOR
|
||||
2 1 171 427 683 XOR
|
||||
2 1 172 428 684 XOR
|
||||
2 1 173 429 685 XOR
|
||||
2 1 174 430 686 XOR
|
||||
2 1 175 431 687 XOR
|
||||
2 1 176 432 688 XOR
|
||||
2 1 177 433 689 XOR
|
||||
2 1 178 434 690 XOR
|
||||
2 1 179 435 691 XOR
|
||||
2 1 180 436 692 XOR
|
||||
2 1 181 437 693 XOR
|
||||
2 1 182 438 694 XOR
|
||||
2 1 183 439 695 XOR
|
||||
2 1 184 440 696 XOR
|
||||
2 1 185 441 697 XOR
|
||||
2 1 186 442 698 XOR
|
||||
2 1 187 443 699 XOR
|
||||
2 1 188 444 700 XOR
|
||||
2 1 189 445 701 XOR
|
||||
2 1 190 446 702 XOR
|
||||
2 1 191 447 703 XOR
|
||||
2 1 192 448 704 XOR
|
||||
2 1 193 449 705 XOR
|
||||
2 1 194 450 706 XOR
|
||||
2 1 195 451 707 XOR
|
||||
2 1 196 452 708 XOR
|
||||
2 1 197 453 709 XOR
|
||||
2 1 198 454 710 XOR
|
||||
2 1 199 455 711 XOR
|
||||
2 1 200 456 712 XOR
|
||||
2 1 201 457 713 XOR
|
||||
2 1 202 458 714 XOR
|
||||
2 1 203 459 715 XOR
|
||||
2 1 204 460 716 XOR
|
||||
2 1 205 461 717 XOR
|
||||
2 1 206 462 718 XOR
|
||||
2 1 207 463 719 XOR
|
||||
2 1 208 464 720 XOR
|
||||
2 1 209 465 721 XOR
|
||||
2 1 210 466 722 XOR
|
||||
2 1 211 467 723 XOR
|
||||
2 1 212 468 724 XOR
|
||||
2 1 213 469 725 XOR
|
||||
2 1 214 470 726 XOR
|
||||
2 1 215 471 727 XOR
|
||||
2 1 216 472 728 XOR
|
||||
2 1 217 473 729 XOR
|
||||
2 1 218 474 730 XOR
|
||||
2 1 219 475 731 XOR
|
||||
2 1 220 476 732 XOR
|
||||
2 1 221 477 733 XOR
|
||||
2 1 222 478 734 XOR
|
||||
2 1 223 479 735 XOR
|
||||
2 1 224 480 736 XOR
|
||||
2 1 225 481 737 XOR
|
||||
2 1 226 482 738 XOR
|
||||
2 1 227 483 739 XOR
|
||||
2 1 228 484 740 XOR
|
||||
2 1 229 485 741 XOR
|
||||
2 1 230 486 742 XOR
|
||||
2 1 231 487 743 XOR
|
||||
2 1 232 488 744 XOR
|
||||
2 1 233 489 745 XOR
|
||||
2 1 234 490 746 XOR
|
||||
2 1 235 491 747 XOR
|
||||
2 1 236 492 748 XOR
|
||||
2 1 237 493 749 XOR
|
||||
2 1 238 494 750 XOR
|
||||
2 1 239 495 751 XOR
|
||||
2 1 240 496 752 XOR
|
||||
2 1 241 497 753 XOR
|
||||
2 1 242 498 754 XOR
|
||||
2 1 243 499 755 XOR
|
||||
2 1 244 500 756 XOR
|
||||
2 1 245 501 757 XOR
|
||||
2 1 246 502 758 XOR
|
||||
2 1 247 503 759 XOR
|
||||
2 1 248 504 760 XOR
|
||||
2 1 249 505 761 XOR
|
||||
2 1 250 506 762 XOR
|
||||
2 1 251 507 763 XOR
|
||||
2 1 252 508 764 XOR
|
||||
2 1 253 509 765 XOR
|
||||
2 1 254 510 766 XOR
|
||||
2 1 255 511 767 XOR
|
||||
38
xor32bits.casm
Normal file
38
xor32bits.casm
Normal file
@@ -0,0 +1,38 @@
|
||||
# xor two 32-bit values
|
||||
|
||||
32 96
|
||||
2 32 32
|
||||
1 32
|
||||
|
||||
2 1 0 32 64 XOR
|
||||
2 1 1 33 65 XOR
|
||||
2 1 2 34 66 XOR
|
||||
2 1 3 35 67 XOR
|
||||
2 1 4 36 68 XOR
|
||||
2 1 5 37 69 XOR
|
||||
2 1 6 38 70 XOR
|
||||
2 1 7 39 71 XOR
|
||||
2 1 8 40 72 XOR
|
||||
2 1 9 41 73 XOR
|
||||
2 1 10 42 74 XOR
|
||||
2 1 11 43 75 XOR
|
||||
2 1 12 44 76 XOR
|
||||
2 1 13 45 77 XOR
|
||||
2 1 14 46 78 XOR
|
||||
2 1 15 47 79 XOR
|
||||
2 1 16 48 80 XOR
|
||||
2 1 17 49 81 XOR
|
||||
2 1 18 50 82 XOR
|
||||
2 1 19 51 83 XOR
|
||||
2 1 20 52 84 XOR
|
||||
2 1 21 53 85 XOR
|
||||
2 1 22 54 86 XOR
|
||||
2 1 23 55 87 XOR
|
||||
2 1 24 56 88 XOR
|
||||
2 1 25 57 89 XOR
|
||||
2 1 26 58 90 XOR
|
||||
2 1 27 59 91 XOR
|
||||
2 1 28 60 92 XOR
|
||||
2 1 29 61 93 XOR
|
||||
2 1 30 62 94 XOR
|
||||
2 1 31 63 95 XOR
|
||||
Reference in New Issue
Block a user