Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
sjcl.mode.ccm = { name: "ccm", encrypt: function(a, b, c, d, e) { var f, g = b.slice(0), h = sjcl.bitArray, l = h.bitLength(c) / 8, k = h.bitLength(g) / 8; e = e || 64; d = d || []; 7 > l && q(new sjcl.exception.invalid("ccm: iv must be at least 7 bytes")); for (f = 2; 4 > f && k >>> 8 * f; f++) ; f < 15 - l && (f = 15 - l); c = h.clamp(c, 8 * (15 - f)); b = sjcl.mode.ccm.K(a, b, c, d, e, f); g = sjcl.mode.ccm.n(a, g, c, b, e, f); return h.concat(g.data, g.tag) }, decrypt: function(a, b, c, d, e) { e = e || 64; d = d || []; var f = sjcl.bitArray , g = f.bitLength(c) / 8 , h = f.bitLength(b) , l = f.clamp(b, h - e) , k = f.bitSlice(b, h - e) , h = (h - e) / 8; 7 > g && q(new sjcl.exception.invalid("ccm: iv must be at least 7 bytes")); for (b = 2; 4 > b && h >>> 8 * b; b++) ; b < 15 - g && (b = 15 - g); c = f.clamp(c, 8 * (15 - b)); l = sjcl.mode.ccm.n(a, l, c, k, e, b); a = sjcl.mode.ccm.K(a, l.data, c, d, e, b); f.equal(l.tag, a) || q(new sjcl.exception.corrupt("ccm: tag doesn't match")); return l.data }, K: function(a, b, c, d, e, f) { var g = [] , h = sjcl.bitArray , l = h.k; e /= 8; (e % 2 || 4 > e || 16 < e) && q(new sjcl.exception.invalid("ccm: invalid tag length")); (0xffffffff < d.length || 0xffffffff < b.length) && q(new sjcl.exception.bug("ccm: can't deal with 4GiB or more data")); f = [h.partial(8, (d.length ? 64 : 0) | e - 2 << 2 | f - 1)]; f = h.concat(f, c); f[3] |= h.bitLength(b) / 8; f = a.encrypt(f); if (d.length) { c = h.bitLength(d) / 8; 65279 >= c ? g = [h.partial(16, c)] : 0xffffffff >= c && (g = h.concat([h.partial(16, 65534)], [c])); g = h.concat(g, d); for (d = 0; d < g.length; d += 4) f = a.encrypt(l(f, g.slice(d, d + 4).concat([0, 0, 0]))) } for (d = 0; d < b.length; d += 4) f = a.encrypt(l(f, b.slice(d, d + 4).concat([0, 0, 0]))); return h.clamp(f, 8 * e) }, n: function(a, b, c, d, e, f) { var g, h = sjcl.bitArray; g = h.k; var l = b.length , k = h.bitLength(b); c = h.concat([h.partial(8, f - 1)], c).concat([0, 0, 0]).slice(0, 4); d = h.bitSlice(g(d, a.encrypt(c)), 0, e); if (!l) return { tag: d, data: [] }; for (g = 0; g < l; g += 4) c[3]++, e = a.encrypt(c), b[g] ^= e[0], b[g + 1] ^= e[1], b[g + 2] ^= e[2], b[g + 3] ^= e[3]; return { tag: d, data: h.clamp(b, k) } } };
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)