algs.js (4866B)
1 // Copyright 2015 Joyent, Inc. 2 3 var Buffer = require('safer-buffer').Buffer; 4 5 var algInfo = { 6 'dsa': { 7 parts: ['p', 'q', 'g', 'y'], 8 sizePart: 'p' 9 }, 10 'rsa': { 11 parts: ['e', 'n'], 12 sizePart: 'n' 13 }, 14 'ecdsa': { 15 parts: ['curve', 'Q'], 16 sizePart: 'Q' 17 }, 18 'ed25519': { 19 parts: ['A'], 20 sizePart: 'A' 21 } 22 }; 23 algInfo['curve25519'] = algInfo['ed25519']; 24 25 var algPrivInfo = { 26 'dsa': { 27 parts: ['p', 'q', 'g', 'y', 'x'] 28 }, 29 'rsa': { 30 parts: ['n', 'e', 'd', 'iqmp', 'p', 'q'] 31 }, 32 'ecdsa': { 33 parts: ['curve', 'Q', 'd'] 34 }, 35 'ed25519': { 36 parts: ['A', 'k'] 37 } 38 }; 39 algPrivInfo['curve25519'] = algPrivInfo['ed25519']; 40 41 var hashAlgs = { 42 'md5': true, 43 'sha1': true, 44 'sha256': true, 45 'sha384': true, 46 'sha512': true 47 }; 48 49 /* 50 * Taken from 51 * http://csrc.nist.gov/groups/ST/toolkit/documents/dss/NISTReCur.pdf 52 */ 53 var curves = { 54 'nistp256': { 55 size: 256, 56 pkcs8oid: '1.2.840.10045.3.1.7', 57 p: Buffer.from(('00' + 58 'ffffffff 00000001 00000000 00000000' + 59 '00000000 ffffffff ffffffff ffffffff'). 60 replace(/ /g, ''), 'hex'), 61 a: Buffer.from(('00' + 62 'FFFFFFFF 00000001 00000000 00000000' + 63 '00000000 FFFFFFFF FFFFFFFF FFFFFFFC'). 64 replace(/ /g, ''), 'hex'), 65 b: Buffer.from(( 66 '5ac635d8 aa3a93e7 b3ebbd55 769886bc' + 67 '651d06b0 cc53b0f6 3bce3c3e 27d2604b'). 68 replace(/ /g, ''), 'hex'), 69 s: Buffer.from(('00' + 70 'c49d3608 86e70493 6a6678e1 139d26b7' + 71 '819f7e90'). 72 replace(/ /g, ''), 'hex'), 73 n: Buffer.from(('00' + 74 'ffffffff 00000000 ffffffff ffffffff' + 75 'bce6faad a7179e84 f3b9cac2 fc632551'). 76 replace(/ /g, ''), 'hex'), 77 G: Buffer.from(('04' + 78 '6b17d1f2 e12c4247 f8bce6e5 63a440f2' + 79 '77037d81 2deb33a0 f4a13945 d898c296' + 80 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16' + 81 '2bce3357 6b315ece cbb64068 37bf51f5'). 82 replace(/ /g, ''), 'hex') 83 }, 84 'nistp384': { 85 size: 384, 86 pkcs8oid: '1.3.132.0.34', 87 p: Buffer.from(('00' + 88 'ffffffff ffffffff ffffffff ffffffff' + 89 'ffffffff ffffffff ffffffff fffffffe' + 90 'ffffffff 00000000 00000000 ffffffff'). 91 replace(/ /g, ''), 'hex'), 92 a: Buffer.from(('00' + 93 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + 94 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE' + 95 'FFFFFFFF 00000000 00000000 FFFFFFFC'). 96 replace(/ /g, ''), 'hex'), 97 b: Buffer.from(( 98 'b3312fa7 e23ee7e4 988e056b e3f82d19' + 99 '181d9c6e fe814112 0314088f 5013875a' + 100 'c656398d 8a2ed19d 2a85c8ed d3ec2aef'). 101 replace(/ /g, ''), 'hex'), 102 s: Buffer.from(('00' + 103 'a335926a a319a27a 1d00896a 6773a482' + 104 '7acdac73'). 105 replace(/ /g, ''), 'hex'), 106 n: Buffer.from(('00' + 107 'ffffffff ffffffff ffffffff ffffffff' + 108 'ffffffff ffffffff c7634d81 f4372ddf' + 109 '581a0db2 48b0a77a ecec196a ccc52973'). 110 replace(/ /g, ''), 'hex'), 111 G: Buffer.from(('04' + 112 'aa87ca22 be8b0537 8eb1c71e f320ad74' + 113 '6e1d3b62 8ba79b98 59f741e0 82542a38' + 114 '5502f25d bf55296c 3a545e38 72760ab7' + 115 '3617de4a 96262c6f 5d9e98bf 9292dc29' + 116 'f8f41dbd 289a147c e9da3113 b5f0b8c0' + 117 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'). 118 replace(/ /g, ''), 'hex') 119 }, 120 'nistp521': { 121 size: 521, 122 pkcs8oid: '1.3.132.0.35', 123 p: Buffer.from(( 124 '01ffffff ffffffff ffffffff ffffffff' + 125 'ffffffff ffffffff ffffffff ffffffff' + 126 'ffffffff ffffffff ffffffff ffffffff' + 127 'ffffffff ffffffff ffffffff ffffffff' + 128 'ffff').replace(/ /g, ''), 'hex'), 129 a: Buffer.from(('01FF' + 130 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + 131 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + 132 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + 133 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC'). 134 replace(/ /g, ''), 'hex'), 135 b: Buffer.from(('51' + 136 '953eb961 8e1c9a1f 929a21a0 b68540ee' + 137 'a2da725b 99b315f3 b8b48991 8ef109e1' + 138 '56193951 ec7e937b 1652c0bd 3bb1bf07' + 139 '3573df88 3d2c34f1 ef451fd4 6b503f00'). 140 replace(/ /g, ''), 'hex'), 141 s: Buffer.from(('00' + 142 'd09e8800 291cb853 96cc6717 393284aa' + 143 'a0da64ba').replace(/ /g, ''), 'hex'), 144 n: Buffer.from(('01ff' + 145 'ffffffff ffffffff ffffffff ffffffff' + 146 'ffffffff ffffffff ffffffff fffffffa' + 147 '51868783 bf2f966b 7fcc0148 f709a5d0' + 148 '3bb5c9b8 899c47ae bb6fb71e 91386409'). 149 replace(/ /g, ''), 'hex'), 150 G: Buffer.from(('04' + 151 '00c6 858e06b7 0404e9cd 9e3ecb66 2395b442' + 152 '9c648139 053fb521 f828af60 6b4d3dba' + 153 'a14b5e77 efe75928 fe1dc127 a2ffa8de' + 154 '3348b3c1 856a429b f97e7e31 c2e5bd66' + 155 '0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9' + 156 '98f54449 579b4468 17afbd17 273e662c' + 157 '97ee7299 5ef42640 c550b901 3fad0761' + 158 '353c7086 a272c240 88be9476 9fd16650'). 159 replace(/ /g, ''), 'hex') 160 } 161 }; 162 163 module.exports = { 164 info: algInfo, 165 privInfo: algPrivInfo, 166 hashAlgs: hashAlgs, 167 curves: curves 168 };