Skip to content
GitLab
Explorer
Connexion
S'inscrire
Navigation principale
Rechercher ou aller à…
Projet
P
parlote-facil
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de paquets
Registre de conteneur
Registre de modèles
Opération
Environnements
Modules Terraform
Surveillance
Incidents
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse CI/CD
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
facil
parlote-facil
Validations
f487e271
Valider
f487e271
rédigé
14 years ago
par
Raphael
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
RS, IZ; Posts now sign, signatures and keys now serialize
parent
4a3f6b29
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
4
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
4 fichiers modifiés
app/models/person.rb
+13
-4
13 ajouts, 4 suppressions
app/models/person.rb
app/models/post.rb
+17
-17
17 ajouts, 17 suppressions
app/models/post.rb
app/models/user.rb
+4
-4
4 ajouts, 4 suppressions
app/models/user.rb
lib/encryptable.rb
+4
-4
4 ajouts, 4 suppressions
lib/encryptable.rb
avec
38 ajouts
et
29 suppressions
app/models/person.rb
+
13
−
4
Voir le fichier @
f487e271
...
...
@@ -12,7 +12,8 @@ class Person
key
:email
,
String
key
:url
,
String
key
:active
,
Boolean
,
:default
=>
false
key
:key
,
OpenSSL
::
PKey
::
RSA
key
:serialized_key
,
String
one
:profile
,
:class_name
=>
'Profile'
many
:posts
,
:class_name
=>
'Post'
,
:foreign_key
=>
:person_id
...
...
@@ -21,13 +22,13 @@ class Person
timestamps!
before_validation
:clean_url
validates_presence_of
:email
,
:url
,
:key
validates_presence_of
:email
,
:url
,
:
serialized_
key
validates_format_of
:url
,
:with
=>
/^(https?):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$/ix
validates_true_for
:url
,
:logic
=>
lambda
{
self
.
url_unique?
}
after_destroy
:remove_all_traces
,
:remove_key
after_destroy
:remove_all_traces
scope
:friends
,
where
(
:_type
=>
"Person"
,
:active
=>
true
)
...
...
@@ -37,8 +38,16 @@ class Person
"
#{
profile
.
first_name
.
to_s
}
#{
profile
.
last_name
.
to_s
}
"
end
def
key
OpenSSL
::
PKey
::
RSA
.
new
(
serialized_key
)
end
def
key
=
new_key
raise
TypeError
unless
new_key
.
class
==
OpenSSL
::
PKey
::
RSA
serialized_key
=
new_key
.
export
end
def
export_key
key
.
public_key
.
to_s
key
.
public_key
.
export
end
protected
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
app/models/post.rb
+
17
−
17
Voir le fichier @
f487e271
...
...
@@ -49,24 +49,24 @@ class Post
end
#ENCRYPTION
before_validation
:sign_if_mine
validates_true_for
:creator_signature
,
:logic
=>
lambda
{
self
.
verify_creator_signature
}
xml_accessor
:creator_signature
key
:creator_signature
,
String
def
signable_accessors
accessors
=
self
.
class
.
roxml_attrs
.
collect
{
|
definition
|
definition
.
accessor
}
accessors
.
delete
'person'
accessors
.
delete
'creator_signature'
accessors
end
before_validation
:sign_if_mine
validates_true_for
:creator_signature
,
:logic
=>
lambda
{
self
.
verify_creator_signature
}
xml_accessor
:creator_signature
key
:creator_signature
,
String
def
signable_accessors
accessors
=
self
.
class
.
roxml_attrs
.
collect
{
|
definition
|
definition
.
accessor
}
accessors
.
delete
'person'
accessors
.
delete
'creator_signature'
accessors
end
def
signable_string
signable_accessors
.
collect
{
|
accessor
|
(
self
.
send
accessor
.
to_sym
).
to_s
}.
join
';'
end
def
signable_string
signable_accessors
.
collect
{
|
accessor
|
(
self
.
send
accessor
.
to_sym
).
to_s
}.
join
';'
end
def
log_inspection
Rails
.
logger
.
info
self
.
inspect
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
app/models/user.rb
+
4
−
4
Voir le fichier @
f487e271
...
...
@@ -74,7 +74,7 @@ class User < Person
def
receive_friend_request
(
friend_request
)
Rails
.
logger
.
info
(
"receiving friend request
#{
friend_request
.
to_json
}
"
)
friend_request
.
person
.
key
=
OpenSSL
::
PKey
::
RSA
.
new
(
friend_request
.
exported_key
)
friend_request
.
person
.
serialized_key
=
friend_request
.
exported_key
if
Request
.
where
(
:callback_url
=>
friend_request
.
callback_url
).
first
friend_request
.
activate_friend
friend_request
.
destroy
...
...
@@ -124,14 +124,14 @@ class User < Person
protected
def
assign_key
generate_key
self
.
serialized_key
||=
generate_key
.
export
end
def
generate_key
puts
"Generating key"
self
.
key
=
OpenSSL
::
PKey
::
RSA
::
generate
1024
OpenSSL
::
PKey
::
RSA
::
generate
1024
end
end
Ce diff est replié.
Cliquez pour l'agrandir.
lib/encryptable.rb
+
4
−
4
Voir le fichier @
f487e271
...
...
@@ -8,10 +8,10 @@
def
verify_signature
(
signature
,
person
)
return
false
unless
signature
&&
person
.
key
validity
=
nil
Rails
.
logger
.
info
(
"Verifying sig on
#{
signable_string
}
from person
#{
person
.
real_name
}
"
)
person
.
key
.
verify
"SHA"
,
signature
,
signable_string
validity
=
person
.
key
.
verify
"SHA"
,
Base64
.
decode64
(
signature
),
signable_string
Rails
.
logger
.
info
(
"Validity:
#{
validity
}
"
)
validity
end
protected
...
...
@@ -27,7 +27,7 @@
def
sign_with_key
(
key
)
Rails
.
logger
.
info
(
"Signing
#{
signable_string
}
"
)
key
.
sign
"SHA"
,
signable_string
Base64
.
encode64
(
key
.
sign
"SHA"
,
signable_string
)
end
end
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter