From 6a627199ae887edf1b3d515ffd8101522416b405 Mon Sep 17 00:00:00 2001 From: chen_yuteng Date: Thu, 23 Mar 2023 14:12:49 +0800 Subject: [PATCH 01/24] RE --- go.mod | 10 +- go.sum | 165 ++++++++++++- secloud/api_auth.go | 88 ------- secloud/api_auth_test.go | 21 -- secloud/api_cipher.go | 228 ------------------ secloud/api_kms.go | 140 ------------ secloud/api_kms_ext.go | 181 --------------- secloud/api_kms_test.go | 55 ----- secloud/auth.go | 39 ++++ secloud/base.go | 24 ++ secloud/cipher.go | 85 +++++++ secloud/client.go | 483 ++------------------------------------- secloud/common.go | 98 ++++++++ secloud/configuration.go | 72 ------ secloud/error.go | 14 ++ secloud/kms.go | 104 +++++++++ secloud/response.go | 67 ------ secloud/util.go | 21 ++ test/test.go | 32 +++ 19 files changed, 604 insertions(+), 1323 deletions(-) delete mode 100644 secloud/api_auth.go delete mode 100644 secloud/api_auth_test.go delete mode 100644 secloud/api_cipher.go delete mode 100644 secloud/api_kms.go delete mode 100644 secloud/api_kms_ext.go delete mode 100644 secloud/api_kms_test.go create mode 100644 secloud/auth.go create mode 100644 secloud/base.go create mode 100644 secloud/cipher.go create mode 100644 secloud/common.go delete mode 100644 secloud/configuration.go create mode 100644 secloud/error.go create mode 100644 secloud/kms.go delete mode 100644 secloud/response.go create mode 100644 secloud/util.go create mode 100644 test/test.go diff --git a/go.mod b/go.mod index 5472542..d4a6547 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,12 @@ module gitee.com/wx-rdc/secloud-sdk-go go 1.18 -require github.com/antihax/optional v1.0.0 +require ( + github.com/astaxie/beego v1.12.3 + github.com/go-resty/resty/v2 v2.7.0 +) + +require ( + github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect + golang.org/x/net v0.0.0-20211029224645-99673261e6eb // indirect +) diff --git a/go.sum b/go.sum index 8398806..6c62619 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,163 @@ -github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= +github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk= +github.com/astaxie/beego v1.12.3 h1:SAQkdD2ePye+v8Gn1r4X6IKZM1wd28EyUOVQ3PDSOOQ= +github.com/astaxie/beego v1.12.3/go.mod h1:p3qIm0Ryx7zeBHLljmd7omloyca1s4yu1a8kM1FkpIA= +github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd/go.mod h1:1b+Y/CofkYwXMUU0OhQqGvsY2Bvgr4j6jfT699wyZKQ= +github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542/go.mod h1:kSeGC/p1AbBiEp5kat81+DSQrZenVBZXklMLaELspWU= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= +github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= +github.com/couchbase/go-couchbase v0.0.0-20200519150804-63f3cdb75e0d/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U= +github.com/couchbase/gomemcached v0.0.0-20200526233749-ec430f949808/go.mod h1:srVSlQLB8iXBVXHgnqemxUXqN6FCvClgCMPCsjBDR7c= +github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a/go.mod h1:BQwMFlJzDjFDG3DJUdU0KORxn88UlsOULuxLExMh3Hs= +github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76/go.mod h1:vYwsqCOLxGiisLwp9rITslkFNpZD5rz43tf41QFkTWY= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= +github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/glendc/gopher-json v0.0.0-20170414221815-dc4743023d0c/go.mod h1:Gja1A+xZ9BoviGJNA2E9vFkPjjsl+CoJxSXiQM1UXtw= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= +github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/ledisdb/ledisdb v0.0.0-20200510135210-d35789ec47e6/go.mod h1:n931TsDuKuq+uX4v1fulaMbA/7ZLLhjc85h7chZGBCQ= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.0/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 h1:X+yvsM2yrEktyI+b2qND5gpH8YhURn0k8OCaeRnkINo= +github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg= +github.com/siddontang/go v0.0.0-20170517070808-cb568a3e5cc0/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw= +github.com/siddontang/goredis v0.0.0-20150324035039-760763f78400/go.mod h1:DDcKzU3qCuvj/tPnimWSsZZzvk9qvkvrIL5naVBPh5s= +github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/syndtr/goleveldb v0.0.0-20160425020131-cfa635847112/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= +github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= +github.com/ugorji/go v0.0.0-20171122102828-84cb69a8af83/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= +github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc= +github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20211029224645-99673261e6eb h1:pirldcYWx7rx7kE5r+9WsOXPXK0+WH5+uZ7uPmJ44uM= +golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/secloud/api_auth.go b/secloud/api_auth.go deleted file mode 100644 index 436aaaf..0000000 --- a/secloud/api_auth.go +++ /dev/null @@ -1,88 +0,0 @@ -package secloud - -import ( - "context" - "net/url" - "strings" - - "github.com/antihax/optional" -) - -// Linger please -var ( - _ context.Context -) - -type AuthApiService service - -/* -AuthApiService -*/ - -type AuthOpts struct { - ClientId optional.String - ClientSecret optional.String -} - -type AuthRespData struct { - AccessToken string `json:"access_token"` - ExpiresIn int `json:"expires_in"` -} - -func (a *AuthApiService) Token(ctx context.Context, - localVarOptionals *AuthOpts) (*AuthRespData, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/auth/token" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - if localVarOptionals != nil && localVarOptionals.ClientId.IsSet() { - localVarQueryParams.Add("clientId", parameterToString(localVarOptionals.ClientId.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.ClientSecret.IsSet() { - localVarQueryParams.Add("clientSecret", parameterToString(localVarOptionals.ClientSecret.Value(), "")) - } - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json", "multipart/form-data"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return nil, err - } - - data := AuthRespData{} - _, err = NewAPIResponse(localVarHttpResponse, &data) - if err != nil { - return nil, err - } - return &data, nil -} diff --git a/secloud/api_auth_test.go b/secloud/api_auth_test.go deleted file mode 100644 index e89ef58..0000000 --- a/secloud/api_auth_test.go +++ /dev/null @@ -1,21 +0,0 @@ -package secloud - -import ( - "context" - "testing" - - "github.com/antihax/optional" -) - -func TestAuth(t *testing.T) { - client := NewAPIClient(NewConfiguration("http://localhost:8080")) - authOpts := &AuthOpts{ - ClientId: optional.NewString("pingduoduo"), - ClientSecret: optional.NewString("123"), - } - data, err := client.AuthApi.Token(context.Background(), authOpts) - if err != nil { - t.Error(err) - } - t.Log(data.AccessToken) -} diff --git a/secloud/api_cipher.go b/secloud/api_cipher.go deleted file mode 100644 index c9b2c21..0000000 --- a/secloud/api_cipher.go +++ /dev/null @@ -1,228 +0,0 @@ -package secloud - -import ( - "context" - "encoding/json" - "net/url" - "strings" - - "github.com/antihax/optional" -) - -// Linger please -var ( - _ context.Context -) - -type CipherApiService service - -/* -CipherApiService - Encrypt -*/ - -type EncryptOpts struct { - KeyId optional.String - Data optional.String -} - -type EncryptRespData struct { - EncData string `json:"enc_data"` -} - -func (a *CipherApiService) Encrypt(ctx context.Context, - localVarOptionals *EncryptOpts) (*EncryptRespData, error) { - var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/cipher/encrypt" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - localBodyMap := make(map[string]interface{}) - - if localVarOptionals != nil && localVarOptionals.KeyId.IsSet() { - localBodyMap["keyId"] = parameterToString(localVarOptionals.KeyId.Value(), "") - } - if localVarOptionals != nil && localVarOptionals.Data.IsSet() { - localBodyMap["data"] = parameterToString(localVarOptionals.Data.Value(), "") - } - localVarPostBody, _ = json.Marshal(localBodyMap) - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json", "multipart/form-data"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return nil, err - } - - data := EncryptRespData{} - _, err = NewAPIResponse(localVarHttpResponse, &data) - if err != nil { - return nil, err - } - return &data, nil -} - -/* -CipherApiService - Decrypt -*/ - -type DecryptOpts struct { - EncData optional.String -} - -type DecryptRespData struct { - Data string `json:"data"` -} - -func (a *CipherApiService) Decrypt(ctx context.Context, - localVarOptionals *DecryptOpts) (*DecryptRespData, error) { - var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/cipher/decrypt" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - localBodyMap := make(map[string]interface{}) - - if localVarOptionals != nil && localVarOptionals.EncData.IsSet() { - localBodyMap["encData"] = parameterToString(localVarOptionals.EncData.Value(), "") - } - localVarPostBody, _ = json.Marshal(localBodyMap) - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json", "multipart/form-data"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return nil, err - } - - data := DecryptRespData{} - _, err = NewAPIResponse(localVarHttpResponse, &data) - if err != nil { - return nil, err - } - return &data, nil -} - -/* -CipherApiService - Random -*/ - -type RandomOpts struct { - Len optional.Int -} - -type RandomRespData struct { - Data string `json:"data"` -} - -func (a *CipherApiService) Random(ctx context.Context, - localVarOptionals *RandomOpts) (*RandomRespData, error) { - var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/cipher/random" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - localBodyMap := make(map[string]interface{}) - - if localVarOptionals != nil && localVarOptionals.Len.IsSet() { - localBodyMap["len"] = localVarOptionals.Len.Value() - } - localVarPostBody, _ = json.Marshal(localBodyMap) - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json", "multipart/form-data"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return nil, err - } - - data := RandomRespData{} - _, err = NewAPIResponse(localVarHttpResponse, &data) - if err != nil { - return nil, err - } - return &data, nil -} diff --git a/secloud/api_kms.go b/secloud/api_kms.go deleted file mode 100644 index 894cc04..0000000 --- a/secloud/api_kms.go +++ /dev/null @@ -1,140 +0,0 @@ -package secloud - -import ( - "context" - "net/url" - "strings" -) - -// Linger please -var ( - _ context.Context -) - -type KmsApiService service - -/* -KmsApiService - GenerateKeyPair -*/ - -type GenerateKeyPairOpts struct { -} - -type GenerateKeyPairRespData struct { - Pkey string `json:"pkey"` - Skey string `json:"skey"` -} - -func (a *KmsApiService) GenerateKeyPair(ctx context.Context, - localVarOptionals *GenerateKeyPairOpts) (*GenerateKeyPairRespData, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/kms/generateKeyPair" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json", "multipart/form-data"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return nil, err - } - - data := GenerateKeyPairRespData{} - _, err = NewAPIResponse(localVarHttpResponse, &data) - if err != nil { - return nil, err - } - return &data, nil -} - -/* -KmsApiService - GenerateKeyPair -*/ - -type GenerateWorkingKeyOpts struct { -} - -type GenerateWorkingKeyRespData struct { - EncKey string `json:"enc_key"` - Code string `json:"code"` -} - -func (a *KmsApiService) GenerateWorkingKey(ctx context.Context, - localVarOptionals *GenerateWorkingKeyOpts) (*GenerateWorkingKeyRespData, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/kms/generateWorkingKey" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json", "multipart/form-data"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return nil, err - } - - data := GenerateWorkingKeyRespData{} - _, err = NewAPIResponse(localVarHttpResponse, &data) - if err != nil { - return nil, err - } - return &data, nil -} diff --git a/secloud/api_kms_ext.go b/secloud/api_kms_ext.go deleted file mode 100644 index ec05ca0..0000000 --- a/secloud/api_kms_ext.go +++ /dev/null @@ -1,181 +0,0 @@ -package secloud - -import ( - "context" - "encoding/json" - "net/url" - "strings" - - "github.com/antihax/optional" -) - -// Linger please -var ( - _ context.Context -) - -type KmsApiExtService service - -/* -KmsApiExtService - GenerateKeyPairWithKEK -*/ - -type GenerateKeyPairWithKEKOpts struct { - KekIndex optional.Int -} - -type GenerateKeyPairWithKEKRespData struct { - IpxIndex int `json:"ipx_index"` - SignPkey string `json:"sign_pkey"` - SignSkey string `json:"sign_skey"` - EncPkey string `json:"enc_pkey"` - EncSkey string `json:"enc_skey"` -} - -func (a *KmsApiExtService) GenerateKeyPairWithKEK(ctx context.Context, - localVarOptionals *GenerateKeyPairWithKEKOpts) (*GenerateKeyPairWithKEKRespData, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/kms/generateKeyPairWithKEK" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - if localVarOptionals != nil && localVarOptionals.KekIndex.IsSet() { - localVarQueryParams.Add("kekIndex", parameterToString(localVarOptionals.KekIndex.Value(), "")) - } - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json", "multipart/form-data"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return nil, err - } - - data := GenerateKeyPairWithKEKRespData{} - _, err = NewAPIResponse(localVarHttpResponse, &data) - if err != nil { - return nil, err - } - return &data, nil -} - -/* -KmsApiExtService - ImportKeyPairWithKEK -*/ - -type ImportKeyPairWithKEKOpts struct { - DeviceUrl optional.String - KekIndex optional.Int - IpxIndex optional.Int - SignPkey optional.String - SignSkey optional.String - EncPkey optional.String - EncSkey optional.String -} - -type ImportKeyPairWithKEKRespData struct { - Id int `json:"id"` -} - -func (a *KmsApiExtService) ImportKeyPairWithKEK(ctx context.Context, - localVarOptionals *ImportKeyPairWithKEKOpts) (*ImportKeyPairWithKEKRespData, error) { - var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/kms/importKeyPairWithKEK" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - localBodyMap := make(map[string]interface{}) - - if localVarOptionals != nil && localVarOptionals.DeviceUrl.IsSet() { - localBodyMap["deviceUrl"] = localVarOptionals.DeviceUrl.Value() - } - if localVarOptionals != nil && localVarOptionals.KekIndex.IsSet() { - localBodyMap["kekIndex"] = localVarOptionals.KekIndex.Value() - } - if localVarOptionals != nil && localVarOptionals.IpxIndex.IsSet() { - localBodyMap["ipxIndex"] = localVarOptionals.IpxIndex.Value() - } - if localVarOptionals != nil && localVarOptionals.SignPkey.IsSet() { - localBodyMap["signPkey"] = parameterToString(localVarOptionals.SignPkey.Value(), "") - } - if localVarOptionals != nil && localVarOptionals.SignSkey.IsSet() { - localBodyMap["signSkey"] = parameterToString(localVarOptionals.SignSkey.Value(), "") - } - if localVarOptionals != nil && localVarOptionals.EncPkey.IsSet() { - localBodyMap["encPkey"] = parameterToString(localVarOptionals.EncPkey.Value(), "") - } - if localVarOptionals != nil && localVarOptionals.EncSkey.IsSet() { - localBodyMap["encSkey"] = parameterToString(localVarOptionals.EncSkey.Value(), "") - } - localVarPostBody, _ = json.Marshal(localBodyMap) - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json", "multipart/form-data"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return nil, err - } - - data := ImportKeyPairWithKEKRespData{} - _, err = NewAPIResponse(localVarHttpResponse, &data) - if err != nil { - return nil, err - } - return &data, nil -} diff --git a/secloud/api_kms_test.go b/secloud/api_kms_test.go deleted file mode 100644 index a94b56d..0000000 --- a/secloud/api_kms_test.go +++ /dev/null @@ -1,55 +0,0 @@ -package secloud - -import ( - "context" - "fmt" - "os" - "testing" - - "github.com/antihax/optional" -) - -var client *APIClient -var accessToken string - -func setup() { - client = NewAPIClient(NewConfiguration("http://localhost:8080")) - authOpts := &AuthOpts{ - ClientId: optional.NewString("pingduoduo"), - ClientSecret: optional.NewString("123"), - } - data, err := client.AuthApi.Token(context.Background(), authOpts) - if err != nil { - os.Exit(1) - } - accessToken = data.AccessToken -} - -func TestGenerateKeyPair(t *testing.T) { - data, err := client.KmsApi.GenerateKeyPair( - context.WithValue(context.Background(), ContextAccessToken, accessToken), - nil) - if err != nil { - t.Error(err) - } - t.Logf("pkey: %s\nskey: %s\n", data.Pkey, data.Skey) -} - -func TestGenerateWorkingKey(t *testing.T) { - data, err := client.KmsApi.GenerateWorkingKey( - context.WithValue(context.Background(), ContextAccessToken, accessToken), - nil) - if err != nil { - t.Error(err) - } - t.Logf("EncKey: %s\nCode: %s", data.EncKey, data.Code) -} - -func TestMain(m *testing.M) { - - setup() - fmt.Println(accessToken) - code := m.Run() - - os.Exit(code) -} diff --git a/secloud/auth.go b/secloud/auth.go new file mode 100644 index 0000000..85bc733 --- /dev/null +++ b/secloud/auth.go @@ -0,0 +1,39 @@ +package secloud + +import ( + "github.com/astaxie/beego/validation" +) + +type AuthService struct { + Base *BaseService +} + +func NewAuthService() *AuthService { + return &AuthService{ + Base: BaseSvc, + } +} + +func (as *AuthService) Token(appKey string, appSecret string) (string, error) { + valid := validation.Validation{} + valid.MinSize(appKey, 1, "appKey").Message("请输入合法的AppKey") + valid.MinSize(appSecret, 1, "appSecret").Message("请输入合法的AppSecret") + if valid.HasErrors() { + return "", handleValidationErrors(valid.Errors) + } + + var ret TokenResp + _, err := as.Base.C.R(). + SetHeader("Content-Type", "application/json"). + SetQueryParams(map[string]string{ + "clientId": appKey, + "clientSecret": appSecret, + }). + SetResult(&ret). + Get("/auth/token") + if err != nil { + return "", err + } + + return ret.Data.AccessToken, nil +} diff --git a/secloud/base.go b/secloud/base.go new file mode 100644 index 0000000..ff2480c --- /dev/null +++ b/secloud/base.go @@ -0,0 +1,24 @@ +package secloud + +import ( + "crypto/tls" + "github.com/go-resty/resty/v2" + "time" +) + +var BaseSvc *BaseService + +func init() { + c := resty.New(). + SetRetryCount(3). + SetTimeout(60 * time.Second). + SetTLSClientConfig(&tls.Config{InsecureSkipVerify: false}) + + BaseSvc = &BaseService{ + C: c, + } +} + +type BaseService struct { + C *resty.Client +} diff --git a/secloud/cipher.go b/secloud/cipher.go new file mode 100644 index 0000000..43ee2bf --- /dev/null +++ b/secloud/cipher.go @@ -0,0 +1,85 @@ +package secloud + +import ( + "github.com/astaxie/beego/validation" +) + +type CipherService struct { + Base *BaseService +} + +func NewCipherService() *CipherService { + return &CipherService{ + Base: BaseSvc, + } +} + +func (cs *CipherService) Encrypt(token string, keyId string, data string) (*EncryptRespData, error) { + valid := validation.Validation{} + valid.MinSize(token, 1, "token").Message("请输入正确的token!") + valid.Length(keyId, 4, "keyId").Message("keyId长度为4位") + if valid.HasErrors() { + return nil, handleValidationErrors(valid.Errors) + } + + var ret EncryptResp + _, err := cs.Base.C.R(). + SetHeader("Authorization", "Bearer "+token). + SetBody(map[string]interface{}{ + "keyId": keyId, + "data": data, + }). + SetResult(&ret). + Post("/cipher/encrypt") + if err != nil { + return nil, err + } + + return ret.Data, nil +} + +func (cs *CipherService) Decrypt(token string, data string) (*DecryptRespData, error) { + valid := validation.Validation{} + valid.MinSize(token, 1, "token").Message("请输入正确的token!") + valid.MinSize(data, 1, "data").Message("请输入合法的data数据!") + if valid.HasErrors() { + return nil, handleValidationErrors(valid.Errors) + } + + var ret DecryptResp + _, err := cs.Base.C.R(). + SetHeader("Authorization", "Bearer "+token). + SetBody(map[string]interface{}{ + "encData": data, + }). + SetResult(&ret). + Post("/cipher/decrypt") + if err != nil { + return nil, err + } + + return ret.Data, nil +} + +func (cs *CipherService) Random(token string, len int) (*RandomRespData, error) { + valid := validation.Validation{} + valid.MinSize(token, 1, "token").Message("请输入正确的token!") + valid.Min(len, 1, "len").Message("请输入合法的随机长度!") + if valid.HasErrors() { + return nil, handleValidationErrors(valid.Errors) + } + + var ret RandomResp + _, err := cs.Base.C.R(). + SetHeader("Authorization", "Bearer "+token). + SetBody(map[string]interface{}{ + "len": len, + }). + SetResult(&ret). + Post("/cipher/random") + if err != nil { + return nil, err + } + + return ret.Data, nil +} diff --git a/secloud/client.go b/secloud/client.go index 81c690b..5b895c0 100644 --- a/secloud/client.go +++ b/secloud/client.go @@ -1,477 +1,24 @@ -/* - * Secloud Open API - * - * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) - * - * API version: 1.2.0 - * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) - */ - package secloud -import ( - "bytes" - "context" - "encoding/json" - "encoding/xml" - "errors" - "fmt" - "io" - "mime/multipart" - "net/http" - "net/url" - "os" - "path/filepath" - "reflect" - "regexp" - "strconv" - "strings" - "time" - "unicode/utf8" -) - -var ( - jsonCheck = regexp.MustCompile("(?i:[application|text]/json)") - xmlCheck = regexp.MustCompile("(?i:[application|text]/xml)") -) - -// APIClient manages communication with the Secloud Open API API v1.2.0 -// In most cases there should be only one, shared, APIClient. -type APIClient struct { - cfg *Configuration - common service // Reuse a single struct instead of allocating one for each service on the heap. - - // API Services - AuthApi *AuthApiService - KmsApi *KmsApiService - KmsExtApi *KmsApiExtService - CipherApi *CipherApiService -} - -type service struct { - client *APIClient -} - -// NewAPIClient creates a new API client. Requires a userAgent string describing your application. -// optionally a custom http.Client to allow for advanced features such as caching. -func NewAPIClient(cfg *Configuration) *APIClient { - if cfg.HTTPClient == nil { - cfg.HTTPClient = http.DefaultClient - } - - c := &APIClient{} - c.cfg = cfg - c.common.client = c - - // API Services - c.AuthApi = (*AuthApiService)(&c.common) - c.KmsApi = (*KmsApiService)(&c.common) - c.KmsExtApi = (*KmsApiExtService)(&c.common) - c.CipherApi = (*CipherApiService)(&c.common) - - return c -} - -func atoi(in string) (int, error) { - return strconv.Atoi(in) -} - -// selectHeaderContentType select a content type from the available list. -func selectHeaderContentType(contentTypes []string) string { - if len(contentTypes) == 0 { - return "" - } - if contains(contentTypes, "application/json") { - return "application/json" - } - return contentTypes[0] // use the first content type specified in 'consumes' -} - -// selectHeaderAccept join all accept types and return -func selectHeaderAccept(accepts []string) string { - if len(accepts) == 0 { - return "" - } - - if contains(accepts, "application/json") { - return "application/json" - } - - return strings.Join(accepts, ",") -} - -// contains is a case insenstive match, finding needle in a haystack -func contains(haystack []string, needle string) bool { - for _, a := range haystack { - if strings.EqualFold(a, needle) { - return true - } - } - return false -} - -// Verify optional parameters are of the correct type. -func typeCheckParameter(obj interface{}, expected string, name string) error { - // Make sure there is an object. - if obj == nil { - return nil - } - - // Check the type is as expected. - if reflect.TypeOf(obj).String() != expected { - return fmt.Errorf("expected %s to be of type %s but received %s", name, expected, reflect.TypeOf(obj).String()) - } - return nil -} - -// parameterToString convert interface{} parameters to string, using a delimiter if format is provided. -func parameterToString(obj interface{}, collectionFormat string) string { - var delimiter string - - switch collectionFormat { - case "pipes": - delimiter = "|" - case "ssv": - delimiter = " " - case "tsv": - delimiter = "\t" - case "csv": - delimiter = "," - } - - if reflect.TypeOf(obj).Kind() == reflect.Slice { - return strings.Trim(strings.Replace(fmt.Sprint(obj), " ", delimiter, -1), "[]") - } - - return fmt.Sprintf("%v", obj) -} - -// callAPI do the request. -func (c *APIClient) callAPI(request *http.Request) (r *http.Response, err error) { - canRetry := func() bool { - if r != nil && r.StatusCode == 502 { - return true - } - - return err != nil && strings.Contains(strings.ToLower(err.Error()), "502 bad gateway") - } - - n := 3 - for i := 0; i < n; i++ { - r, err = c.cfg.HTTPClient.Do(request) - if i+1 >= n || !canRetry() { - return - } - - if err == nil && r != nil && r.Body != nil { - r.Body.Close() - } - - time.Sleep(time.Duration(i+1) * time.Second) - } - return -} - -// Change base path to allow switching to mocks -func (c *APIClient) ChangeBasePath(path string) { - c.cfg.BasePath = path -} - -// prepareRequest build the request -func (c *APIClient) prepareRequest( - ctx context.Context, - path string, method string, - postBody interface{}, - headerParams map[string]string, - queryParams url.Values, - formParams url.Values, - fileName string, - fileBytes []byte) (localVarRequest *http.Request, err error) { - - var body *bytes.Buffer - - // Detect postBody type and post. - if postBody != nil { - contentType := headerParams["Content-Type"] - if contentType == "" { - contentType = detectContentType(postBody) - headerParams["Content-Type"] = contentType - } - - body, err = setBody(postBody, contentType) - if err != nil { - return nil, err - } - } - - // add form parameters and file if available. - if len(formParams) > 0 || (len(fileBytes) > 0 && fileName != "") { - if body != nil { - return nil, errors.New("cannot specify postBody and multipart form at the same time") - } - body = &bytes.Buffer{} - w := multipart.NewWriter(body) - - for k, v := range formParams { - for _, iv := range v { - if strings.HasPrefix(k, "@") { // file - err = addFile(w, k[1:], iv) - if err != nil { - return nil, err - } - } else { // form value - w.WriteField(k, iv) - } - } - } - if len(fileBytes) > 0 && fileName != "" { - w.Boundary() - //_, fileNm := filepath.Split(fileName) - part, err := w.CreateFormFile("file", filepath.Base(fileName)) - if err != nil { - return nil, err - } - _, err = part.Write(fileBytes) - if err != nil { - return nil, err - } - // Set the Boundary in the Content-Type - headerParams["Content-Type"] = w.FormDataContentType() - } - - // Set Content-Length - headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) - w.Close() - } - - // Setup path and query parameters - url, err := url.Parse(path) - if err != nil { - return nil, err - } - - // Adding Query Param - query := url.Query() - for k, v := range queryParams { - for _, iv := range v { - query.Add(k, iv) - } - } - - // Encode the parameters. - url.RawQuery = query.Encode() - - // Generate a new request - if body != nil { - localVarRequest, err = http.NewRequest(method, url.String(), body) - } else { - localVarRequest, err = http.NewRequest(method, url.String(), nil) - } - if err != nil { - return nil, err - } - - // add header parameters, if any - if len(headerParams) > 0 { - headers := http.Header{} - for h, v := range headerParams { - headers.Set(h, v) - } - localVarRequest.Header = headers - } - - // Override request host, if applicable - if c.cfg.Host != "" { - localVarRequest.Host = c.cfg.Host - } - - // Add the user agent to the request. - localVarRequest.Header.Add("User-Agent", c.cfg.UserAgent) - - if ctx != nil { - // add context to the request - localVarRequest = localVarRequest.WithContext(ctx) - - // Walk through any authentication. - - // Basic HTTP Authentication - if auth, ok := ctx.Value(ContextBasicAuth).(BasicAuth); ok { - localVarRequest.SetBasicAuth(auth.UserName, auth.Password) - } - - // AccessToken Authentication - if auth, ok := ctx.Value(ContextAccessToken).(string); ok { - localVarRequest.Header.Add("Authorization", "Bearer "+auth) - } - } - - for header, value := range c.cfg.DefaultHeader { - localVarRequest.Header.Add(header, value) - } - - return localVarRequest, nil +type SecClientConfig struct { + ServerUrl string } -func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) { - if strings.Contains(contentType, "application/xml") { - if err = xml.Unmarshal(b, v); err != nil { - return err - } - return nil - } else if strings.Contains(contentType, "application/json") { - if err = json.Unmarshal(b, v); err != nil { - return err - } - return nil - } - return errors.New("undefined response type") +type SecClient struct { + Config *SecClientConfig + AuthApi *AuthService + CipherApi *CipherService + KmsApi *KmsService } -// Add a file to the multipart request -func addFile(w *multipart.Writer, fieldName, path string) error { - file, err := os.Open(path) - if err != nil { - return err - } - defer file.Close() +func NewSecClient(config *SecClientConfig) *SecClient { + cfg := verifyAndStandardizeConfig(config) + setBaseUrl(cfg.ServerUrl) - part, err := w.CreateFormFile(fieldName, filepath.Base(path)) - if err != nil { - return err + return &SecClient{ + Config: cfg, + AuthApi: NewAuthService(), + CipherApi: NewCipherService(), + KmsApi: NewKmsService(), } - _, err = io.Copy(part, file) - - return err -} - -// Prevent trying to import "fmt" -func reportError(format string, a ...interface{}) error { - return fmt.Errorf(format, a...) -} - -// Set request body from an interface{} -func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) { - if bodyBuf == nil { - bodyBuf = &bytes.Buffer{} - } - - if reader, ok := body.(io.Reader); ok { - _, err = bodyBuf.ReadFrom(reader) - } else if b, ok := body.([]byte); ok { - _, err = bodyBuf.Write(b) - } else if s, ok := body.(string); ok { - _, err = bodyBuf.WriteString(s) - } else if s, ok := body.(*string); ok { - _, err = bodyBuf.WriteString(*s) - } else if jsonCheck.MatchString(contentType) { - err = json.NewEncoder(bodyBuf).Encode(body) - } else if xmlCheck.MatchString(contentType) { - xml.NewEncoder(bodyBuf).Encode(body) - } - - if err != nil { - return nil, err - } - - if bodyBuf.Len() == 0 { - err = fmt.Errorf("invalid body type %s", contentType) - return nil, err - } - return bodyBuf, nil -} - -// detectContentType method is used to figure out `Request.Body` content type for request header -func detectContentType(body interface{}) string { - contentType := "text/plain; charset=utf-8" - kind := reflect.TypeOf(body).Kind() - - switch kind { - case reflect.Struct, reflect.Map, reflect.Ptr: - contentType = "application/json; charset=utf-8" - case reflect.String: - contentType = "text/plain; charset=utf-8" - default: - if b, ok := body.([]byte); ok { - contentType = http.DetectContentType(b) - } else if kind == reflect.Slice { - contentType = "application/json; charset=utf-8" - } - } - - return contentType -} - -// Ripped from https://github.com/gregjones/httpcache/blob/master/httpcache.go -type cacheControl map[string]string - -func parseCacheControl(headers http.Header) cacheControl { - cc := cacheControl{} - ccHeader := headers.Get("Cache-Control") - for _, part := range strings.Split(ccHeader, ",") { - part = strings.Trim(part, " ") - if part == "" { - continue - } - if strings.ContainsRune(part, '=') { - keyval := strings.Split(part, "=") - cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",") - } else { - cc[part] = "" - } - } - return cc -} - -// CacheExpires helper function to determine remaining time before repeating a request. -func CacheExpires(r *http.Response) time.Time { - // Figure out when the cache expires. - var expires time.Time - now, err := time.Parse(time.RFC1123, r.Header.Get("date")) - if err != nil { - return time.Now() - } - respCacheControl := parseCacheControl(r.Header) - - if maxAge, ok := respCacheControl["max-age"]; ok { - lifetime, err := time.ParseDuration(maxAge + "s") - if err != nil { - expires = now - } - expires = now.Add(lifetime) - } else { - expiresHeader := r.Header.Get("Expires") - if expiresHeader != "" { - expires, err = time.Parse(time.RFC1123, expiresHeader) - if err != nil { - expires = now - } - } - } - return expires -} - -func strlen(s string) int { - return utf8.RuneCountInString(s) -} - -// GenericSwaggerError Provides access to the body, error and model on returned errors. -type GenericSwaggerError struct { - body []byte - error string - model interface{} -} - -// Error returns non-empty string if there was an error. -func (e GenericSwaggerError) Error() string { - return e.error -} - -// Body returns the raw bytes of the response -func (e GenericSwaggerError) Body() []byte { - return e.body -} - -// Model returns the unpacked model of the error -func (e GenericSwaggerError) Model() interface{} { - return e.model } diff --git a/secloud/common.go b/secloud/common.go new file mode 100644 index 0000000..1deaaa5 --- /dev/null +++ b/secloud/common.go @@ -0,0 +1,98 @@ +package secloud + +type TokenResp struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data TokenRespData `json:"data"` +} + +type TokenRespData struct { + AccessToken string `json:"access_token"` + ExpiresIn int `json:"expires_in"` +} + +type GenerateKeyPairResp struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data *GenerateKeyPairRespData `json:"data"` +} + +type GenerateKeyPairRespData struct { + Pkey string `json:"pkey"` + Skey string `json:"skey"` +} + +type GenerateWorkingKeyResp struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data *GenerateWorkingKeyRespData `json:"data"` +} + +type GenerateWorkingKeyRespData struct { + Code string `json:"code"` + EncKey string `json:"enc_key"` +} + +type GenerateKeyPairWithKEKResp struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data *GenerateKeyPairWithKEKRespData `json:"data"` +} + +type GenerateKeyPairWithKEKRespData struct { + IpxIndex int `json:"ipx_index"` + EncPkey string `json:"enc_pkey"` + EncSkey string `json:"enc_skey"` + SignPkey string `json:"sign_pkey"` + SignSkey string `json:"sign_skey"` +} + +type ImportKeyPairWithKEKArgs struct { + DeviceUrl string `json:"deviceUrl"` + IpxIndex int `json:"ipxIndex"` + KekIndex int `json:"kekIndex"` + EncPkey string `json:"encPkey"` + EncSkey string `json:"encSkey"` + SignPkey string `json:"signPkey"` + SignSkey string `json:"signSkey"` +} + +type ImportKeyPairWithKEKResp struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data *ImportKeyPairWithKEKRespData `json:"data"` +} + +type ImportKeyPairWithKEKRespData struct { + ID int `json:"id"` +} + +type EncryptResp struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data *EncryptRespData `json:"data"` +} + +type EncryptRespData struct { + EncData string `json:"enc_data"` +} + +type DecryptResp struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data *DecryptRespData `json:"data"` +} + +type DecryptRespData struct { + Data string `json:"data"` +} + +type RandomResp struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data *RandomRespData `json:"data"` +} + +type RandomRespData struct { + Data string `json:"data"` +} diff --git a/secloud/configuration.go b/secloud/configuration.go deleted file mode 100644 index 7310854..0000000 --- a/secloud/configuration.go +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Secloud Open API - * - * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) - * - * API version: 5.3.2 - * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) - */ - -package secloud - -import ( - "net/http" -) - -// contextKeys are used to identify the type of value in the context. -// Since these are string, it is possible to get a short description of the -// context key for logging and debugging using key.String(). - -type contextKey string - -func (c contextKey) String() string { - return "auth " + string(c) -} - -var ( - // ContextOAuth2 takes a oauth2.TokenSource as authentication for the request. - ContextOAuth2 = contextKey("token") - - // ContextBasicAuth takes BasicAuth as authentication for the request. - ContextBasicAuth = contextKey("basic") - - // ContextAccessToken takes a string oauth2 access token as authentication for the request. - ContextAccessToken = contextKey("accesstoken") - - // ContextAPIKey takes an APIKey as authentication for the request - ContextAPIKey = contextKey("apikey") -) - -// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth -type BasicAuth struct { - UserName string `json:"userName,omitempty"` - Password string `json:"password,omitempty"` -} - -// APIKey provides API key based authentication to a request passed via context using ContextAPIKey -type APIKey struct { - Key string - Prefix string -} - -type Configuration struct { - BasePath string `json:"basePath,omitempty"` - Host string `json:"host,omitempty"` - Scheme string `json:"scheme,omitempty"` - DefaultHeader map[string]string `json:"defaultHeader,omitempty"` - UserAgent string `json:"userAgent,omitempty"` - HTTPClient *http.Client -} - -func NewConfiguration(basePath string) *Configuration { - cfg := &Configuration{ - BasePath: basePath, - DefaultHeader: make(map[string]string), - UserAgent: "Swagger-Codegen/1.0.0/go", - } - return cfg -} - -func (c *Configuration) AddDefaultHeader(key string, value string) { - c.DefaultHeader[key] = value -} diff --git a/secloud/error.go b/secloud/error.go new file mode 100644 index 0000000..a3c9db8 --- /dev/null +++ b/secloud/error.go @@ -0,0 +1,14 @@ +package secloud + +import ( + "errors" + "github.com/astaxie/beego/validation" +) + +func handleValidationErrors(e []*validation.Error) error { + errStr := "" + for i := 0; i < len(e); i++ { + errStr = errStr + e[i].String() + "\n " + } + return errors.New(errStr) +} diff --git a/secloud/kms.go b/secloud/kms.go new file mode 100644 index 0000000..8912a1d --- /dev/null +++ b/secloud/kms.go @@ -0,0 +1,104 @@ +package secloud + +import ( + "github.com/astaxie/beego/validation" + "strconv" +) + +type KmsService struct { + Base *BaseService +} + +func NewKmsService() *KmsService { + return &KmsService{ + Base: BaseSvc, + } +} + +func (ks *KmsService) GenerateKeyPair(token string) (*GenerateKeyPairRespData, error) { + valid := validation.Validation{} + valid.MinSize(token, 1, "token").Message("请输入正确的token!") + if valid.HasErrors() { + return nil, handleValidationErrors(valid.Errors) + } + + var ret GenerateKeyPairResp + _, err := ks.Base.C.R(). + SetHeader("Authorization", "Bearer "+token). + SetResult(&ret). + Get("/kms/generateKeyPair") + if err != nil { + return nil, err + } + + return ret.Data, nil +} + +func (ks *KmsService) GenerateWorkingKey(token string) (*GenerateWorkingKeyRespData, error) { + valid := validation.Validation{} + valid.MinSize(token, 1, "token").Message("请输入正确的token!") + if valid.HasErrors() { + return nil, handleValidationErrors(valid.Errors) + } + + var ret GenerateWorkingKeyResp + _, err := ks.Base.C.R(). + SetHeader("Authorization", "Bearer "+token). + SetResult(&ret). + Get("/kms/generateWorkingKey") + if err != nil { + return nil, err + } + + return ret.Data, nil +} + +func (ks *KmsService) GenerateKeyPairWithKEK(token string, kekIndex int) (*GenerateKeyPairWithKEKRespData, error) { + valid := validation.Validation{} + valid.MinSize(token, 1, "token").Message("请输入正确的token!") + valid.Min(kekIndex, 1, "kekIndex").Message("请输入合法的kekIndex!") + if valid.HasErrors() { + return nil, handleValidationErrors(valid.Errors) + } + + var ret GenerateKeyPairWithKEKResp + _, err := ks.Base.C.R(). + SetHeader("Authorization", "Bearer "+token). + SetQueryParams(map[string]string{ + "kekIndex": strconv.Itoa(kekIndex), + }). + SetResult(&ret). + Get("/kms/generateKeyPairWithKEK") + if err != nil { + return nil, err + } + + return ret.Data, nil +} + +func (ks *KmsService) ImportKeyPairWithKEK(token string, args *ImportKeyPairWithKEKArgs) (*ImportKeyPairWithKEKRespData, error) { + valid := validation.Validation{} + valid.MinSize(token, 1, "token").Message("请输入正确的token!") + valid.MinSize(args.DeviceUrl, 1, "deviceUrl").Message("请输入合法的deviceUrl!") + valid.Min(args.KekIndex, 1, "kekIndex").Message("请输入合法的kekIndex!") + valid.Min(args.IpxIndex, 1, "ipxIndex").Message("请输入合法的ipxIndex!") + valid.MinSize(args.EncPkey, 1, "encPkey").Message("请输入合法的encPkey!") + valid.MinSize(args.EncSkey, 1, "encSkey").Message("请输入合法的encSkey!") + valid.MinSize(args.SignPkey, 1, "signPkey").Message("请输入合法的signPkey!") + valid.MinSize(args.SignSkey, 1, "signSkey").Message("请输入合法的signSkey!") + if valid.HasErrors() { + return nil, handleValidationErrors(valid.Errors) + } + + var ret ImportKeyPairWithKEKResp + _, err := ks.Base.C.R(). + SetHeader("Authorization", "Bearer "+token). + SetBody(args). + SetResult(&ret). + Post("/kms/importKeyPairWithKEK") + if err != nil { + return nil, err + } + + return ret.Data, nil +} diff --git a/secloud/response.go b/secloud/response.go deleted file mode 100644 index 86b8e5d..0000000 --- a/secloud/response.go +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Secloud Open API - * - * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) - * - * API version: 5.3.2 - * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) - */ - -package secloud - -import ( - "encoding/json" - "io" - "net/http" -) - -type APIResponse struct { - Message string `json:"msg,omitempty"` - Code int `json:"code,omitempty"` - Data interface{} `json:"data"` -} - -func NewAPIResponse(r *http.Response, d interface{}) (*APIResponse, error) { - localVarBody, err := io.ReadAll(r.Body) - r.Body.Close() - if err != nil { - return nil, err - } - - if r.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: r.Status, - } - - return nil, newErr - } - response := APIResponse{} - err = json.Unmarshal(localVarBody, &response) - if err != nil { - return nil, err - } - - if response.Code != 200 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: response.Message, - } - - return nil, newErr - } - - data, err := json.Marshal(response.Data) - if err != nil { - return nil, err - } - - err = json.Unmarshal(data, d) - if err != nil { - return nil, err - } - - response.Data = d - - return &response, nil -} diff --git a/secloud/util.go b/secloud/util.go new file mode 100644 index 0000000..9a2de4d --- /dev/null +++ b/secloud/util.go @@ -0,0 +1,21 @@ +package secloud + +import ( + "strings" +) + +func verifyAndStandardizeConfig(raw *SecClientConfig) *SecClientConfig { + cfg := &SecClientConfig{} + + if !strings.Contains(raw.ServerUrl, "http://") { + cfg.ServerUrl = "http://" + raw.ServerUrl + } else { + cfg.ServerUrl = raw.ServerUrl + } + + return cfg +} + +func setBaseUrl(url string) { + BaseSvc.C.SetBaseURL(url) +} diff --git a/test/test.go b/test/test.go new file mode 100644 index 0000000..af82c75 --- /dev/null +++ b/test/test.go @@ -0,0 +1,32 @@ +package main + +import ( + "fmt" + "gitee.com/wx-rdc/secloud-sdk-go/secloud" +) + +func main() { + c := secloud.NewSecClient(&secloud.SecClientConfig{ServerUrl: "http://192.168.1.19:8080"}) + token, _ := c.AuthApi.Token("pingduoduo", "123") + encData, _ := c.CipherApi.Encrypt(token, "asd2", "123") + fmt.Println(encData) + raw, _ := c.CipherApi.Decrypt(token, encData.EncData) + fmt.Println(raw) + ran, _ := c.CipherApi.Random(token, 16) + fmt.Println(ran) + wk, _ := c.KmsApi.GenerateWorkingKey(token) + fmt.Println(wk) + kp, _ := c.KmsApi.GenerateKeyPairWithKEK(token, 1) + fmt.Println(kp) + + args := &secloud.ImportKeyPairWithKEKArgs{ + DeviceUrl: "http://sec-device-security-8100:8100", + IpxIndex: kp.IpxIndex, + KekIndex: 1, + EncPkey: kp.EncPkey, + EncSkey: kp.EncSkey, + SignPkey: kp.SignPkey, + SignSkey: kp.SignSkey, + } + fmt.Println(c.KmsApi.ImportKeyPairWithKEK(token, args)) +} -- Gitee From ef0dc4093c88f170ca3c542a48f82bd1cba5df54 Mon Sep 17 00:00:00 2001 From: chen_yuteng Date: Thu, 23 Mar 2023 16:03:17 +0800 Subject: [PATCH 02/24] Fix: api fmt --- .idea/modules.xml | 8 +++++ .idea/secloud-sdk-go.iml | 9 +++++ .idea/vcs.xml | 6 ++++ .idea/workspace.xml | 19 +++++++++++ go.mod | 1 + go.sum | 2 ++ secloud/auth.go | 25 +++++++++----- secloud/cipher.go | 60 ++++++++++++++++++++++++--------- secloud/common.go | 20 ++++------- secloud/kms.go | 73 ++++++++++++++++++++++++++++++---------- test/test.go | 51 +++++++++++++--------------- 11 files changed, 191 insertions(+), 83 deletions(-) create mode 100644 .idea/modules.xml create mode 100644 .idea/secloud-sdk-go.iml create mode 100644 .idea/vcs.xml diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..723b1af --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/secloud-sdk-go.iml b/.idea/secloud-sdk-go.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/.idea/secloud-sdk-go.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 669901d..4a490aa 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -6,6 +6,13 @@ + + + + + + +