Prescrypto / WPCI

White paper continuous deployment system
Apache License 2.0
1 stars 1 forks source link

New endpoint to receive a payload of and already signed document #83

Closed valerybriz closed 5 years ago

valerybriz commented 5 years ago

create a new endpoint to receive a payload of and already signed document. Example request and response:

`Request: POST https://wpci-staging.herokuapp.com/api/v1/documents/signed/(LINK ID) Payload: { "signer_metadata": { "public_key": "2d2d2d2d2d424547494e...d2d2d2d", "email": "user@company.com", "name": "signer name" } "doc_id": "2342332bc34324232342", “doc_hash”:”32432432423” } Header: Authorization = Bearer (TOKEN)

Response: 200 OK doc_id type= hex (This is the document signature) doc_hash type = hex (this is the document sha256) public_key type = hex (the signer public key)

`

To make this work:

  1. Already been registered and loggued in (POST to /api/v1/login to request a Token).
  2. Already have a document created (with the same pdf that is going to be signed).
  3. Already have a Link created for this document.
valerybriz commented 5 years ago

@abisosa podrías por favor firmar este documento: https://si.ua.es/es/documentos/documentacion/pdf-s/mozilla12-pdf.pdf y adjuntar la firma y el public key usado para ello?

  1. Pasa el pdf a base 64
  2. Saca el sha256 de eso
  3. Firma con tu private key igual que lo hiciste en el ejemplo que nos mandaste por email
  4. Mándanos el resultado de esa operación junto con el public key y el sha256

Gracias.

abisosa commented 5 years ago

Hola @valerybriz ! Acá están los datos:

Firma: "d074be84e65f07a6a893d50e66a086d7f2ff5626897870d9d9b88e31bd0b61a6554f32924be9e3596b386bfe166fe6042349f2129ae7aa762f4d65d98117cb57fa595402949b7a4eabace3cf6ac47d0fdac4c1530cecdc0e5954908d6765f5f64279e012233c99019961004c982493b202e16ebdc4f419dad8d72f7428b61add087dc0b4cbc85616caa25974aea9cc7acfcdfe608e636e38f609d5261d91168892cd8cea090c7f120a6c106c5462c2c0ec8e886fe88be2ce281374873708873d26a4804c0ed28721e178bf5dc0fc6375a428f7cffb6d89f4c429f8a10a9bb494ea302d5fb9238f558d4107bfac0cd02a53b7c0363a09adf4288ba4f66a8b5c56"

Public Key: "2d2d2d2d2d424547494e205055424c4943204b45592d2d2d2d2d0a4d494942496a414e42676b71686b6947397730424151454641414f43415138414d49494243674b43415145413158774f7739454c4537467848647479733453720a76544c7956546f7544542f7851307a503430494f437a6f39764333657456744d75504d462f4f32373750614968716532513948582b373039586336474d396f410a776a49597153507973695a34744433577472766f434a4e6d694d46567135526339505467732b4836445241492f4a61466975337a3371374146524f35653556310a4559504f384c37494b425942546b494f397953347a476c614c444f6c373850687a3032314b6f623564336d6f375a57774973347a6b6c746d76594e6a397144630a4367545778647a4b46484b73674e48666b31323843626a7331656a64745548654d557434374a4d395a562f5443534a4b685246324e616541517167726871614e0a62416e5a2b747666444d4e39494945493162675069323566776c4b477858387a523178666543796f614f2b346e527a74325a326267544565396455583939302b0a5a514944415141420a2d2d2d2d2d454e44205055424c4943204b45592d2d2d2d2d0a"

SHA256 del doc: "f40a4428d7cdaff3da3d67dd4d2a4b809314ec974dc34aa1ef90b8ab6bddf307"

valerybriz commented 5 years ago

Muchas gracias, la verificación de la firma fue hecha correctamente con estos datos! 💯 adjunto la transacción realizada con estos datos ya en rexchain: https://rexchain-staging.herokuapp.com/hash/c0d89e65e0b1d5cef92ea249246b16c49e220b324a9a64615a763a14fafd5e9d/

abisosa commented 5 years ago

@valerybriz Este endpoint es distinto al que utilizaríamos para estampar la firma en un documento ?

valerybriz commented 5 years ago

@valerybriz Este endpoint es distinto al que utilizaríamos para estampar la firma en un documento ?

No, este si es el endpoint al cual se envía la firma del documento (llamada en el payload de arriba "doc_id") y el resto de parámetros necesarios para que funcione correctamente.

abisosa commented 5 years ago

@valerybriz ok gracias! el método sí es GET ? no debiera ser POST ?

valerybriz commented 5 years ago

@valerybriz ok gracias! el método sí es GET ? no debiera ser POST ?

