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;
 |