| 868 | `,$+=H;var D=ov8("putty-private-key-file-mac-key",K),f=TX.util.createBuffer();fk6(f,z),fk6(f,Y),fk6(f,_),f.putInt32(A.length()),f.putBuffer(A),f.putInt32(j.length()),f.putBuffer(j);var G=TX.hmac.create();return G.start("sha1",D),G.update(f.bytes()),$+=`\r |
| 870 | `,$};av8.publicKeyToOpenSSH=function(q,K){var _="ssh-rsa";K=K||"";var z=TX.util.createBuffer();return fk6(z,_),QF(z,q.e),QF(z,q.n),_+" "+TX.util.encode64(z.bytes())+" "+K};av8.privateKeyToOpenSSH=function(q,K){if(!K)return TX.pki.privateKeyToPem(q);return TX.pki.encryptRsaPrivateKey(q,K,{legacy:!0,algorithm:"aes128"})};av8.getPublicKeyFingerprint=function(q,K){K=K||{};var _=K.md||TX.md.md5.create(),z="ssh-rsa",Y=TX.util.createBuffer();fk6(Y,z),QF(Y,q.e),QF(Y,q.n),_.start(),_.update(Y.getBytes());var $=_.digest();if(K.encoding==="hex"){var A=$.toHex();if(K.delimiter)return A.match(/.{2}/g).join(K.delimiter);return A}else if(K.encoding==="binary")return $.getBytes();else if(K.encoding)throw Error('Unknown encoding "'+K.encoding+'".');return $};function QF(q,K){var _=K.toString(16);if(_[0]>="8")_="00"+_;var z=TX.util.hexToBytes(_);q.putInt32(z.length),q.putBytes(z)}function fk6(q,K){q.putInt32(K.length),q.putString(K)}function ov8(){var q=TX.md.sha1.create(),K=arguments.length;for(var _=0;_<K;++_)q.update(arguments[_]);return q.digest()}});var z24=m((ClA,_24)=>{_24.exports=E_();h76();yw4();Iu();Gv8();Ei6();Qw4();Yk6();nw4();rw4();aw4();Rb1();Sv8();JO6();vb1();Cb1();ew4();xb1();Vb1();Xb1();pv8();WC();Db1();K24();gb1();_$()});import{execFile as BU_}from"child_process";import{readFileSync as Zk6,writeFileSync as $24}from"fs";import{mkdtemp as gU_,rm as FU_,writeFile as UU_}from"fs/promises";import{tmpdir as QU_}from"os";import{join as Y24}from"path";import{promisify as dU_}from"util";function cU_(q,K,_,z){let Y=Zk6(q),$=Zk6(K,"utf-8"),A=Zk6(_,"utf-8"),O=z?.map((W)=>Zk6(W,"utf-8")),w=NH.default.pkcs7.createSignedData();w.content=NH.default.util.createBuffer(Y);let j=NH.default.pki.certificateFromPem($),H=NH.default.pki.privateKeyFromPem(A);if(w.addCertificate(j),O)for(let W of O)w.addCertificate(NH.default.pki.certificateFromPem(W));w.addSigner({key:H,certificate:j,digestAlgorithm:NH.default.pki.oids.sha256,authenticatedAttributes:[{type:NH.default.pki.oids.contentType,value:NH.default.pki.oids.data},{type:NH.default.pki.oids.messageDigest},{type:NH.default.pki.oids.signingTime}]}),w.sign({detached:!0});let J=NH.default.asn1.toDer(w.toAsn1()),M=Buffer.from(J.getBytes(),"binary"),X=nU_(M),P=Buffer.concat([Y,X]);$24(q,P)}async function lU_(q){try{let K=Zk6(q),{originalContent:_,pkcs7Signature:z}=mi6(K);if(!z)return{status:"unsigned"};let Y=NH.default.asn1.fromDer(z.toString("binary")),$=NH.default.pkcs7.messageFromAsn1(Y);if(!("type"in $)||$.type!==NH.default.pki.oids.signedData)return{status:"unsigned"};let A=$,O=A.certificates||[];if(O.length===0)return{status:"unsigned"};let w=O[0],j=NH.default.util.createBuffer(_);try{A.verify({authenticatedAttributes:!0});let W=A.signerInfos?.[0];if(W){let D=NH.default.md.sha256.create();D.update(j.getBytes());let f=D.digest().getBytes(),G=null;for(let Z of W.authenticatedAttributes)if(Z.type===NH.default.pki.oids.messageDigest){G=Z.value;break}if(!G||G!==f)return{status:"unsigned"}}}catch(P){return{status:"unsigned"}}let H=NH.default.pki.certificateToPem(w),J=O.slice(1).map((P)=>Buffer.from(NH.default.pki.certificateToPem(P)));if(!await w24(Buffer.from(H),J))return{status:"unsigned"};return{status:w.issuer.getField("CN")?.value===w.subject.getField("CN")?.value?"self-signed":"signed",publisher:w.subject.getField("CN")?.value||"Unknown",issuer:w.issuer.getField("CN")?.value||"Unknown",valid_from:w.validity.notBefore.toISOString(),valid_to:w.validity.notAfter.toISOString(),fingerprint:NH.default.md.sha256.create().update(NH.default.asn1.toDer(NH.default.pki.certificateToAsn1(w)).getBytes()).digest().toHex()}}catch(K){throw Error(`Failed to verify MCPB file: ${K}`)}}function nU_(q){let K=[];K.push(Buffer.from(A24,"utf-8"));let _=Buffer.alloc(4);return _.writeUInt32LE(q.length,0),K.push(_),K.push(q),K.push(Buffer.from(O24,"utf-8")),Buffer.concat(K)}function mi6(q){let K=Buffer.from(O24,"utf-8"),_=q.lastIndexOf(K);if(_===-1)return{originalContent:q};let z=Buffer.from(A24,"utf-8"),Y=-1;for(let O=_-1;O>=0;O--)if(q.slice(O,O+z.length).equals(z)){Y=O;break}if(Y===-1)return{originalContent:q};let $=q.slice(0,Y),A=Y+z.length;try{let O=q.readUInt32LE(A);A+=4;let w=q.slice(A,A+O);return{originalContent:$,pkcs7Signature:w}}catch{return{originalContent:q}}}async function w24(q,K){let _=null;try{_=await gU_(Y24(QU_(),"mcpb-verify-"));let z=Y24(_,"chain.pem"),Y=[q,...K||[]].join(` |