SI de hecho eso fue un Typo, ya se modificó en el branch, no me había dado cuenta de que aquí aun estaba así

abisosa commented 5 years ago

@valerybriz gracias! última pregunta, el (LINK ID) del url es el doc-id que te regresa el endpoint para crear un documento ?

{:doc_id=>"cita_pasaporte.pdf_1569273144971"}
valerybriz commented 5 years ago

@valerybriz gracias! última pregunta, el (LINK ID) del url es el doc-id que te regresa el endpoint para crear un documento ?

{:doc_id=>"cita_pasaporte.pdf_1569273144971"}

No, al seguir los pasos de creación de documento (descritos arriba) y de LINK obtienes un LINK ID ese es el que se debe agregar al final del url. En el caso que presentas arriba debería de verse algo así:

cita_pasaporte.pdf_1569273144971_3

Pero para que este LINK ID sea funcional debe crearse, de lo contrario dará error por inexistencia (aunque el documento si exista). Esto es debido a que un Link es una forma de llevar el control de un documento y un documento puede tener multiples links.

abisosa commented 5 years ago

@valerybriz con qué endpoint se crea un link_id ?

valerybriz commented 5 years ago

@valerybriz con qué endpoint se crea un link_id ?

Aquí puedes encontrar la ruta y payloads de prueba para crear un link id a partir de un documento https://www.wpci.io/docs#links

abisosa commented 5 years ago

@valerybriz con qué endpoint se crea un link_id ?

Aquí puedes encontrar la ruta y payloads de prueba para crear un link id a partir de un documento https://www.wpci.io/docs#links

Perfecto, muchas gracias!

valerybriz commented 5 years ago

@valerybriz con qué endpoint se crea un link_id ?

Aquí puedes encontrar la ruta y payloads de prueba para crear un link id a partir de un documento https://www.wpci.io/docs#links

Perfecto, muchas gracias!

Por nada 😃

abisosa commented 5 years ago

@valerybriz al crear un documento pdf con la prueba: https://si.ua.es/es/documentos/documentacion/pdf-s/mozilla12-pdf.pdf Me responde con: {:doc_id=>"test.pdf_1569354020765"} Luego hago un request para generar el link y me responde:

{:doc_id=>"test.pdf_1569354020765",
 :status=>"unsigned",
 :view_count=>0,
 :signed_count=>0,
 :version=>"0",
 :link=>"https://wpci-staging.herokuapp.com/docs/pdf/test.pdf_1569354020765_1"}

Luego hago request a este endpoint para firmar con los datos que te pasé arriba y me responde esto: Screen Shot 2019-09-24 at 2 48 41 PM

valerybriz commented 5 years ago

@abisosa puedes mostrarme exactamente el payload y la ruta del request que enviaste por favor?

abisosa commented 5 years ago

@valerybriz sorry le mandaba mal un parámetro pero ahora responde con: {:error=>"Incorrect data received for the the signed document"}

Los datos que le mando son: post url: http://wpci-staging.herokuapp.com/api/v1/documents/signed/test.pdf_1569354020765_1

payload:

{"signer_metadata":{"public_key":"2d2d2d2d2d424547494e205055424c4943204b45592d2d2d2d2d0a4d494942496a414e42676b71686b6947397730424151454641414f43415138414d49494243674b43415145413158774f7739454c4537467848647479733453720a76544c7956546f7544542f7851307a503430494f437a6f39764333657456744d75504d462f4f32373750614968716532513948582b373039586336474d396f410a776a49597153507973695a34744433577472766f434a4e6d694d46567135526339505467732b4836445241492f4a61466975337a3371374146524f35653556310a4559504f384c37494b425942546b494f397953347a476c614c444f6c373850687a3032314b6f623564336d6f375a57774973347a6b6c746d76594e6a397144630a4367545778647a4b46484b73674e48666b31323843626a7331656a64745548654d557434374a4d395a562f5443534a4b685246324e616541517167726871614e0a62416e5a2b747666444d4e39494945493162675069323566776c4b477858387a523178666543796f614f2b346e527a74325a326267544565396455583939302b0a5a514944415141420a2d2d2d2d2d454e44205055424c4943204b45592d2d2d2d2d0a","email":"abi@civica.digital","name":"Abi Sosa"},"doc_id":"d074be84e65f07a6a893d50e66a086d7f2ff5626897870d9d9b88e31bd0b61a6554f32924be9e3596b386bfe166fe6042349f2129ae7aa762f4d65d98117cb57fa595402949b7a4eabace3cf6ac47d0fdac4c1530cecdc0e5954908d6765f5f64279e012233c99019961004c982493b202e16ebdc4f419dad8d72f7428b61add087dc0b4cbc85616caa25974aea9cc7acfcdfe608e636e38f609d5261d91168892cd8cea090c7f120a6c106c5462c2c0ec8e886fe88be2ce281374873708873d26a4804c0ed28721e178bf5dc0fc6375a428f7cffb6d89f4c429f8a10a9bb494ea302d5fb9238f558d4107bfac0cd02a53b7c0363a09adf4288ba4f66a8b5c56","doc_hash":"f40a4428d7cdaff3da3d67dd4d2a4b809314ec974dc34aa1ef90b8ab6bddf307"}
valerybriz commented 5 years ago

