Skip to content

Commit 04dc22b

Browse files
committed
add sample code and SSH key
1 parent 4d71e9f commit 04dc22b

File tree

8 files changed

+102
-6
lines changed

8 files changed

+102
-6
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,4 @@ mise.toml
66
/*.tgz
77
/.nyc_output
88
/coverage
9-
id_*
109
*.local.*

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ A seed is used to generate the secret, it's recommended you don't use the same s
3232
## ⚠️ Limitations
3333

3434
- Can't use ECDSA keys, they always give different signatures
35-
- [RFC8332](https://www.rfc-editor.org/info/rfc8332) compatible agent (e.g. OpenSSH 7.6+) mandatory to use SHA2-512 signature scheme. You can still use deprecated SHA1 signatures with `rsaSignatureFlag:0` option in `SSHAgentClient` constructor.
35+
- [RFC8332](https://www.rfc-editor.org/info/rfc8332) compatible agent (e.g. OpenSSH 7.6+) is mandatory to use SHA2-512 signature scheme. You can still use deprecated SHA1 signatures with `rsaSignatureFlag:0` option in `SSHAgentClient` constructor.
3636

3737
## 💻 CLI usage
3838

@@ -67,7 +67,7 @@ Options:
6767
npm i ssh-agent-secrets
6868
```
6969

70-
### Sample
70+
### [Sample](/blob/main/example/test.js)
7171

7272
```javascript
7373
import { SSHAgentClient } from 'ssh-agent-secrets'
@@ -77,7 +77,7 @@ const agent = new SSHAgentClient()
7777
const identities = await agent.getIdentities()
7878
console.log(identities)
7979

80-
const identity = await agent.getIdentity('AWS')
80+
const identity = await agent.getIdentity('ED25519')
8181

8282
const encrypted = await agent.encrypt(
8383
identity,
@@ -96,9 +96,10 @@ const decrypted = await agent.decrypt(
9696
console.log('Decrypted data:', decrypted.toString('utf8'))
9797
```
9898

99-
## Local test
99+
### Local test
100100

101101
```bash
102102
ssh-agent -D
103-
SSH_AUTH_SOCK= ssh-add id_ecdsa id_ed25519 id_rsa
103+
SSH_AUTH_SOCK="[...]" ssh-add test/ssh_keys/*
104+
SSH_AUTH_SOCK="[...]" npm run test
104105
```

example/test.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { SSHAgentClient } from '../dist/src/lib/index.js'
2+
3+
const agent = new SSHAgentClient()
4+
5+
const identities = await agent.getIdentities()
6+
console.log(`${identities.length} identities found in the SSH agent`)
7+
8+
// replace "AWS" with the actual comment of your SSH key
9+
const identity = await agent.getIdentity('ED25519')
10+
11+
const encrypted = await agent.encrypt(
12+
identity,
13+
'not_a_secret_but_a_seed',
14+
Buffer.from('Lorem ipsum dolor', 'utf8'),
15+
'hex',
16+
)
17+
console.log('Encrypted data:', encrypted)
18+
19+
const decrypted = await agent.decrypt(identity, 'not_a_secret_but_a_seed', encrypted, 'hex')
20+
console.log('Decrypted data:', decrypted.toString('utf8'))

test/ssh_keys/id_ecdsa_256

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-----BEGIN OPENSSH PRIVATE KEY-----
2+
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
3+
1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQREWz6lU6g0r40iDfQfSN5SyHN4V2e5
4+
LQ9PMbb7q7DjjlpntLj1YyiJ2kI1qk8S3HfaavQrlZ393ZQcgwCh6WWnAAAAqGEJ5shhCe
5+
bIAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBERbPqVTqDSvjSIN
6+
9B9I3lLIc3hXZ7ktD08xtvursOOOWme0uPVjKInaQjWqTxLcd9pq9CuVnf3dlByDAKHpZa
7+
cAAAAgX/s0aZuGMVwDFqed0dZP6sLPG1OGwmLfzr18cNHO8F4AAAANa2V5X2VjZHNhXzI1
8+
NgECAw==
9+
-----END OPENSSH PRIVATE KEY-----

test/ssh_keys/id_ecdsa_384

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-----BEGIN OPENSSH PRIVATE KEY-----
2+
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAiAAAABNlY2RzYS
3+
1zaGEyLW5pc3RwMzg0AAAACG5pc3RwMzg0AAAAYQTyrUrtyMWCsVSZSxaMsHqxsApl2I6h
4+
umUukiarodoeR44S+da4Jn+uQ7vXHU3LErYokIBwa+pI0WESGKDmKv46DJQ2z1/duoYNCT
5+
vfz+veP/72yh5G3KrQjCYZLqAByfkAAADY/EEPT/xBD08AAAATZWNkc2Etc2hhMi1uaXN0
6+
cDM4NAAAAAhuaXN0cDM4NAAAAGEE8q1K7cjFgrFUmUsWjLB6sbAKZdiOobplLpImq6HaHk
7+
eOEvnWuCZ/rkO71x1NyxK2KJCAcGvqSNFhEhig5ir+OgyUNs9f3bqGDQk738/r3j/+9soe
8+
Rtyq0IwmGS6gAcn5AAAAMQC8tlMq4ZYm+TYf7be2DT2fUTtHgNkS3xPcpj9A2EFkVUX3Pq
9+
yaaFe4gyJYSbHGCLcAAAANa2V5X2VjZHNhXzM4NAEC
10+
-----END OPENSSH PRIVATE KEY-----

test/ssh_keys/id_ecdsa_521

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
-----BEGIN OPENSSH PRIVATE KEY-----
2+
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAArAAAABNlY2RzYS
3+
1zaGEyLW5pc3RwNTIxAAAACG5pc3RwNTIxAAAAhQQAgsJlchCqyHPx2cYZOnNEOvoUx4K6
4+
RXFJQ7y/K/UH5YgD034nFFKsjBsycEiaM3Apf4ugcg4FVPqH4c6gF1h4LpoBafJFGSdi2+
5+
mjjM1EqtltG/30WQrI9/Vl+L+00CzQES6HWFp+phnSi6nsfhQQAp2gZ43/G/Pdd3xSSoKr
6+
lAVYfEgAAAEQn6hql5+oapcAAAATZWNkc2Etc2hhMi1uaXN0cDUyMQAAAAhuaXN0cDUyMQ
7+
AAAIUEAILCZXIQqshz8dnGGTpzRDr6FMeCukVxSUO8vyv1B+WIA9N+JxRSrIwbMnBImjNw
8+
KX+LoHIOBVT6h+HOoBdYeC6aAWnyRRknYtvpo4zNRKrZbRv99FkKyPf1Zfi/tNAs0BEuh1
9+
hafqYZ0oup7H4UEAKdoGeN/xvz3Xd8UkqCq5QFWHxIAAAAQXCDeTwGofULiUsEMK29UJ0L
10+
1xxTDBAkCK1zjPQWHDov8cf/DxB8nspWZVXNYLc+tnwDrzx0TFdF2sMR1uW7KJtvAAAADW
11+
tleV9lY2RzYV81MjEBAgMEBQY=
12+
-----END OPENSSH PRIVATE KEY-----

test/ssh_keys/id_ed25519

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
-----BEGIN OPENSSH PRIVATE KEY-----
2+
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
3+
QyNTUxOQAAACBaT305MthrbCwNnt3EcemPL04N6Rrg45q2pl6Y2AES4gAAAJAtmnf0LZp3
4+
9AAAAAtzc2gtZWQyNTUxOQAAACBaT305MthrbCwNnt3EcemPL04N6Rrg45q2pl6Y2AES4g
5+
AAAEAKnaAAkzXPLl4fXW4hoWjE/S+SPQCq6YKoqvAEeNLcrFpPfTky2GtsLA2e3cRx6Y8v
6+
Tg3pGuDjmramXpjYARLiAAAAC2tleV9lZDI1NTE5AQI=
7+
-----END OPENSSH PRIVATE KEY-----

test/ssh_keys/id_rsa

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
-----BEGIN OPENSSH PRIVATE KEY-----
2+
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
37+
2zX2/MN3uXN6C3AAAAB2tleV9yc2EBAgM=
38+
-----END OPENSSH PRIVATE KEY-----

0 commit comments

Comments
 (0)