TSEC: Difference between revisions
Line 1,807: | Line 1,807: | ||
| 9 || ? || || || || | | 9 || ? || || || || | ||
|- | |- | ||
| 0xA || chmod || $cX || immY || <code>ACL(X) &= | | 0xA || chmod || $cX || immY || <code>if (immY & 3) ACL(X) = (ACL(X) & immY) | 1; else ACL(X) = 0;</code> || | ||
|- | |- | ||
| 0xB || xor || $cX || $cY || <code>$cX ^= $cY;</code> || <code>(ACL(X) & 2) && (ACL(Y) & 2)</code> | | 0xB || xor || $cX || $cY || <code>$cX ^= $cY;</code> || <code>(ACL(X) & 2) && (ACL(Y) & 2)</code> | ||
Line 1,815: | Line 1,815: | ||
| 0xD || and || $cX || $cY || <code>$cX &= $cY;</code> || <code>(ACL(X) & 2) && (ACL(Y) & 2)</code> | | 0xD || and || $cX || $cY || <code>$cX &= $cY;</code> || <code>(ACL(X) & 2) && (ACL(Y) & 2)</code> | ||
|- | |- | ||
| 0xE || rev || $cX || $cY || <code>$cX = reverse($cY); ACL(X) = ACL(Y) | | 0xE || rev || $cX || $cY || <code>$cX = reverse($cY); ACL(X) = ACL(Y);</code> || <code>(ACL(Y) & 1)</code> | ||
|- | |- | ||
| 0xF || gfmul || $cX || $cY || <code>$cX = gfmul($cY); ACL(X) = ACL(Y) | | 0xF || gfmul || $cX || $cY || <code>$cX = gfmul($cY); ACL(X) = ACL(Y);</code> || <code>(ACL(Y) & 2)</code> | ||
|- | |- | ||
| 0x10 || secret || $cX || immY || <code>$cX = load_secret(immY); ACL(X) = load_secret_acl(immY);</code> || | | 0x10 || secret || $cX || immY || <code>$cX = load_secret(immY); ACL(X) = load_secret_acl(immY);</code> || | ||
Line 1,823: | Line 1,823: | ||
| 0x11 || keyreg || immX || || <code>active_key_idx = immX;</code> || | | 0x11 || keyreg || immX || || <code>active_key_idx = immX;</code> || | ||
|- | |- | ||
| 0x12 || kexp || $cX || $cY || <code>$cX = aes_kexp($cY);</code> || <code>(ACL(Y) & | | 0x12 || kexp || $cX || $cY || <code>$cX = aes_kexp($cY); ACL(X) = ACL(Y);</code> || <code>(ACL(Y) & 1)</code> | ||
|- | |- | ||
| 0x13 || krexp || $cX || $cY || <code>$cX = aes_kexp_reverse($cY);</code> || <code>(ACL(Y) & | | 0x13 || krexp || $cX || $cY || <code>$cX = aes_kexp_reverse($cY); ACL(X) = ACL(Y);</code> || <code>(ACL(Y) & 1)</code> | ||
|- | |- | ||
| 0x14 || enc || $cX || $cY || <code>$cX = aes_enc(active_key_idx, $cY);</code> || <code>(ACL(active_key_idx) & | | 0x14 || enc || $cX || $cY || <code>$cX = aes_enc(active_key_idx, $cY);</code> || <code>(ACL(active_key_idx) & 1) && (ACL(Y) & 2)</code> | ||
|- | |- | ||
| 0x15 || dec || $cX || $cY || <code>$cX = aes_dec(active_key_idx, $cY);</code> || <code>(ACL(active_key_idx) & | | 0x15 || dec || $cX || $cY || <code>$cX = aes_dec(active_key_idx, $cY);</code> || <code>(ACL(active_key_idx) & 1) && (ACL(Y) & 2)</code> | ||
|- | |- | ||
| ... | | ... | ||
Line 1,839: | Line 1,839: | ||
! Meaning | ! Meaning | ||
|- | |- | ||
| 0 || | | 0 || Present. This is forced set if bit1 is set, the only way to clear it is to clear *both* bit0 and bit1. | ||
|- | |- | ||
| 1 || Allowed input | | 1 || Allowed as input | ||
|} | |} | ||