MCPcopy Index your code
hub / github.com/nodejs/node / DiffieHellman

Function DiffieHellman

lib/internal/crypto/diffiehellman.js:83–140  ·  view source on GitHub ↗
(sizeOrKey, keyEncoding, generator, genEncoding)

Source from the content-addressed store, hash-verified

81const DH_GENERATOR = 2;
82
83function DiffieHellman(sizeOrKey, keyEncoding, generator, genEncoding) {
84 if (!(this instanceof DiffieHellman))
85 return new DiffieHellman(sizeOrKey, keyEncoding, generator, genEncoding);
86
87 if (typeof sizeOrKey !== 'number' &&
88 typeof sizeOrKey !== 'string' &&
89 !isArrayBufferView(sizeOrKey) &&
90 !isAnyArrayBuffer(sizeOrKey)) {
91 throw new ERR_INVALID_ARG_TYPE(
92 'sizeOrKey',
93 ['number', 'string', 'ArrayBuffer', 'Buffer', 'TypedArray', 'DataView'],
94 sizeOrKey,
95 );
96 }
97
98 // Sizes < 0 don't make sense but they _are_ accepted (and subsequently
99 // rejected with ERR_OSSL_BN_BITS_TOO_SMALL) by OpenSSL. The glue code
100 // in node_crypto.cc accepts values that are IsInt32() for that reason
101 // and that's why we do that here too.
102 if (typeof sizeOrKey === 'number') {
103 validateInt32(sizeOrKey, 'sizeOrKey');
104 // Coerce -0 to +0.
105 sizeOrKey += 0;
106 }
107
108 if (keyEncoding && !Buffer.isEncoding(keyEncoding) &&
109 keyEncoding !== 'buffer') {
110 genEncoding = generator;
111 generator = keyEncoding;
112 keyEncoding = false;
113 }
114
115 if (typeof sizeOrKey !== 'number')
116 sizeOrKey = toBuf(sizeOrKey, keyEncoding);
117
118 if (!generator) {
119 generator = DH_GENERATOR;
120 } else if (typeof generator === 'number') {
121 validateInt32(generator, 'generator');
122 } else if (typeof generator === 'string') {
123 generator = toBuf(generator, genEncoding);
124 } else if (!isArrayBufferView(generator) && !isAnyArrayBuffer(generator)) {
125 throw new ERR_INVALID_ARG_TYPE(
126 'generator',
127 ['number', 'string', 'ArrayBuffer', 'Buffer', 'TypedArray', 'DataView'],
128 generator,
129 );
130 }
131
132
133 this[kHandle] = new _DiffieHellman(sizeOrKey, generator);
134 ObjectDefineProperty(this, 'verifyError', {
135 __proto__: null,
136 enumerable: true,
137 value: this[kHandle].verifyError,
138 writable: false,
139 });
140}

Callers 1

Calls 1

toBufFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…