Skip to content

Commit 25ec83d

Browse files
committed
Fixing PSS encoding bug
1 parent e483675 commit 25ec83d

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

src/rsa/emsa_pss.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export function emsa_pss_encode(
3030
const maskedDB = xor(db, dbMask);
3131

3232
const leftMost = 8 * emLen - emBits;
33-
maskedDB[0] = maskedDB[0] && (0xff >> leftMost);
33+
maskedDB[0] = maskedDB[0] & (0xff >> leftMost);
3434

3535
return new Uint8Array([...maskedDB, ...h, 0xbc]);
3636
}
@@ -57,7 +57,7 @@ export function emsa_pss_verify(
5757

5858
const dbMask = mgf1(h, emLen - hLen - 1, algorithm);
5959
const db = xor(maskedDB, dbMask);
60-
db[0] = db[0] && (0xff >> leftMost);
60+
db[0] = db[0] & (0xff >> leftMost);
6161

6262
for (let i = 1; i < emLen - hLen - sLen - 2; i++) {
6363
if (db[i] !== 0x00) return false;

src/rsa/rsa_internal.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ export function rsa_pkcs1_sign(
138138
n: bigint,
139139
d: bigint,
140140
message: Uint8Array,
141+
algorithm: RSAHashAlgorithm,
141142
): RawBinary {
142143
// deno-fmt-ignore
143144
const oid = [
@@ -153,10 +154,11 @@ export function rsa_pkcs1_sign(
153154
0x03,
154155
0x04,
155156
0x02,
156-
0x01,
157+
algorithm === "sha512" ? 0x03 : 0x01, // <--
157158
0x05,
158159
0x00,
159160
];
161+
160162
const der = [
161163
0x30,
162164
message.length + 2 + oid.length,

src/rsa/rsa_js.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ export class PureRSA {
6969
key.n,
7070
key.d,
7171
digest(options.hash, message),
72+
options.hash,
7273
);
7374
} else {
7475
return rsassa_pss_sign(key, message, options.hash);

0 commit comments

Comments
 (0)