@@ -3,6 +3,13 @@ import type { DiffieHellman as DiffieHellmanInterface } from './specs/diffie-hel
33import { Buffer } from '@craftzdog/react-native-buffer' ;
44import { DH_GROUPS } from './dh-groups' ;
55
6+ function toArrayBufferExact ( buf : Buffer ) : ArrayBuffer {
7+ return buf . buffer . slice (
8+ buf . byteOffset ,
9+ buf . byteOffset + buf . byteLength ,
10+ ) as ArrayBuffer ;
11+ }
12+
613export class DiffieHellman {
714 private _hybrid : DiffieHellmanInterface ;
815
@@ -37,8 +44,8 @@ export class DiffieHellman {
3744 }
3845
3946 this . _hybrid . init (
40- primeBuf . buffer as ArrayBuffer ,
41- genBuf . buffer as ArrayBuffer ,
47+ toArrayBufferExact ( primeBuf ) ,
48+ toArrayBufferExact ( genBuf ) ,
4249 ) ;
4350 }
4451 }
@@ -62,7 +69,7 @@ export class DiffieHellman {
6269 }
6370
6471 const secret = Buffer . from (
65- this . _hybrid . computeSecret ( keyBuf . buffer as ArrayBuffer ) ,
72+ this . _hybrid . computeSecret ( toArrayBufferExact ( keyBuf ) ) ,
6673 ) ;
6774 if ( outputEncoding ) return secret . toString ( outputEncoding ) ;
6875 return secret ;
@@ -99,7 +106,7 @@ export class DiffieHellman {
99106 } else {
100107 keyBuf = Buffer . from ( publicKey , encoding ) ;
101108 }
102- this . _hybrid . setPublicKey ( keyBuf . buffer as ArrayBuffer ) ;
109+ this . _hybrid . setPublicKey ( toArrayBufferExact ( keyBuf ) ) ;
103110 }
104111
105112 setPrivateKey ( privateKey : Buffer | string , encoding ?: BufferEncoding ) : void {
@@ -109,7 +116,7 @@ export class DiffieHellman {
109116 } else {
110117 keyBuf = Buffer . from ( privateKey , encoding ) ;
111118 }
112- this . _hybrid . setPrivateKey ( keyBuf . buffer as ArrayBuffer ) ;
119+ this . _hybrid . setPrivateKey ( toArrayBufferExact ( keyBuf ) ) ;
113120 }
114121
115122 get verifyError ( ) : number {
0 commit comments