Advertisement
Guest User

Untitled

a guest
Oct 9th, 2018
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. func InitUser(username string, password string) (userdataptr *User, err error) {
  2. var userdata User
  3.  
  4. encrpytionKey := userlib.Argon2Key([]byte(password), []byte(username), 16)
  5. privateKeyPtr, err := userlib.GenerateRSAKey()
  6. if err != nil {
  7. panic(err)
  8. }
  9.  
  10. privateKey := privateKeyPtr.D
  11. usrName:= []byte(username)
  12. pwd := []byte(password)
  13. PvtK := []byte((*privateKey).Bytes())
  14. unencryptedFields := [][]byte{usrName, pwd, PvtK}
  15. encryptedFields := [][]byte{}
  16.  
  17. for _, field := range unencryptedFields {
  18. IV := userlib.RandomBytes(userlib.BlockSize)
  19. ciphertext := make([]byte, len(field))
  20. encryptor := userlib.CFBEncrypter(encrpytionKey, IV)
  21. ciphertext = append(IV, field...)
  22. encryptor.XORKeyStream(ciphertext[userlib.BlockSize:], field)
  23. encryptedFields = append(encryptedFields, ciphertext)
  24. }
  25.  
  26. userdata.Username = encryptedFields[0]
  27. userdata.Password =encryptedFields[1]
  28. userdata.PrivateKey = encryptedFields[2]
  29.  
  30. // Store the user data into the untrusted datastore
  31. key := append([]byte(username), []byte(password)...)
  32. sha := userlib.NewSHA256()
  33. sha.Write(key)
  34. hash := sha.Sum([]byte(""))
  35.  
  36. marshaluser, err := json.Marshal(userdata)
  37. if err != nil {
  38. panic(err)
  39. }
  40.  
  41. userlib.DatastoreSet(string(hash), marshaluser)
  42.  
  43. // Store public key on public key server
  44. userlib.KeystoreSet(string(encryptedFields[0]), privateKeyPtr.PublicKey)
  45.  
  46. return &userdata, err
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement