Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 28 additions & 8 deletions problems/09.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,44 @@

```js
// sign.js
// usage:
// node sign.js "message"
// signature and publickey will be in hex format
var sodium = require('sodium-native')
const args = process.argv.slice(2)
const messageString = args[0]

var publicKey = Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES)
var secretKey = Buffer.alloc(sodium.crypto_sign_SECRETKEYBYTES)
sodium.crypto_sign_keypair(publicKey, secretKey)

var message = Buffer.from('Hello world!')
const messageBuffer = Buffer.from(messageString)
var publickey = Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES)
var secretkey = Buffer.alloc(sodium.crypto_sign_SECRETKEYBYTES)
var signature = Buffer.alloc(sodium.crypto_sign_BYTES)

sodium.crypto_sign_detached(signature, message, secretKey)
sodium.crypto_sign_keypair(publickey, secretkey)

sodium.crypto_sign_detached(signature, messageBuffer, secretkey)

console.log('Public key: ' + publicKey.toString('hex'))
console.log('Message: ' + message.toString())
console.log('Signature: ' + signature.toString('hex'))
console.log('Message: "' + messageBuffer.toString()+'"')
console.log('Public key: ' + publickey.toString('hex'))
```

```js
// verify.js
// usage:
// node verify.js signature "message" publickey
// signature and publickey should be in hex format

var sodium = require('sodium-native')
const args = process.argv.slice(2)
var publickey = Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES)
var signature = Buffer.alloc(sodium.crypto_sign_BYTES)

signature = Buffer.from(args[0],'hex')
message = Buffer.from(args[1])
publickey = Buffer.from(args[2],'hex')

const isValid = sodium.crypto_sign_verify_detached(signature,message,publickey)
console.log("isValid: "+isValid)

```

Expand Down