From eb6357f6bb0dd26024d2afe1dbb401ff4a2ee057 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 19 Jan 2025 15:10:32 +0800 Subject: [PATCH] feat: update deno-sshsig-mod.ts --- .gitignore | 1 + libraries/deno-sshsig-mod.ts | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index cffe83e..9971fa5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +*.sshsig .idea/ # ---> macOS # General diff --git a/libraries/deno-sshsig-mod.ts b/libraries/deno-sshsig-mod.ts index c14c346..8c4b9e3 100644 --- a/libraries/deno-sshsig-mod.ts +++ b/libraries/deno-sshsig-mod.ts @@ -1,7 +1,7 @@ -import { crypto } from "jsr:@std/crypto"; -import { decodeBase64, encodeBase64 } from "jsr:@std/encoding/base64"; -import { encodeBase64Url } from "jsr:@std/encoding/base64url"; -import { decodeHex, encodeHex } from "jsr:@std/encoding/hex"; +import {crypto} from "jsr:@std/crypto"; +import {decodeBase64, encodeBase64} from "jsr:@std/encoding/base64"; +import {encodeBase64Url} from "jsr:@std/encoding/base64url"; +import {decodeHex, encodeHex} from "jsr:@std/encoding/hex"; // IMPORTANT: ONLY supports ECDSA P256 and P384 @@ -285,12 +285,18 @@ export class SshSignatureValue { // crypto.subtle.sign's signature is R and S toRs(): Uint8Array { const writer = new BinaryWriter(); - if (this.ecSignatureR.byteLength === 0x21) { + if ( + this.ecSignatureR.byteLength === 0x21 || + this.ecSignatureR.byteLength === 0x31 + ) { writer.writeBytes(this.ecSignatureR.slice(1)); } else { writer.writeBytes(this.ecSignatureR); } - if (this.ecSignatureS.byteLength === 0x21) { + if ( + this.ecSignatureS.byteLength === 0x21 || + this.ecSignatureS.byteLength === 0x31 + ) { writer.writeBytes(this.ecSignatureS.slice(1)); } else { writer.writeBytes(this.ecSignatureS);