50 lines
		
	
	
		
			907 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			907 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
var utils = require('../utils');
 | 
						|
var rotr32 = utils.rotr32;
 | 
						|
 | 
						|
function ft_1(s, x, y, z) {
 | 
						|
  if (s === 0)
 | 
						|
    return ch32(x, y, z);
 | 
						|
  if (s === 1 || s === 3)
 | 
						|
    return p32(x, y, z);
 | 
						|
  if (s === 2)
 | 
						|
    return maj32(x, y, z);
 | 
						|
}
 | 
						|
exports.ft_1 = ft_1;
 | 
						|
 | 
						|
function ch32(x, y, z) {
 | 
						|
  return (x & y) ^ ((~x) & z);
 | 
						|
}
 | 
						|
exports.ch32 = ch32;
 | 
						|
 | 
						|
function maj32(x, y, z) {
 | 
						|
  return (x & y) ^ (x & z) ^ (y & z);
 | 
						|
}
 | 
						|
exports.maj32 = maj32;
 | 
						|
 | 
						|
function p32(x, y, z) {
 | 
						|
  return x ^ y ^ z;
 | 
						|
}
 | 
						|
exports.p32 = p32;
 | 
						|
 | 
						|
function s0_256(x) {
 | 
						|
  return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
 | 
						|
}
 | 
						|
exports.s0_256 = s0_256;
 | 
						|
 | 
						|
function s1_256(x) {
 | 
						|
  return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
 | 
						|
}
 | 
						|
exports.s1_256 = s1_256;
 | 
						|
 | 
						|
function g0_256(x) {
 | 
						|
  return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
 | 
						|
}
 | 
						|
exports.g0_256 = g0_256;
 | 
						|
 | 
						|
function g1_256(x) {
 | 
						|
  return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
 | 
						|
}
 | 
						|
exports.g1_256 = g1_256;
 |