Skip to content

Commit 5211538

Browse files
committed
fix(apns): validate and format APNs private key before use
1 parent 1ba2342 commit 5211538

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

packages/providers/src/lib/push/apns/apns.provider.ts

+17-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export class APNSPushProvider extends BaseProvider implements IPushProvider {
3535
this.config = config;
3636
this.provider = new apn.Provider({
3737
token: {
38-
key: config.key,
38+
key: this.validateAndFormatKey(config.key),
3939
keyId: config.keyId,
4040
teamId: config.teamId,
4141
},
@@ -73,4 +73,20 @@ export class APNSPushProvider extends BaseProvider implements IPushProvider {
7373
date: new Date().toISOString(),
7474
};
7575
}
76+
77+
private validateAndFormatKey(key: string): string {
78+
// Check if key is already properly formatted
79+
const properFormat = /^-----BEGIN PRIVATE KEY-----\n[A-Za-z0-9+/=\n]+\n-----END PRIVATE KEY-----$/;
80+
81+
if (properFormat.test(key)) {
82+
return key; // Key is already in correct format
83+
}
84+
85+
// If not properly formatted, clean and format the key
86+
const cleanKey = key.replace(/-----BEGIN PRIVATE KEY-----|-----END PRIVATE KEY-----|[\s\n\r]/g, '');
87+
88+
const formattedKey = cleanKey.match(/.{1,64}/g)?.join('\n') || '';
89+
90+
return `-----BEGIN PRIVATE KEY-----\n${formattedKey}\n-----END PRIVATE KEY-----`;
91+
}
7692
}

0 commit comments

Comments
 (0)