@abisosa Reproduje la firma del documento con dos cuentas distintas (ambas con exactamente mismo documento y payloads) y ambas funcionaron correctamente.

Screen Shot 2019-09-24 at 3 37 39 PM

Mi primera pregunta sería si te llegó el documento al email ya que copié el payload tal cual. La segunda pregunta sería, si puedes volver a hacer un request con estos mismos datos pero, desde otra herramienta (tal vez postman u otro) para descartar que sea el cliente que está cambiando alguna codificación o algo similar...

abisosa commented 5 years ago

@valerybriz gracias! Ya vi, es error en el response, la respuesta no es correctamente parseada al json, en lugar de mandar 2 objects {}{} no podrían mandar un array si se requiere?

Me responde: {"s3_contract_url": "https://wpci-staging.herokuapp.com/docs/view_sign_records/test.pdf_1569354020765_1"}{"s3_contract_url": "https://wpci-staging.herokuapp.com/docs/view_sign_records/test.pdf_1569354020765_1"}

abisosa commented 5 years ago

@valerybriz ahora vi que me aparece varias veces firmado en el dashboard pero no puedo verlo: Screen Shot 2019-09-24 at 3 45 05 PM

abisosa commented 5 years ago

Sí me llegó el que me enviaste, es este?

Screen Shot 2019-09-24 at 3 56 30 PM

Ese documento firmado hay forma de descargarlo vía api ?

valerybriz commented 5 years ago

@abisosa si ese es uno de los documentos, ok entonces si tenemos dos bugs aquí que tengo que corregir, el primero es que el url link hacia el sitio donde está firmado se está enviando de manera incorrecta (internamente) y por ende al momento de accesar aparece un signed_files_dev//contract_abi notese el // que hace que no se pueda accesar al documento.

Por otro lado no había notado hasta ahora que lo mencionas, que se están enviando dos jsons separados con los url de los documentos ya firmados, esto en realidad es un solo json con uno o dos links dependiendo del tipo de documento pero en este caso tendría que aparecer uno solo.

Voy a corregir ambos y te confirmo para que realicemos pruebas nuevamente ok? gracias por tu seguimiento!

abisosa commented 5 years ago

@valerybriz perfecto quedo al pendiente, igualmente muchas gracias!

valerybriz commented 5 years ago

@abisosa Ya están los fixes arriba, podrías probar accesar a los links ahora por favor? y también hacer de nuevo el request. gracias.

abisosa commented 5 years ago

@valerybriz todo funcionó bien sólo la url que me devolvió el endpoint para firmar no me deja ver el archivo, me aparece application error: response: {:s3_contract_url=>"https://wpci-staging.herokuapp.com/docs/view_sign_records/second.pdf_1569366025938_1"}

Screen Shot 2019-09-24 at 6 02 26 PM

valerybriz commented 5 years ago

@abisosa ok, esto puede ser porque la app (por ser staging) esta montada en un servidor con free tier, entonces al levantarse de vuelta (despues de estar en modo sleep cuando no se usa por algunos minutos) y tardar más que el limite de timeout, heroku por default va a hacer que truene de esta manera, yo ahorita ingresé al link y si funciona correctamente, puedes checar de nuevo por favor?

abisosa commented 5 years ago

@valerybriz ya me jaló ! Tengo un par de preguntas, El url que devuelve s3_contract_url es el link al dashboard de wpci, habría manera de que ese response incluyera el audit_url y el signed_pdf_url en el mismo json ? Osea lo que aparece acà: Screen Shot 2019-09-24 at 6 15 04 PM

abisosa commented 5 years ago

@valerybriz ya me jaló ! Tengo un par de preguntas, El url que devuelve s3_contract_url es el link al dashboard de wpci, habría manera de que ese response incluyera el audit_url y el signed_pdf_url en el mismo json ? Osea lo que aparece acà: Screen Shot 2019-09-24 at 6 15 04 PM

@valerybriz esto lo pregunto porque nuestros clientes no van a tener una cuenta en WPCI, sería una cuenta nuestra para todos nuestros clientes, entonces no podemos mandarlos al dashboard si ahí van a estar todos los documentos. Necesitamos acceder al archivo firmado para descargarlo y enviarlo a los usuarios correspondientes.

valerybriz commented 5 years ago

90 este issue ya esta resuelto y en producción